summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorMythri P K <mythripk@ti.com>2012-02-21 12:10:58 +0530
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-03-06 14:08:10 +0200
commitdd2116a35aa9a5a7b71e1d21f30aec8927434d19 (patch)
tree8ef49664dfd6eb538264abec6df545abd8d4738e /drivers/video
parent0ba86d7edea1f9f2d9497c31200910263e8b4128 (diff)
downloadlinux-3.10-dd2116a35aa9a5a7b71e1d21f30aec8927434d19.tar.gz
linux-3.10-dd2116a35aa9a5a7b71e1d21f30aec8927434d19.tar.bz2
linux-3.10-dd2116a35aa9a5a7b71e1d21f30aec8927434d19.zip
OMAPDSS: HDMI: Add M2 divider while calculating clkout
While calculating regm and regmf value add using M2 divider in the equation. Formula for calculating: Output clock on digital core domain: CLKOUT = (M / (N+1))*CLKINP*(1/M2) Internal oscillator output clock on internal LDO domain: CLKDCOLDO = (M / (N+1))*CLKINP The current code when allows variable M2 values as input ignores using M2 divider values in calculation of regm and regmf. so fix it by using M2 in calculation although the default value for M2 is 1. Signed-off-by: Mythri P K <mythripk@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/hdmi.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
index a229d0f8365..c4b4f6950a9 100644
--- a/drivers/video/omap2/dss/hdmi.c
+++ b/drivers/video/omap2/dss/hdmi.c
@@ -278,24 +278,24 @@ static void hdmi_compute_pll(struct omap_dss_device *dssdev, int phy,
refclk = clkin / pi->regn;
- /*
- * multiplier is pixel_clk/ref_clk
- * Multiplying by 100 to avoid fractional part removal
- */
- pi->regm = (phy * 100 / (refclk)) / 100;
-
if (dssdev->clocks.hdmi.regm2 == 0)
pi->regm2 = HDMI_DEFAULT_REGM2;
else
pi->regm2 = dssdev->clocks.hdmi.regm2;
/*
+ * multiplier is pixel_clk/ref_clk
+ * Multiplying by 100 to avoid fractional part removal
+ */
+ pi->regm = phy * pi->regm2 / refclk;
+
+ /*
* fractional multiplier is remainder of the difference between
* multiplier and actual phy(required pixel clock thus should be
* multiplied by 2^18(262144) divided by the reference clock
*/
- mf = (phy - pi->regm * refclk) * 262144;
- pi->regmf = mf / (refclk);
+ mf = (phy - pi->regm / pi->regm2 * refclk) * 262144;
+ pi->regmf = pi->regm2 * mf / refclk;
/*
* Dcofreq should be set to 1 if required pixel clock