From b2f5976c109350977104f27211a7029ec67cd488 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 6 Sep 2012 16:10:28 +0300 Subject: OMAPDSS: fix dss_ovl_unset_manager When we removed fifomerge support, we also changed dss_ovl_disable so that it doesn't wait for the hardware to be finished with the overlay. This may cause a problem when changing the overlay's manager, as changing the manager is an immediate change. Thus if the overlay is still being used by the HW when the manager is changed, there may be glitches on the screen. This patch adds a wait into dss_ovl_unset_manager, which ensures the overlays are disabled in the HW. Signed-off-by: Tomi Valkeinen --- drivers/video/omap2/dss/apply.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/video/omap2/dss/apply.c') diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index 4a58d80..6354bb8 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c @@ -1330,6 +1330,13 @@ int dss_ovl_unset_manager(struct omap_overlay *ovl) goto err; } + spin_unlock_irqrestore(&data_lock, flags); + + /* wait for pending extra_info updates to ensure the ovl is disabled */ + wait_pending_extra_info_updates(); + + spin_lock_irqsave(&data_lock, flags); + op->channel = -1; ovl->manager = NULL; -- cgit v1.1