瀏覽代碼

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>
Tomi Valkeinen 12 年之前
父節點
當前提交
09e82ba701
共有 4 個文件被更改,包括 14 次插入32 次删除
  1. 14 0
      drivers/video/omap2/dss/apply.c
  2. 0 7
      drivers/video/omap2/dss/core.c
  3. 0 20
      drivers/video/omap2/dss/display.c
  4. 0 5
      drivers/video/omap2/dss/dss.h

+ 14 - 0
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);

+ 0 - 7
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;

+ 0 - 20
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);

+ 0 - 5
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,