aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2013-05-14 03:53:21 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2013-06-17 07:00:42 -0400
commit7f7cdbd6883fd58cfc4e538d451b455ca849bd63 (patch)
treee6f5a9e4fc767f0bc88ed01fa9c484ed4a0cedec /drivers/video
parentbe8e8e1c62678765868c0bc7b8b5209c38af105c (diff)
OMAPDSS: split overlay manager creation
Split the function that creates overlay manager structs into two: one that creates just the structs, and one that creates the sysfs files for the manager. This will help us use the overlay manager structs with omapdrm in the following patches, while still leaving the sysfs files out. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/apply.c9
-rw-r--r--drivers/video/omap2/dss/dss.h6
-rw-r--r--drivers/video/omap2/dss/manager-sysfs.c2
-rw-r--r--drivers/video/omap2/dss/manager.c29
4 files changed, 34 insertions, 12 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index b84bd99ef910..74d1d000e92d 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -1577,7 +1577,8 @@ int omapdss_compat_init(void)
1577 1577
1578 apply_init_priv(); 1578 apply_init_priv();
1579 1579
1580 dss_init_overlay_managers(pdev); 1580 dss_init_overlay_managers();
1581 dss_init_overlay_managers_sysfs(pdev);
1581 dss_init_overlays(pdev); 1582 dss_init_overlays(pdev);
1582 1583
1583 for (i = 0; i < omap_dss_get_num_overlay_managers(); i++) { 1584 for (i = 0; i < omap_dss_get_num_overlay_managers(); i++) {
@@ -1640,7 +1641,8 @@ err_disp_sysfs:
1640 dss_uninstall_mgr_ops(); 1641 dss_uninstall_mgr_ops();
1641 1642
1642err_mgr_ops: 1643err_mgr_ops:
1643 dss_uninit_overlay_managers(pdev); 1644 dss_uninit_overlay_managers_sysfs(pdev);
1645 dss_uninit_overlay_managers();
1644 dss_uninit_overlays(pdev); 1646 dss_uninit_overlays(pdev);
1645 1647
1646 compat_refcnt--; 1648 compat_refcnt--;
@@ -1668,7 +1670,8 @@ void omapdss_compat_uninit(void)
1668 1670
1669 dss_uninstall_mgr_ops(); 1671 dss_uninstall_mgr_ops();
1670 1672
1671 dss_uninit_overlay_managers(pdev); 1673 dss_uninit_overlay_managers_sysfs(pdev);
1674 dss_uninit_overlay_managers();
1672 dss_uninit_overlays(pdev); 1675 dss_uninit_overlays(pdev);
1673out: 1676out:
1674 mutex_unlock(&compat_init_lock); 1677 mutex_unlock(&compat_init_lock);
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 84758936429d..7964d3b9853b 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -194,8 +194,10 @@ void display_uninit_sysfs(struct platform_device *pdev,
194 struct omap_dss_device *dssdev); 194 struct omap_dss_device *dssdev);
195 195
196/* manager */ 196/* manager */
197int dss_init_overlay_managers(struct platform_device *pdev); 197int dss_init_overlay_managers(void);
198void dss_uninit_overlay_managers(struct platform_device *pdev); 198void dss_uninit_overlay_managers(void);
199int dss_init_overlay_managers_sysfs(struct platform_device *pdev);
200void dss_uninit_overlay_managers_sysfs(struct platform_device *pdev);
199int dss_mgr_simple_check(struct omap_overlay_manager *mgr, 201int dss_mgr_simple_check(struct omap_overlay_manager *mgr,
200 const struct omap_overlay_manager_info *info); 202 const struct omap_overlay_manager_info *info);
201int dss_mgr_check_timings(struct omap_overlay_manager *mgr, 203int dss_mgr_check_timings(struct omap_overlay_manager *mgr,
diff --git a/drivers/video/omap2/dss/manager-sysfs.c b/drivers/video/omap2/dss/manager-sysfs.c
index 51046819f33b..72784b3aad27 100644
--- a/drivers/video/omap2/dss/manager-sysfs.c
+++ b/drivers/video/omap2/dss/manager-sysfs.c
@@ -511,4 +511,6 @@ void dss_manager_kobj_uninit(struct omap_overlay_manager *mgr)
511{ 511{
512 kobject_del(&mgr->kobj); 512 kobject_del(&mgr->kobj);
513 kobject_put(&mgr->kobj); 513 kobject_put(&mgr->kobj);
514
515 memset(&mgr->kobj, 0, sizeof(mgr->kobj));
514} 516}
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
index 2551eaa14c42..1aac9b4191a9 100644
--- a/drivers/video/omap2/dss/manager.c
+++ b/drivers/video/omap2/dss/manager.c
@@ -36,9 +36,9 @@
36static int num_managers; 36static int num_managers;
37static struct omap_overlay_manager *managers; 37static struct omap_overlay_manager *managers;
38 38
39int dss_init_overlay_managers(struct platform_device *pdev) 39int dss_init_overlay_managers(void)
40{ 40{
41 int i, r; 41 int i;
42 42
43 num_managers = dss_feat_get_num_mgrs(); 43 num_managers = dss_feat_get_num_mgrs();
44 44
@@ -76,6 +76,17 @@ int dss_init_overlay_managers(struct platform_device *pdev)
76 dss_feat_get_supported_outputs(mgr->id); 76 dss_feat_get_supported_outputs(mgr->id);
77 77
78 INIT_LIST_HEAD(&mgr->overlays); 78 INIT_LIST_HEAD(&mgr->overlays);
79 }
80
81 return 0;
82}
83
84int dss_init_overlay_managers_sysfs(struct platform_device *pdev)
85{
86 int i, r;
87
88 for (i = 0; i < num_managers; ++i) {
89 struct omap_overlay_manager *mgr = &managers[i];
79 90
80 r = dss_manager_kobj_init(mgr, pdev); 91 r = dss_manager_kobj_init(mgr, pdev);
81 if (r) 92 if (r)
@@ -85,18 +96,22 @@ int dss_init_overlay_managers(struct platform_device *pdev)
85 return 0; 96 return 0;
86} 97}
87 98
88void dss_uninit_overlay_managers(struct platform_device *pdev) 99void dss_uninit_overlay_managers(void)
100{
101 kfree(managers);
102 managers = NULL;
103 num_managers = 0;
104}
105
106void dss_uninit_overlay_managers_sysfs(struct platform_device *pdev)
89{ 107{
90 int i; 108 int i;
91 109
92 for (i = 0; i < num_managers; ++i) { 110 for (i = 0; i < num_managers; ++i) {
93 struct omap_overlay_manager *mgr = &managers[i]; 111 struct omap_overlay_manager *mgr = &managers[i];
112
94 dss_manager_kobj_uninit(mgr); 113 dss_manager_kobj_uninit(mgr);
95 } 114 }
96
97 kfree(managers);
98 managers = NULL;
99 num_managers = 0;
100} 115}
101 116
102int omap_dss_get_num_overlay_managers(void) 117int omap_dss_get_num_overlay_managers(void)