aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/fbdev/omap2/dss/hdmi4.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2014-09-15 08:40:47 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2014-11-12 06:40:25 -0500
commit33f13120e59cb4eddedc09039d8602d94aa864b4 (patch)
tree08de9e1a6ee2fb9eff526e442d14ec73bf83f956 /drivers/video/fbdev/omap2/dss/hdmi4.c
parent31dd0f4be428c7059c697332e27417cb6b08087d (diff)
OMAPDSS: HDMI: rewrite HDMI PLL calculation code
The code calculating HDMI PLL parameters has always been very confusing. Now that we are implementing a common PLL library for the DSS, it's important that the PLL code is understandable. This patch rewrites the calculation code, and removes a few hacks that were used there. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/fbdev/omap2/dss/hdmi4.c')
-rw-r--r--drivers/video/fbdev/omap2/dss/hdmi4.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/video/fbdev/omap2/dss/hdmi4.c b/drivers/video/fbdev/omap2/dss/hdmi4.c
index 9a8713ca090c..1f2fbccaff1f 100644
--- a/drivers/video/fbdev/omap2/dss/hdmi4.c
+++ b/drivers/video/fbdev/omap2/dss/hdmi4.c
@@ -180,7 +180,6 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
180 int r; 180 int r;
181 struct omap_video_timings *p; 181 struct omap_video_timings *p;
182 struct omap_overlay_manager *mgr = hdmi.output.manager; 182 struct omap_overlay_manager *mgr = hdmi.output.manager;
183 unsigned long phy;
184 struct hdmi_wp_data *wp = &hdmi.wp; 183 struct hdmi_wp_data *wp = &hdmi.wp;
185 184
186 r = hdmi_power_on_core(dssdev); 185 r = hdmi_power_on_core(dssdev);
@@ -195,10 +194,7 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
195 194
196 DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res); 195 DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res);
197 196
198 /* the functions below use kHz pixel clock. TODO: change to Hz */ 197 hdmi_pll_compute(&hdmi.pll, clk_get_rate(hdmi.sys_clk), p->pixelclock);
199 phy = p->pixelclock / 1000;
200
201 hdmi_pll_compute(&hdmi.pll, clk_get_rate(hdmi.sys_clk), phy);
202 198
203 /* config the PLL and PHY hdmi_set_pll_pwrfirst */ 199 /* config the PLL and PHY hdmi_set_pll_pwrfirst */
204 r = hdmi_pll_enable(&hdmi.pll, &hdmi.wp); 200 r = hdmi_pll_enable(&hdmi.pll, &hdmi.wp);
@@ -207,7 +203,8 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev)
207 goto err_pll_enable; 203 goto err_pll_enable;
208 } 204 }
209 205
210 r = hdmi_phy_configure(&hdmi.phy, &hdmi.cfg); 206 r = hdmi_phy_configure(&hdmi.phy, hdmi.pll.info.clkdco,
207 hdmi.pll.info.clkout);
211 if (r) { 208 if (r) {
212 DSSDBG("Failed to configure PHY\n"); 209 DSSDBG("Failed to configure PHY\n");
213 goto err_phy_cfg; 210 goto err_phy_cfg;