f61b9fc27e
For the lcdif clock get_rate looks as follows: read div from HW_CLKCTRL_DIS_LCDIF.DIV return clk_get_rate(clk->parent) / div with clk->parent being ref_pix_clk on my system. ref_pix_clk's rate depends on HW_CLKCTRL_FRAC1.PIXFRAC. The set_rate function for lcdif does: parent_rate = clk_get_rate(clk->parent); based on that calculate frac and div such that parent_rate * 18 / frac / div is near the requested rate. HW_CLKCTRL_FRAC1.PIXFRAC is updated with frac HW_CLKCTRL_DIS_LCDIF.DIV is updated with div For this calculation to be correct parent_rate needs to be initialized not with the clock rate of lcdif's parent (i.e. ref_pix) but that of its grandparent (i.e. ref_pix' parent == pll0_clk). The obvious downside of this patch is that now set_rate(lcdif) changes its parent's rate, too. Still this is better than a wrong rate. Acked-by: Shawn Guo <shawn.guo@freescale.com> LAKML-Reference: 20110225084950.GA13684@S2101-09.ap.freescale.net Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> |
||
---|---|---|
.. | ||
devices | ||
include/mach | ||
clock-mx23.c | ||
clock-mx28.c | ||
clock.c | ||
devices-mx23.h | ||
devices-mx28.h | ||
devices.c | ||
gpio.c | ||
gpio.h | ||
icoll.c | ||
iomux.c | ||
Kconfig | ||
mach-mx23evk.c | ||
mach-mx28evk.c | ||
mach-tx28.c | ||
Makefile | ||
Makefile.boot | ||
mm-mx23.c | ||
mm-mx28.c | ||
module-tx28.c | ||
module-tx28.h | ||
ocotp.c | ||
pm.c | ||
regs-clkctrl-mx23.h | ||
regs-clkctrl-mx28.h | ||
system.c | ||
timer.c |