OMAP: DSS2: fix clock sources on error and uninit
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 10 Aug 2011 08:25:36 +0000 (11:25 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 30 Sep 2011 13:16:18 +0000 (16:16 +0300)
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>
drivers/video/omap2/dss/dpi.c
drivers/video/omap2/dss/dsi.c

index 046ce08..dc698bd 100644 (file)
@@ -83,8 +83,10 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft,
        dss_select_dispc_clk_source(dssdev->clocks.dispc.dispc_fclk_src);
 
        r = dispc_set_clock_div(dssdev->manager->id, &dispc_cinfo);
-       if (r)
+       if (r) {
+               dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
                return r;
+       }
 
        *fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
        *lck_div = dispc_cinfo.lck_div;
index ae6bf1d..c951a75 100644 (file)
@@ -4184,6 +4184,8 @@ err3:
 err2:
        dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
        dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
+       dss_select_lcd_clk_source(dssdev->manager->id, OMAP_DSS_CLK_SRC_FCK);
+
 err1:
        dsi_pll_uninit(dsidev, true);
 err0:
@@ -4209,6 +4211,7 @@ static void dsi_display_uninit_dsi(struct omap_dss_device *dssdev,
 
        dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
        dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
+       dss_select_lcd_clk_source(dssdev->manager->id, OMAP_DSS_CLK_SRC_FCK);
        dsi_cio_uninit(dssdev);
        dsi_pll_uninit(dsidev, disconnect_lanes);
 }