diff options
author | Sunita Nadampalli <sunitan@ti.com> | 2011-09-20 10:04:11 -0500 |
---|---|---|
committer | Ziyan <jaraidaniel@gmail.com> | 2015-01-12 12:51:03 +0100 |
commit | 360aa48fc184f092f60759df7effd4ea0643385c (patch) | |
tree | 207f6ee1c84ef0f86c753a1b65f431ef0cdf61f9 /drivers/video | |
parent | c7583ba7c583ed7623c526b16d29ce1c8b717efa (diff) | |
download | kernel_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.c | 14 |
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; |