summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/dc.c
diff options
context:
space:
mode:
authorGreg Hackmann <ghackmann@google.com>2013-09-05 10:51:03 -0700
committerJon Mayo <jmayo@nvidia.com>2014-03-19 18:04:54 -0700
commit6af97a0dd4837f4907d154a7efef0e5cd6e21186 (patch)
tree9b42d0f8c91ab87bce3605d859220128aed2e8ec /drivers/video/tegra/dc/dc.c
parent23ad615ddbb035b811c60f4590966d48c96ffb00 (diff)
video: tegra: dc: ext: move flip callback to dc.c
Removes a dependency on TEGRA_DC_EXTENSIONS Bug 1459374 Change-Id: I413e324f7e6615ebf6d654a3716dab57d30a5bd1 Signed-off-by: Greg Hackmann <ghackmann@google.com> Signed-off-by: Xia Yang <xiay@nvidia.com> Reviewed-on: http://git-master/r/366185 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Jon Mayo <jmayo@nvidia.com> Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/dc.c')
-rw-r--r--drivers/video/tegra/dc/dc.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index 094b655756eb..12e4d2c7f13f 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -2656,6 +2656,50 @@ static void tegra_dc_underflow_worker(struct work_struct *work)
mutex_unlock(&dc->lock);
}
+static void (*flip_callback)(void);
+static spinlock_t flip_callback_lock;
+static bool init_tegra_dc_flip_callback_called;
+
+static int __init init_tegra_dc_flip_callback(void)
+{
+ spin_lock_init(&flip_callback_lock);
+ init_tegra_dc_flip_callback_called = true;
+ return 0;
+}
+
+pure_initcall(init_tegra_dc_flip_callback);
+
+int tegra_dc_set_flip_callback(void (*callback)(void))
+{
+ WARN_ON(!init_tegra_dc_flip_callback_called);
+
+ spin_lock(&flip_callback_lock);
+ flip_callback = callback;
+ spin_unlock(&flip_callback_lock);
+
+ return 0;
+}
+EXPORT_SYMBOL(tegra_dc_set_flip_callback);
+
+int tegra_dc_unset_flip_callback()
+{
+ spin_lock(&flip_callback_lock);
+ flip_callback = NULL;
+ spin_unlock(&flip_callback_lock);
+
+ return 0;
+}
+EXPORT_SYMBOL(tegra_dc_unset_flip_callback);
+
+void tegra_dc_call_flip_callback()
+{
+ spin_lock(&flip_callback_lock);
+ if (flip_callback)
+ flip_callback();
+ spin_unlock(&flip_callback_lock);
+}
+EXPORT_SYMBOL(tegra_dc_call_flip_callback);
+
#ifdef CONFIG_SWITCH
static ssize_t switch_modeset_print_mode(struct switch_dev *sdev, char *buf)
{