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