summaryrefslogtreecommitdiff
path: root/drivers/video/omap2/dss
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2013-05-14 10:55:19 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2013-06-17 14:00:43 +0300
commit04b1fc0291674666110fffd09b30d8304aaa4602 (patch)
tree9213fcba31fffe4f0e932492481480f6653a33ad /drivers/video/omap2/dss
parent7f7cdbd6883fd58cfc4e538d451b455ca849bd63 (diff)
OMAPDRM: fix overlay manager handling
Currently omapdrm creates crtcs, which map directly to DSS overlay managers, only on demand at init time. This would make it difficult to manage connecting the display entities in the future, as the code cannot just search for a suitable overlay manager. We cannot fix this the sane way, which would be to create crtcs for each overlay manager, because we need an overlay for each crtc. With limited number of overlays, that's not possible. So the solution for now is to detach the overlay manager from the crtc. crtcs are still created on demand at init time, but all overlay managers are always initialized by the omapdss. This way we can create and connect whole display pipelines from the overlay manager to the display, regardless of which crtcs omapdrm would create. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss')
-rw-r--r--drivers/video/omap2/dss/apply.c3
-rw-r--r--drivers/video/omap2/dss/dispc.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index 74d1d000e92d..c844071e8e28 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -1577,7 +1577,6 @@ int omapdss_compat_init(void)
apply_init_priv();
- dss_init_overlay_managers();
dss_init_overlay_managers_sysfs(pdev);
dss_init_overlays(pdev);
@@ -1642,7 +1641,6 @@ err_disp_sysfs:
err_mgr_ops:
dss_uninit_overlay_managers_sysfs(pdev);
- dss_uninit_overlay_managers();
dss_uninit_overlays(pdev);
compat_refcnt--;
@@ -1671,7 +1669,6 @@ void omapdss_compat_uninit(void)
dss_uninstall_mgr_ops();
dss_uninit_overlay_managers_sysfs(pdev);
- dss_uninit_overlay_managers();
dss_uninit_overlays(pdev);
out:
mutex_unlock(&compat_init_lock);
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index b33b0169bb3b..83d7bb9da609 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -3710,6 +3710,8 @@ static int __init omap_dispchw_probe(struct platform_device *pdev)
dispc_runtime_put();
+ dss_init_overlay_managers();
+
dss_debugfs_create_file("dispc", dispc_dump_regs);
return 0;
@@ -3723,6 +3725,8 @@ static int __exit omap_dispchw_remove(struct platform_device *pdev)
{
pm_runtime_disable(&pdev->dev);
+ dss_uninit_overlay_managers();
+
return 0;
}