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