diff options
author | Greg Hackmann <ghackmann@google.com> | 2013-09-05 10:51:03 -0700 |
---|---|---|
committer | Jon Mayo <jmayo@nvidia.com> | 2014-03-19 18:04:54 -0700 |
commit | 6af97a0dd4837f4907d154a7efef0e5cd6e21186 (patch) | |
tree | 9b42d0f8c91ab87bce3605d859220128aed2e8ec /drivers/video/tegra/dc/dc.c | |
parent | 23ad615ddbb035b811c60f4590966d48c96ffb00 (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.c | 44 |
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) { |