aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-08-10 04:25:36 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-09-30 09:16:18 -0400
commit5e7850917fc213882d4e409634c526a8ff310e1e (patch)
tree33c9aa6df9664c57c4065e239806dbba573c17fa /drivers/video
parentbab59b4417ea1380578358bedaeb714de6f1f6a7 (diff)
OMAP: DSS2: fix clock sources on error and uninit
DPI and DSI were not cleaning up the clock source in error or uninit cases. Set the clock source back to PRCM. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/dpi.c4
-rw-r--r--drivers/video/omap2/dss/dsi.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
index 046ce0806e14..dc698bd7e92f 100644
--- a/drivers/video/omap2/dss/dpi.c
+++ b/drivers/video/omap2/dss/dpi.c
@@ -83,8 +83,10 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft,
83 dss_select_dispc_clk_source(dssdev->clocks.dispc.dispc_fclk_src); 83 dss_select_dispc_clk_source(dssdev->clocks.dispc.dispc_fclk_src);
84 84
85 r = dispc_set_clock_div(dssdev->manager->id, &dispc_cinfo); 85 r = dispc_set_clock_div(dssdev->manager->id, &dispc_cinfo);
86 if (r) 86 if (r) {
87 dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
87 return r; 88 return r;
89 }
88 90
89 *fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk; 91 *fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
90 *lck_div = dispc_cinfo.lck_div; 92 *lck_div = dispc_cinfo.lck_div;
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index ae6bf1d46c97..c951a75e7021 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -4184,6 +4184,8 @@ err3:
4184err2: 4184err2:
4185 dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK); 4185 dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
4186 dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK); 4186 dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
4187 dss_select_lcd_clk_source(dssdev->manager->id, OMAP_DSS_CLK_SRC_FCK);
4188
4187err1: 4189err1:
4188 dsi_pll_uninit(dsidev, true); 4190 dsi_pll_uninit(dsidev, true);
4189err0: 4191err0:
@@ -4209,6 +4211,7 @@ static void dsi_display_uninit_dsi(struct omap_dss_device *dssdev,
4209 4211
4210 dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK); 4212 dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
4211 dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK); 4213 dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
4214 dss_select_lcd_clk_source(dssdev->manager->id, OMAP_DSS_CLK_SRC_FCK);
4212 dsi_cio_uninit(dssdev); 4215 dsi_cio_uninit(dssdev);
4213 dsi_pll_uninit(dsidev, disconnect_lanes); 4216 dsi_pll_uninit(dsidev, disconnect_lanes);
4214} 4217}