summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2012-11-08 14:11:29 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-12-07 17:05:58 +0200
commit09e82ba7011d6e94bf1eeb3f1cd0b7d441263132 (patch)
tree99b64e287830f6ccb9b68ec1bbe6efe953bed94f /drivers
parent8b09551338dbe1882d3d52dcc5d34ef933adbccf (diff)
downloadlinux-09e82ba7011d6e94bf1eeb3f1cd0b7d441263132.tar.bz2
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')
-rw-r--r--drivers/video/omap2/dss/apply.c14
-rw-r--r--drivers/video/omap2/dss/core.c7
-rw-r--r--drivers/video/omap2/dss/display.c20
-rw-r--r--drivers/video/omap2/dss/dss.h5
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,