A10 HDMI support
Mori Hiroki
yamori813 at yahoo.co.jp
Fri Mar 6 12:07:15 UTC 2020
Hi
A10 and A20 CLK_PLL_VIDEO0 is PLL3.
PLL3 is 3000000(3M) step.
But minimam is 27M(x9).
222M is just x74.
aw_clk_frac.c is miss calculate clock.
----- Original Message -----
> From: Mori Hiroki <yamori813 at yahoo.co.jp>
> To: "freebsd-arm at freebsd.org" <freebsd-arm at freebsd.org>
> Cc:
> Date: 2020/3/6, Fri 19:45
> Subject: Re: A10 HDMI support
>
> Hi
>
> I test this code.
>
> error = clk_set_freq(clk_vid, 222000000, CLK_SET_ROUND_DOWN);
> error = clk_get_freq(clk_vid, &lcd_fout);
> device_printf(sc->dev, "MORI MORI freq CLK_PLL_VIDEO0 %llu\n",
> lcd_fout);
>
> Result is this.
>
> fb0: MORI MORI freq CLK_PLL_VIDEO0 240000000
>
> clkng is not work correctly.
>
> ----- Original Message -----
>> From: Mori Hiroki <yamori813 at yahoo.co.jp>
>> To: "freebsd-arm at freebsd.org" <freebsd-arm at freebsd.org>
>> Cc:
>> Date: 2020/3/6, Fri 14:55
>> Subject: Re: A10 HDMI support
>>
>> Hi
>>
>> I seem clkng don't have this method.
>>
>>
>> #define TCON_PLL_WORST 1000000
>> #define TCON_PLL_N_MIN 1
>> #define TCON_PLL_N_MAX 15
>> #define TCON_PLL_M_MIN 9
>> #define TCON_PLL_M_MAX 127
>> #define TCON_PLLREF_SINGLE 3000 /* kHz */
>> #define TCON_PLLREF_DOUBLE 6000 /* kHz */
>> #define TCON_RATE_KHZ(rate_hz) ((rate_hz) / 1000)
>> #define TCON_RATE_HZ(rate_khz) ((rate_khz) * 1000)
>> #define HDMI_DEFAULT_RATE 297000000
>> #define DEBE_DEFAULT_RATE 300000000
>>
>> static void
>> calc_tcon_pll(int f_ref, int f_out, int *pm, int *pn)
>> {
>> int best, m, n, f_cur, diff;
>>
>> best = TCON_PLL_WORST;
>> for (n = TCON_PLL_N_MIN; n <= TCON_PLL_N_MAX; n++) {
>> for (m = TCON_PLL_M_MIN; m <= TCON_PLL_M_MAX; m++) {
>> f_cur = (m * f_ref) / n;
>> diff = f_out - f_cur;
>> if (diff > 0 && diff < best) {
>> best = diff;
>> *pm = m;
>> *pn = n;
>> }
>> }
>> }
>> }
>>
>> int
>> a10_clk_tcon_activate(unsigned int freq)
>> {
>> struct a10_ccm_softc *sc;
>> int m, n, m2, n2, f_single, f_double, dbl, src_sel;
>>
>> sc = a10_ccm_sc;
>> if (sc == NULL)
>> return (ENXIO);
>>
>> m = n = m2 = n2 = 0;
>> dbl = 0;
>>
>> calc_tcon_pll(TCON_PLLREF_SINGLE, TCON_RATE_KHZ(freq), &m,
> &n);
>> calc_tcon_pll(TCON_PLLREF_DOUBLE, TCON_RATE_KHZ(freq), &m2,
>> &n2);
>>
>> f_single = n ? (m * TCON_PLLREF_SINGLE) / n : 0;
>> f_double = n2 ? (m2 * TCON_PLLREF_DOUBLE) / n2 : 0;
>>
>> if (f_double > f_single) {
>> dbl = 1;
>> m = m2;
>> n = n2;
>> }
>> src_sel = dbl ? CCM_LCD_CH1_SRC_SEL_PLL3_2X :
> CCM_LCD_CH1_SRC_SEL_PLL3;
>>
>> if (n == 0 || m == 0)
>> return (EINVAL);
>>
>> /* Set PLL3 to the closest possible rate */
>> a10_clk_pll3_set_rate(TCON_RATE_HZ(m * TCON_PLLREF_SINGLE));
>>
>> /* Enable LCD0 CH1 clock */
>> ccm_write_4(sc, CCM_LCD0_CH1_CLK,
>> CCM_LCD_CH1_SCLK2_GATING | CCM_LCD_CH1_SCLK1_GATING |
>> (src_sel << CCM_LCD_CH1_SRC_SEL_SHIFT) | (n - 1));
>>
>> return (0);
>> }
>> ----- Original Message -----
>>> From: Mori Hiroki <yamori813 at yahoo.co.jp>
>>> To: "freebsd-arm at freebsd.org"
> <freebsd-arm at freebsd.org>
>>> Cc:
>>> Date: 2020/3/1, Sun 19:05
>>> Subject: A10 HDMI support
>>>
>>> Hi
>>>
>>> I have A10 PCduino.
>>>
>>> I try to use a10_hdmi.c and a10_fb.c
>>>
>>> This code may be work at first implementation
>>> at 2016.
>>>
>>> But change to dts away modify and chkng change
>>> complete broken this code.
>>>
>>> I modify dts and code on 12-Stable then almost
>>> detect. But not work.
>>>
>>> http://dmesgd.nycbug.org/index.cgi?do=view&id=5402
>>>
>>>
>>> Dose some body repair this code?
>>>
>>> Thanks
>>>
>>> Hiroki Mori
>>>
>>> _______________________________________________
>>> freebsd-arm at freebsd.org mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
>>> To unsubscribe, send any mail to
>> "freebsd-arm-unsubscribe at freebsd.org"
>>>
>>
>> _______________________________________________
>> freebsd-arm at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
>> To unsubscribe, send any mail to
> "freebsd-arm-unsubscribe at freebsd.org"
>>
>
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
>
More information about the freebsd-arm
mailing list