A10 HDMI support
Mori Hiroki
yamori813 at yahoo.co.jp
Tue Mar 10 04:48:35 UTC 2020
Hi
Now HDMI work on A10.
I use u-boot initialize setting and only change
frame buffer address.
----- 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 21:07
> Subject: Re: A10 HDMI support
>
> 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"
>>
>
> _______________________________________________
> 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