diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-11-08 13:11:29 +0100 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-12-07 16:05:58 +0100 |
commit | 09e82ba7011d6e94bf1eeb3f1cd0b7d441263132 (patch) | |
tree | 99b64e287830f6ccb9b68ec1bbe6efe953bed94f /drivers/video/omap2 | |
parent | OMAPDSS: DPI: use dispc's check_timings (diff) | |
download | linux-09e82ba7011d6e94bf1eeb3f1cd0b7d441263132.tar.xz linux-09e82ba7011d6e94bf1eeb3f1cd0b7d441263132.zip |
OMAPDSS: move display sysfs init to compat layer
Move creation of the sysfs files for displays to the compat layer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 14 | ||||
-rw-r--r-- | drivers/video/omap2/dss/core.c | 7 | ||||
-rw-r--r-- | drivers/video/omap2/dss/display.c | 20 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 5 |
4 files changed, 14 insertions, 32 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index 29e11434b7df..d446bdfc4c82 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c @@ -1562,6 +1562,7 @@ static DEFINE_MUTEX(compat_init_lock); int omapdss_compat_init(void) { struct platform_device *pdev = dss_get_core_pdev(); + struct omap_dss_device *dssdev = NULL; int i, r; mutex_lock(&compat_init_lock); @@ -1607,6 +1608,13 @@ int omapdss_compat_init(void) if (r) goto err_mgr_ops; + for_each_dss_dev(dssdev) { + r = display_init_sysfs(pdev, dssdev); + /* XXX uninit sysfs files on error */ + if (r) + goto err_disp_sysfs; + } + dispc_runtime_get(); r = dss_dispc_initialize_irq(); @@ -1622,6 +1630,8 @@ out: err_init_irq: dispc_runtime_put(); + +err_disp_sysfs: dss_uninstall_mgr_ops(); err_mgr_ops: @@ -1639,6 +1649,7 @@ EXPORT_SYMBOL(omapdss_compat_init); void omapdss_compat_uninit(void) { struct platform_device *pdev = dss_get_core_pdev(); + struct omap_dss_device *dssdev = NULL; mutex_lock(&compat_init_lock); @@ -1647,6 +1658,9 @@ void omapdss_compat_uninit(void) dss_dispc_uninitialize_irq(); + for_each_dss_dev(dssdev) + display_uninit_sysfs(pdev, dssdev); + dss_uninstall_mgr_ops(); dss_uninit_overlay_managers(pdev); diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index 1751c1f511ad..50817fe18cf7 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c @@ -347,15 +347,10 @@ static int dss_driver_probe(struct device *dev) dev_name(dev), dssdev->driver_name, dssdrv->driver.name); - r = dss_init_device(core.pdev, dssdev); - if (r) - return r; - r = dssdrv->probe(dssdev); if (r) { DSSERR("driver probe failed: %d\n", r); - dss_uninit_device(core.pdev, dssdev); return r; } @@ -376,8 +371,6 @@ static int dss_driver_remove(struct device *dev) dssdrv->remove(dssdev); - dss_uninit_device(core.pdev, dssdev); - dssdev->driver = NULL; return 0; diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c index 05f21b6231b7..0aa8ad8f9667 100644 --- a/drivers/video/omap2/dss/display.c +++ b/drivers/video/omap2/dss/display.c @@ -76,26 +76,6 @@ void omapdss_default_get_timings(struct omap_dss_device *dssdev, } EXPORT_SYMBOL(omapdss_default_get_timings); -int dss_init_device(struct platform_device *pdev, - struct omap_dss_device *dssdev) -{ - int r; - - r = display_init_sysfs(pdev, dssdev); - if (r) { - omapdss_output_unset_device(dssdev->output); - return r; - } - - return 0; -} - -void dss_uninit_device(struct platform_device *pdev, - struct omap_dss_device *dssdev) -{ - display_uninit_sysfs(pdev, dssdev); -} - static int dss_suspend_device(struct device *dev, void *data) { struct omap_dss_device *dssdev = to_dss_device(dev); diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index 180b381fd120..8c89cdda96dd 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h @@ -201,11 +201,6 @@ int dss_suspend_all_devices(void); int dss_resume_all_devices(void); void dss_disable_all_devices(void); -int dss_init_device(struct platform_device *pdev, - struct omap_dss_device *dssdev); -void dss_uninit_device(struct platform_device *pdev, - struct omap_dss_device *dssdev); - int display_init_sysfs(struct platform_device *pdev, struct omap_dss_device *dssdev); void display_uninit_sysfs(struct platform_device *pdev, |