aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2012-02-23 12:21:09 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-03-06 14:08:39 +0200
commit4614679c9d3b77e87b390b6afe8a8dfc980f4387 (patch)
tree4d329525727de808f6b4dbe25d83451acd9aff5a /drivers/video
parentOMAPDSS: MANAGER/APPLY: Add runtime_pm protection around wait_for_go/vsync functions (diff)
downloadlinux-dev-4614679c9d3b77e87b390b6afe8a8dfc980f4387.tar.xz
linux-dev-4614679c9d3b77e87b390b6afe8a8dfc980f4387.zip
OMAPDSS: APPLY: print warning if wait_pending_extra_info_updates fails
wait_pending_extra_info_updates() currently does a hacky second check for extra_info_update_ongoing() at the end of the function to show a warning if extra_info update is still ongoing. The call to extra_info_update_ongoing() should really be inside spinlock, but that's a bit heavy just for verification. Rather than that, check the return value of the wait_for_completion_timeout() and print an error if it has timeouted or returned an error. Even better would be to return the error value and act on it in the callers of wait_pending_extra_info_updates. However, it's not clear what the callers should do in case of an error, as the error should only happen if there's a bug in the driver or the HW. So we'll just print the warning for now. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/apply.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index f145e9cd6edd..267c3f40d6c3 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -354,6 +354,7 @@ static void wait_pending_extra_info_updates(void)
bool updating;
unsigned long flags;
unsigned long t;
+ int r;
spin_lock_irqsave(&data_lock, flags);
@@ -369,11 +370,11 @@ static void wait_pending_extra_info_updates(void)
spin_unlock_irqrestore(&data_lock, flags);
t = msecs_to_jiffies(500);
- wait_for_completion_timeout(&extra_updated_completion, t);
-
- updating = extra_info_update_ongoing();
-
- WARN_ON(updating);
+ r = wait_for_completion_timeout(&extra_updated_completion, t);
+ if (r == 0)
+ DSSWARN("timeout in wait_pending_extra_info_updates\n");
+ else if (r < 0)
+ DSSERR("wait_pending_extra_info_updates failed: %d\n", r);
}
int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)