From 9a4e0ecde501025170aaf71ba06f41631fd57832 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Wed, 10 Oct 2012 10:26:45 +0300 Subject: [PATCH] --- yaml --- r: 344678 b: refs/heads/master c: 8dd2491a4216778a81668581041ba1c06453ed6c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/video/omap2/dss/apply.c | 33 ++++++++++++++++++++++++++- trunk/drivers/video/omap2/dss/core.c | 4 +++- trunk/drivers/video/omap2/dss/dss.h | 1 - trunk/include/video/omapdss.h | 3 +++ 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a70c8fc54dac..e135a83933a2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6b6f1edfdb6c41e630e4a70d64a8e8817b3170c2 +refs/heads/master: 8dd2491a4216778a81668581041ba1c06453ed6c diff --git a/trunk/drivers/video/omap2/dss/apply.c b/trunk/drivers/video/omap2/dss/apply.c index 4a5cc5c64d4b..ba1343274bb7 100644 --- a/trunk/drivers/video/omap2/dss/apply.c +++ b/trunk/drivers/video/omap2/dss/apply.c @@ -18,6 +18,7 @@ #define DSS_SUBSYS_NAME "APPLY" #include +#include #include #include #include @@ -131,7 +132,7 @@ static struct mgr_priv_data *get_mgr_priv(struct omap_overlay_manager *mgr) return &dss_data.mgr_priv_data_array[mgr->id]; } -void dss_apply_init(void) +static void apply_init_priv(void) { const int num_ovls = dss_feat_get_num_ovls(); struct mgr_priv_data *mp; @@ -1463,3 +1464,33 @@ int dss_ovl_disable(struct omap_overlay *ovl) return r; } +static int compat_refcnt; +static DEFINE_MUTEX(compat_init_lock); + +int omapdss_compat_init(void) +{ + mutex_lock(&compat_init_lock); + + if (compat_refcnt++ > 0) + goto out; + + apply_init_priv(); + +out: + mutex_unlock(&compat_init_lock); + + return 0; +} +EXPORT_SYMBOL(omapdss_compat_init); + +void omapdss_compat_uninit(void) +{ + mutex_lock(&compat_init_lock); + + if (--compat_refcnt > 0) + goto out; + +out: + mutex_unlock(&compat_init_lock); +} +EXPORT_SYMBOL(omapdss_compat_uninit); diff --git a/trunk/drivers/video/omap2/dss/core.c b/trunk/drivers/video/omap2/dss/core.c index 5c5e59190586..86c743f5ed2e 100644 --- a/trunk/drivers/video/omap2/dss/core.c +++ b/trunk/drivers/video/omap2/dss/core.c @@ -232,7 +232,7 @@ static int __init omap_dss_probe(struct platform_device *pdev) dss_features_init(omapdss_get_version()); - dss_apply_init(); + omapdss_compat_init(); dss_init_overlay_managers(pdev); dss_init_overlays(pdev); @@ -264,6 +264,8 @@ static int omap_dss_remove(struct platform_device *pdev) dss_uninit_overlays(pdev); dss_uninit_overlay_managers(pdev); + omapdss_compat_uninit(); + return 0; } diff --git a/trunk/drivers/video/omap2/dss/dss.h b/trunk/drivers/video/omap2/dss/dss.h index bdf843135661..9da3d61b8a56 100644 --- a/trunk/drivers/video/omap2/dss/dss.h +++ b/trunk/drivers/video/omap2/dss/dss.h @@ -178,7 +178,6 @@ void dss_copy_device_pdata(struct omap_dss_device *dst, const struct omap_dss_device *src); /* apply */ -void dss_apply_init(void); int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr); int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl); void dss_mgr_start_update(struct omap_overlay_manager *mgr); diff --git a/trunk/include/video/omapdss.h b/trunk/include/video/omapdss.h index b1248c2d36e1..a9402362d817 100644 --- a/trunk/include/video/omapdss.h +++ b/trunk/include/video/omapdss.h @@ -836,4 +836,7 @@ void omapdss_rfbi_set_data_lines(struct omap_dss_device *dssdev, void omapdss_rfbi_set_interface_timings(struct omap_dss_device *dssdev, struct rfbi_timings *timings); +int omapdss_compat_init(void); +void omapdss_compat_uninit(void); + #endif