aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2013-11-15 12:23:17 +0000
committerImre Kaloz <kaloz@openwrt.org>2013-11-15 12:23:17 +0000
commite4eef7e6207078a4987b0e02d2ad4068083cf921 (patch)
treeae97c3d14f8a010428d78dfc27dde471ad897232 /target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch
parent1f3478901593dd3bb4f32b2cdcb4c4cfecdbea5a (diff)
downloadupstream-e4eef7e6207078a4987b0e02d2ad4068083cf921.tar.gz
upstream-e4eef7e6207078a4987b0e02d2ad4068083cf921.tar.bz2
upstream-e4eef7e6207078a4987b0e02d2ad4068083cf921.zip
replace the TI patch with a smaller patchset
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 38816
Diffstat (limited to 'target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch')
-rw-r--r--target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch b/target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch
new file mode 100644
index 0000000000..ee7e6ea427
--- /dev/null
+++ b/target/linux/omap/patches-3.12/0343-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch
@@ -0,0 +1,98 @@
+From 9a1a810516ae9cb3259b898b6879901c5b44fa90 Mon Sep 17 00:00:00 2001
+From: Prathap M S <msprathap@ti.com>
+Date: Mon, 2 Sep 2013 12:05:23 +0530
+Subject: [PATCH 343/752] video: da8xx-fb: Add API to register wait for vsync
+ callback
+
+This patch adds APIs to register and unregister wait for vsync callback.
+This is derived from commit id 2d44302545da24fd22912d964102bc31a7489e97
+This commit id was part of 3.2 kernel sources.
+
+Signed-off-by: Prathap M S <msprathap@ti.com>
+---
+ drivers/video/da8xx-fb.c | 33 +++++++++++++++++++++++++++++++++
+ include/video/da8xx-fb.h | 4 ++++
+ 2 files changed, 37 insertions(+)
+
+diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
+index c534d45..77dc477 100644
+--- a/drivers/video/da8xx-fb.c
++++ b/drivers/video/da8xx-fb.c
+@@ -235,6 +235,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = {
+ .accel = FB_ACCEL_NONE
+ };
+
++static vsync_callback_t vsync_cb_handler;
++static void *vsync_cb_arg;
++
+ static struct fb_videomode known_lcd_panels[] = {
+ /* Sharp LCD035Q3DG01 */
+ [0] = {
+@@ -916,6 +919,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
+ return 0;
+ }
+
++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx)
++{
++ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) {
++ vsync_cb_arg = arg;
++ vsync_cb_handler = handler;
++ } else {
++ return -EEXIST;
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL(register_vsync_cb);
++
++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx)
++{
++ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) {
++ vsync_cb_handler = NULL;
++ vsync_cb_arg = NULL;
++ } else {
++ return -ENXIO;
++ }
++
++ return 0;
++}
++EXPORT_SYMBOL(unregister_vsync_cb);
++
+ /* IRQ handler for version 2 of LCDC */
+ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
+ {
+@@ -953,6 +982,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
+ LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG);
+ par->vsync_flag = 1;
+ wake_up_interruptible(&par->vsync_wait);
++ if (vsync_cb_handler)
++ vsync_cb_handler(vsync_cb_arg);
+ }
+
+ if (stat & LCD_END_OF_FRAME1) {
+@@ -1028,6 +1059,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg)
+ LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
+ par->vsync_flag = 1;
+ wake_up_interruptible(&par->vsync_wait);
++ if (vsync_cb_handler)
++ vsync_cb_handler(vsync_cb_arg);
+ }
+ }
+
+diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h
+index 74c986a..2a0c739 100644
+--- a/include/video/da8xx-fb.h
++++ b/include/video/da8xx-fb.h
+@@ -106,5 +106,9 @@ void da8xx_register_encoder(struct da8xx_encoder *encoder);
+ void da8xx_unregister_encoder(struct da8xx_encoder *encoder);
+
+
++typedef void (*vsync_callback_t)(void *arg);
++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx);
++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx);
++
+ #endif /* ifndef DA8XX_FB_H */
+
+--
+1.7.10.4
+