A10 HDMI support
Mori Hiroki
yamori813 at yahoo.co.jp
Fri Mar 6 05:56:05 UTC 2020
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"
>
More information about the freebsd-arm
mailing list