diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-05-17 09:10:59 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-07-25 03:08:14 -0400 |
commit | cb5930bdb57393a6ab9dc0c96fe5f03dcfb5bf43 (patch) | |
tree | 1d371a5cf7d8f28c8a07af392b098e006acc6315 /drivers/video | |
parent | b98482ed73810c4a970dee3402b35241d3ce4b7e (diff) |
OMAP: DSS2: Fix init and unit sequence
The initialization order of the DSS modules is important when pm_runtime
support is implemented. Currently RFBI is initialized before DISPC,
which will cause problems with pm_runtime as RFBI uses DISPC.
The same goes for uninitialization order, and dss_uninit needs to be
called last, and dispc_uninit just before that.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/core.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index 3da426719dd6..3380a9196fdb 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c | |||
@@ -185,6 +185,11 @@ static int omap_dss_probe(struct platform_device *pdev) | |||
185 | 185 | ||
186 | /* keep clocks enabled to prevent context saves/restores during init */ | 186 | /* keep clocks enabled to prevent context saves/restores during init */ |
187 | dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK); | 187 | dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK); |
188 | r = dispc_init_platform_driver(); | ||
189 | if (r) { | ||
190 | DSSERR("Failed to initialize dispc platform driver\n"); | ||
191 | goto err_dispc; | ||
192 | } | ||
188 | 193 | ||
189 | r = rfbi_init_platform_driver(); | 194 | r = rfbi_init_platform_driver(); |
190 | if (r) { | 195 | if (r) { |
@@ -192,12 +197,6 @@ static int omap_dss_probe(struct platform_device *pdev) | |||
192 | goto err_rfbi; | 197 | goto err_rfbi; |
193 | } | 198 | } |
194 | 199 | ||
195 | r = dispc_init_platform_driver(); | ||
196 | if (r) { | ||
197 | DSSERR("Failed to initialize dispc platform driver\n"); | ||
198 | goto err_dispc; | ||
199 | } | ||
200 | |||
201 | r = venc_init_platform_driver(); | 200 | r = venc_init_platform_driver(); |
202 | if (r) { | 201 | if (r) { |
203 | DSSERR("Failed to initialize venc platform driver\n"); | 202 | DSSERR("Failed to initialize venc platform driver\n"); |
@@ -268,11 +267,11 @@ static int omap_dss_remove(struct platform_device *pdev) | |||
268 | 267 | ||
269 | dss_uninitialize_debugfs(); | 268 | dss_uninitialize_debugfs(); |
270 | 269 | ||
270 | hdmi_uninit_platform_driver(); | ||
271 | dsi_uninit_platform_driver(); | ||
271 | venc_uninit_platform_driver(); | 272 | venc_uninit_platform_driver(); |
272 | dispc_uninit_platform_driver(); | ||
273 | rfbi_uninit_platform_driver(); | 273 | rfbi_uninit_platform_driver(); |
274 | dsi_uninit_platform_driver(); | 274 | dispc_uninit_platform_driver(); |
275 | hdmi_uninit_platform_driver(); | ||
276 | dss_uninit_platform_driver(); | 275 | dss_uninit_platform_driver(); |
277 | 276 | ||
278 | dss_uninit_overlays(pdev); | 277 | dss_uninit_overlays(pdev); |