aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2010-05-20 08:13:12 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-05-11 07:19:22 -0400
commitd792eecd9a3e3df7c38b64a954d10ccdc665ec38 (patch)
tree0e7c7d4711eb6d3e8e5d08f91526144329d6fc9d /drivers/video
parentc6940a3dc59d9628c8d407b98b6f57df69e3ef52 (diff)
OMAP: DSS2: remove non-working msleep(40) workaround
The sleep workaround for the problem described in the comment doesn't really work. This patch removes the workaround, and improves the comment about the bug, and proposes an userspace workaround. omap_dss_set_manager() is called 6 times when loading omapdss and omapfb, which means that 40ms * 6 = 240ms was spent sleeping when booting up. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/overlay.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c
index 35ef7d10100e..0377d46acadb 100644
--- a/drivers/video/omap2/dss/overlay.c
+++ b/drivers/video/omap2/dss/overlay.c
@@ -491,13 +491,18 @@ static int omap_dss_set_manager(struct omap_overlay *ovl,
491 ovl->manager = mgr; 491 ovl->manager = mgr;
492 492
493 dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK); 493 dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK);
494 /* XXX: on manual update display, in auto update mode, a bug happens 494 /* XXX: When there is an overlay on a DSI manual update display, and
495 * here. When an overlay is first enabled on LCD, then it's disabled, 495 * the overlay is first disabled, then moved to tv, and enabled, we
496 * and the manager is changed to TV, we sometimes get SYNC_LOST_DIGIT 496 * seem to get SYNC_LOST_DIGIT error.
497 * errors. Waiting before changing the channel_out fixes it. I'm 497 *
498 * guessing that the overlay is still somehow being used for the LCD, 498 * Waiting doesn't seem to help, but updating the manual update display
499 * but I don't understand how or why. */ 499 * after disabling the overlay seems to fix this. This hints that the
500 msleep(40); 500 * overlay is perhaps somehow tied to the LCD output until the output
501 * is updated.
502 *
503 * Userspace workaround for this is to update the LCD after disabling
504 * the overlay, but before moving the overlay to TV.
505 */
501 dispc_set_channel_out(ovl->id, mgr->id); 506 dispc_set_channel_out(ovl->id, mgr->id);
502 dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); 507 dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK);
503 508