A10 HDMI support

Mori Hiroki yamori813 at yahoo.co.jp
Fri Mar 6 10:45:43 UTC 2020


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"
> 



More information about the freebsd-arm mailing list