diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-08-10 04:25:36 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-09-30 09:16:18 -0400 |
commit | 5e7850917fc213882d4e409634c526a8ff310e1e (patch) | |
tree | 33c9aa6df9664c57c4065e239806dbba573c17fa /drivers/video | |
parent | bab59b4417ea1380578358bedaeb714de6f1f6a7 (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.c | 4 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 3 |
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: | |||
4184 | err2: | 4184 | err2: |
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 | |||
4187 | err1: | 4189 | err1: |
4188 | dsi_pll_uninit(dsidev, true); | 4190 | dsi_pll_uninit(dsidev, true); |
4189 | err0: | 4191 | err0: |
@@ -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 | } |