aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorSunita Nadampalli <sunitan@ti.com>2011-09-20 10:04:11 -0500
committerZiyan <jaraidaniel@gmail.com>2015-01-12 12:51:03 +0100
commit360aa48fc184f092f60759df7effd4ea0643385c (patch)
tree207f6ee1c84ef0f86c753a1b65f431ef0cdf61f9 /drivers/video
parentc7583ba7c583ed7623c526b16d29ce1c8b717efa (diff)
downloadkernel_samsung_tuna-360aa48fc184f092f60759df7effd4ea0643385c.zip
kernel_samsung_tuna-360aa48fc184f092f60759df7effd4ea0643385c.tar.gz
kernel_samsung_tuna-360aa48fc184f092f60759df7effd4ea0643385c.tar.bz2
OMAP4: DSS: Fix to consider DSI manual update mode in waitforvsync
Add checks for manual update mode of DSI, and wait for framedone interrupt in case of manual update mode. Change-Id: I143a8d457219e2dab59ef099bab5c31043a36da0 Signed-off-by: Sunita Nadampalli <sunitan@ti.com> Conflicts: drivers/video/omap2/dss/manager.c
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/manager.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
index 11d5183..0b324db 100644
--- a/drivers/video/omap2/dss/manager.c
+++ b/drivers/video/omap2/dss/manager.c
@@ -697,19 +697,27 @@ static int omap_dss_unset_device(struct omap_overlay_manager *mgr)
static int dss_mgr_wait_for_vsync(struct omap_overlay_manager *mgr)
{
unsigned long timeout = msecs_to_jiffies(500);
- u32 irq;
+ u32 irq = 0; /* For non-supported panels will cause a timeout */
int r;
if (mgr->device->type == OMAP_DISPLAY_TYPE_VENC) {
irq = DISPC_IRQ_EVSYNC_ODD;
} else if (mgr->device->type == OMAP_DISPLAY_TYPE_HDMI) {
irq = DISPC_IRQ_EVSYNC_EVEN;
- } else {
- if (mgr->id == OMAP_DSS_CHANNEL_LCD)
+ } else if ((mgr->device->type == OMAP_DISPLAY_TYPE_DSI) &&
+ (mgr->device->channel == OMAP_DSS_CHANNEL_LCD)) {
+ if (mgr->device->phy.dsi.type == OMAP_DSS_DSI_TYPE_VIDEO_MODE)
irq = DISPC_IRQ_VSYNC;
else
+ irq = DISPC_IRQ_FRAMEDONE;
+ } else if ((mgr->device->type == OMAP_DISPLAY_TYPE_DSI) &&
+ (mgr->device->channel == OMAP_DSS_CHANNEL_LCD2)) {
+ if (mgr->device->phy.dsi.type == OMAP_DSS_DSI_TYPE_VIDEO_MODE)
irq = DISPC_IRQ_VSYNC2;
+ else
+ irq = DISPC_IRQ_FRAMEDONE2;
}
+
r = omap_dispc_wait_for_irq_interruptible_timeout(irq, timeout);
if (!r)
mgr->device->first_vsync = true;