From 2e7de30ba8bea72d40a413f4fdba18d45726976f Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Wed, 2 Jun 2010 17:31:53 +0300 Subject: [PATCH] --- yaml --- r: 251016 b: refs/heads/master c: f1aafdcd42ad45a4bda5cb8f4a6782b0e48549ba h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/video/omap2/dss/Kconfig | 11 +++++++++++ trunk/drivers/video/omap2/dss/dss.c | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index eb0863ecc4d7..09d6fff11a88 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d792eecd9a3e3df7c38b64a954d10ccdc665ec38 +refs/heads/master: f1aafdcd42ad45a4bda5cb8f4a6782b0e48549ba diff --git a/trunk/drivers/video/omap2/dss/Kconfig b/trunk/drivers/video/omap2/dss/Kconfig index bfc5da0e9700..458cfe128103 100644 --- a/trunk/drivers/video/omap2/dss/Kconfig +++ b/trunk/drivers/video/omap2/dss/Kconfig @@ -125,4 +125,15 @@ config OMAP2_DSS_MIN_FCK_PER_PCK Max FCK is 173MHz, so this doesn't work if your PCK is very high. +config OMAP2_DSS_SLEEP_BEFORE_RESET + bool "Sleep 50ms before DSS reset" + default y + help + For some unknown reason we may get SYNC_LOST errors from the display + subsystem at initialization time if we don't sleep before resetting + the DSS. See the source (dss.c) for more comments. + + However, 50ms is quite long time to sleep, and with some + configurations the SYNC_LOST may never happen, so the sleep can + be disabled here. endif diff --git a/trunk/drivers/video/omap2/dss/dss.c b/trunk/drivers/video/omap2/dss/dss.c index 8238a7b60761..702874a2c66d 100644 --- a/trunk/drivers/video/omap2/dss/dss.c +++ b/trunk/drivers/video/omap2/dss/dss.c @@ -665,13 +665,18 @@ static int dss_init(void) * the kernel resets it */ omap_writel(omap_readl(0x48050440) & ~0x3, 0x48050440); +#ifdef CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET /* We need to wait here a bit, otherwise we sometimes start to * get synclost errors, and after that only power cycle will * restore DSS functionality. I have no idea why this happens. * And we have to wait _before_ resetting the DSS, but after * enabling clocks. + * + * This bug was at least present on OMAP3430. It's unknown + * if it happens on OMAP2 or OMAP3630. */ msleep(50); +#endif _omap_dss_reset();