Date: Tue, 10 Mar 2020 13:48:25 +0900 (JST) From: Mori Hiroki <yamori813@yahoo.co.jp> To: Mori Hiroki <yamori813@yahoo.co.jp>, "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org> Subject: Re: A10 HDMI support Message-ID: <1652297435.2854754.1583815705218.JavaMail.yahoo@mail.yahoo.co.jp> In-Reply-To: <899170752.2669767.1583496425789.JavaMail.yahoo@mail.yahoo.co.jp> References: <1989879823.835082.1583057147228.JavaMail.yahoo.ref@mail.yahoo.co.jp> <1989879823.835082.1583057147228.JavaMail.yahoo@mail.yahoo.co.jp> <2128278973.2661650.1583474156629.JavaMail.yahoo@mail.yahoo.co.jp> <374090886.2770800.1583491536027.JavaMail.yahoo@mail.yahoo.co.jp> <899170752.2669767.1583496425789.JavaMail.yahoo@mail.yahoo.co.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Now HDMI work on A10. I use u-boot initialize setting and only change frame buffer address. ----- Original Message ----- > From: Mori Hiroki <yamori813@yahoo.co.jp> > To: "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org> > Cc:=20 > Date: 2020/3/6, Fri 21:07 > Subject: Re: A10 HDMI support >=20 > Hi >=20 > A10 and A20=C2=A0CLK_PLL_VIDEO0 is PLL3. >=20 > PLL3 is 3000000(3M) step. >=20 > But minimam is 27M(x9). >=20 > 222M is just x74. >=20 > aw_clk_frac.c is miss calculate clock. >=20 > ----- Original Message ----- >> From: Mori Hiroki <yamori813@yahoo.co.jp> >> To: "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org> >> Cc:=20 >> Date: 2020/3/6, Fri 19:45 >> Subject: Re: A10 HDMI support >>=20 >> Hi >>=20 >> I test this code. >>=20 >> error =3D clk_set_freq(clk_vid,=C2=A0222000000, CLK_SET_ROUND_DOWN); >> error =3D clk_get_freq(clk_vid, &lcd_fout); >> device_printf(sc->dev, "MORI MORI freq=C2=A0CLK_PLL_VIDEO0=20 > %llu\n",=20 >> lcd_fout); >>=20 >> Result is this. >>=20 >> fb0: MORI MORI freq=C2=A0CLK_PLL_VIDEO0=C2=A0240000000 >>=20 >> clkng is not work=C2=A0correctly. >>=20 >> ----- Original Message ----- >>> =C2=A0 From: Mori Hiroki <yamori813@yahoo.co.jp> >>> =C2=A0 To: "freebsd-arm@freebsd.org"=20 > <freebsd-arm@freebsd.org> >>> =C2=A0 Cc:=20 >>> =C2=A0 Date: 2020/3/6, Fri 14:55 >>> =C2=A0 Subject: Re: A10 HDMI support >>>=20 >>> =C2=A0 Hi >>>=20 >>> =C2=A0 I seem clkng don't have this method. >>>=20 >>>=20 >>> =C2=A0 #define TCON_PLL_WORST =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01000000 >>> =C2=A0 #define TCON_PLL_N_MIN =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01 >>> =C2=A0 #define TCON_PLL_N_MAX =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A015 >>> =C2=A0 #define TCON_PLL_M_MIN =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A09 >>> =C2=A0 #define TCON_PLL_M_MAX =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0127 >>> =C2=A0 #define TCON_PLLREF_SINGLE =C2=A0 =C2=A0 =C2=A03000 =C2=A0 =C2= =A0/* kHz */ >>> =C2=A0 #define TCON_PLLREF_DOUBLE =C2=A0 =C2=A0 =C2=A06000 =C2=A0 =C2= =A0/* kHz */ >>> =C2=A0 #define TCON_RATE_KHZ(rate_hz) =C2=A0((rate_hz) / 1000) >>> =C2=A0 #define TCON_RATE_HZ(rate_khz) =C2=A0((rate_khz) * 1000) >>> =C2=A0 #define HDMI_DEFAULT_RATE =C2=A0 =C2=A0 =C2=A0 297000000 >>> =C2=A0 #define DEBE_DEFAULT_RATE =C2=A0 =C2=A0 =C2=A0 300000000 >>>=20 >>> =C2=A0 static void >>> =C2=A0 calc_tcon_pll(int f_ref, int f_out, int *pm, int *pn) >>> =C2=A0 { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int best, m, n, f_cur, diff; >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 best =3D TCON_PLL_WORST; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (n =3D TCON_PLL_N_MIN; n <=3D TC= ON_PLL_N_MAX; n++) { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (m = =3D TCON_PLL_M_MIN; m <=3D TCON_PLL_M_MAX; m++)=20 > { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 f_cur =3D (m * f_ref) / n; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 diff =3D f_out - f_cur; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 if (diff > 0 && diff < best) { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 best =3D diff; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *pm =3D m; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *pn =3D n; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 } >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >>> =C2=A0 } >>>=20 >>> =C2=A0 int >>> =C2=A0 a10_clk_tcon_activate(unsigned int freq) >>> =C2=A0 { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct a10_ccm_softc *sc; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int m, n, m2, n2, f_single, f_double= , dbl, src_sel; >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sc =3D a10_ccm_sc; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (sc =3D=3D NULL) >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (= ENXIO); >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 m =3D n =3D m2 =3D n2 =3D 0; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dbl =3D 0; >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 calc_tcon_pll(TCON_PLLREF_SINGLE, TC= ON_RATE_KHZ(freq), &m,=20 >=20 >> &n); >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 calc_tcon_pll(TCON_PLLREF_DOUBLE, TC= ON_RATE_KHZ(freq),=20 > &m2,=20 >>> =C2=A0 &n2); >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 f_single =3D n ? (m * TCON_PLLREF_SI= NGLE) / n : 0; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 f_double =3D n2 ? (m2 * TCON_PLLREF_= DOUBLE) / n2 : 0; >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (f_double > f_single) { >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dbl =3D = 1; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 m =3D m2= ; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 n =3D n2= ; >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 src_sel =3D dbl ? CCM_LCD_CH1_SRC_SE= L_PLL3_2X :=20 >> CCM_LCD_CH1_SRC_SEL_PLL3; >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (n =3D=3D 0 || m =3D=3D 0) >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (= EINVAL); >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Set PLL3 to the closest possible = rate */ >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 a10_clk_pll3_set_rate(TCON_RATE_HZ(m= * TCON_PLLREF_SINGLE)); >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Enable LCD0 CH1 clock */ >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ccm_write_4(sc, CCM_LCD0_CH1_CLK, >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 CCM_LCD_CH1_SCLK2_GATI= NG | CCM_LCD_CH1_SCLK1_GATING | >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (src_sel << CCM_LCD_CH= 1_SRC_SEL_SHIFT) | (n - 1)); >>>=20 >>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (0); >>> =C2=A0 } >>> =C2=A0 ----- Original Message ----- >>>> =C2=A0 From: Mori Hiroki <yamori813@yahoo.co.jp> >>>> =C2=A0 To: "freebsd-arm@freebsd.org"=20 >> <freebsd-arm@freebsd.org> >>>> =C2=A0 Cc:=20 >>>> =C2=A0 Date: 2020/3/1, Sun 19:05 >>>> =C2=A0 Subject: A10 HDMI support >>>>=20 >>>> =C2=A0 Hi >>>>=20 >>>> =C2=A0 I have A10 PCduino.=C2=A0 >>>>=20 >>>> =C2=A0 I try to use a10_hdmi.c and a10_fb.c >>>>=20 >>>> =C2=A0 This code may be work at first implementation >>>> =C2=A0 at 2016.=C2=A0 >>>>=20 >>>> =C2=A0 But change to dts away modify and chkng change >>>> =C2=A0 complete broken this code. >>>>=20 >>>> =C2=A0 I modify dts and code on 12-Stable then almost >>>> =C2=A0 detect. But not work. >>>>=20 >>>> =C2=A0 http://dmesgd.nycbug.org/index.cgi?do=3Dview&id=3D5402=20 >>>>=20 >>>>=20 >>>> =C2=A0 Dose some body repair this code? >>>>=20 >>>> =C2=A0 Thanks >>>>=20 >>>> =C2=A0 Hiroki Mori >>>>=20 >>>> =C2=A0 _______________________________________________ >>>> =C2=A0 freebsd-arm@freebsd.org mailing list >>>> =C2=A0 https://lists.freebsd.org/mailman/listinfo/freebsd-arm=20 >>>> =C2=A0 To unsubscribe, send any mail to=20 >>> =C2=A0 "freebsd-arm-unsubscribe@freebsd.org" >>>>=20 >>>=20 >>> =C2=A0 _______________________________________________ >>> =C2=A0 freebsd-arm@freebsd.org mailing list >>> =C2=A0 https://lists.freebsd.org/mailman/listinfo/freebsd-arm=20 >>> =C2=A0 To unsubscribe, send any mail to=20 >> "freebsd-arm-unsubscribe@freebsd.org" >>>=20 >>=20 >> _______________________________________________ >> freebsd-arm@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-arm=20 >> To unsubscribe, send any mail to=20 > "freebsd-arm-unsubscribe@freebsd.org" >>=20 >=20 > _______________________________________________ > freebsd-arm@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-arm=20 > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org" >=20
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1652297435.2854754.1583815705218.JavaMail.yahoo>