[omap]: add 3.13 support
[openwrt/svn-archive/archive.git] / target / linux / omap / patches-3.13 / 0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch
diff --git a/target/linux/omap/patches-3.13/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch b/target/linux/omap/patches-3.13/0752-video-da8xx-fb-fix-defect-with-vsync-callback-invoca.patch
new file mode 100644 (file)
index 0000000..0fe9015
--- /dev/null
@@ -0,0 +1,38 @@
+From c99bd415829ef29adf71bb1e1b577650f10e93f5 Mon Sep 17 00:00:00 2001
+From: Darren Etheridge <detheridge@ti.com>
+Date: Mon, 4 Nov 2013 12:27:40 -0600
+Subject: [PATCH 752/752] video/da8xx-fb fix defect with vsync callback
+ invocation
+
+Fix defect where SGX is running at half of the expected framerate.
+The original patch (@ commit ID 9a1a810516ae9cb3259b898b6879901c5b44fa90)
+seems to have a mistake where it only calls the callback
+for the even or the odd frames depending on the revision of the LCD controller
+This patch corrects this and invokes the callback for both odd and even frame
+for just the Rev02 version of the LCDC (won't find an SGX GPU on a Rev01).
+
+Signed-off-by: Darren Etheridge <detheridge@ti.com>
+---
+ drivers/video/da8xx-fb.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/video/da8xx-fb.c
++++ b/drivers/video/da8xx-fb.c
+@@ -903,6 +903,8 @@ static irqreturn_t lcdc_irq_handler_rev0
+                                  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);
+               }
+               /* Set only when controller is disabled and at the end of
+@@ -968,8 +970,6 @@ static irqreturn_t lcdc_irq_handler_rev0
+                                  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);
+               }
+       }