aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2010-06-02 10:31:53 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-05-11 07:19:23 -0400
commitf1aafdcd42ad45a4bda5cb8f4a6782b0e48549ba (patch)
tree4997e9fdb195d0022ef7773e5618178becaa441f /drivers/video
parentd792eecd9a3e3df7c38b64a954d10ccdc665ec38 (diff)
OMAP: DSS2: make 50ms bug-fix sleep optional
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 this patch creates a Kconfig option to disable the sleep. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/Kconfig11
-rw-r--r--drivers/video/omap2/dss/dss.c5
2 files changed, 16 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/Kconfig b/drivers/video/omap2/dss/Kconfig
index bfc5da0e9700..458cfe128103 100644
--- a/drivers/video/omap2/dss/Kconfig
+++ b/drivers/video/omap2/dss/Kconfig
@@ -125,4 +125,15 @@ config OMAP2_DSS_MIN_FCK_PER_PCK
125 Max FCK is 173MHz, so this doesn't work if your PCK 125 Max FCK is 173MHz, so this doesn't work if your PCK
126 is very high. 126 is very high.
127 127
128config OMAP2_DSS_SLEEP_BEFORE_RESET
129 bool "Sleep 50ms before DSS reset"
130 default y
131 help
132 For some unknown reason we may get SYNC_LOST errors from the display
133 subsystem at initialization time if we don't sleep before resetting
134 the DSS. See the source (dss.c) for more comments.
135
136 However, 50ms is quite long time to sleep, and with some
137 configurations the SYNC_LOST may never happen, so the sleep can
138 be disabled here.
128endif 139endif
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index 8238a7b60761..702874a2c66d 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -665,13 +665,18 @@ static int dss_init(void)
665 * the kernel resets it */ 665 * the kernel resets it */
666 omap_writel(omap_readl(0x48050440) & ~0x3, 0x48050440); 666 omap_writel(omap_readl(0x48050440) & ~0x3, 0x48050440);
667 667
668#ifdef CONFIG_OMAP2_DSS_SLEEP_BEFORE_RESET
668 /* We need to wait here a bit, otherwise we sometimes start to 669 /* We need to wait here a bit, otherwise we sometimes start to
669 * get synclost errors, and after that only power cycle will 670 * get synclost errors, and after that only power cycle will
670 * restore DSS functionality. I have no idea why this happens. 671 * restore DSS functionality. I have no idea why this happens.
671 * And we have to wait _before_ resetting the DSS, but after 672 * And we have to wait _before_ resetting the DSS, but after
672 * enabling clocks. 673 * enabling clocks.
674 *
675 * This bug was at least present on OMAP3430. It's unknown
676 * if it happens on OMAP2 or OMAP3630.
673 */ 677 */
674 msleep(50); 678 msleep(50);
679#endif
675 680
676 _omap_dss_reset(); 681 _omap_dss_reset();
677 682