From 21df20fcfb4e88f4cd4991e9e67de549e6480adf Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Tue, 2 Mar 2010 12:13:55 +0200 Subject: OMAP: DSS2: Taal: Fix TE when resuming TE was not initialized properly on power on, which broke TE when resuming from suspend. Signed-off-by: Tomi Valkeinen --- drivers/video/omap2/displays/panel-taal.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'drivers/video/omap2') diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c index 2b577762177..fcd6a61a91e 100644 --- a/drivers/video/omap2/displays/panel-taal.c +++ b/drivers/video/omap2/displays/panel-taal.c @@ -63,6 +63,8 @@ /* #define TAAL_USE_ESD_CHECK */ #define TAAL_ESD_CHECK_PERIOD msecs_to_jiffies(5000) +static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable); + struct taal_data { struct backlight_device *bldev; @@ -666,6 +668,10 @@ static int taal_power_on(struct omap_dss_device *dssdev) taal_dcs_write_0(DCS_DISPLAY_ON); + r = _taal_enable_te(dssdev, td->te_enabled); + if (r) + goto err; + #ifdef TAAL_USE_ESD_CHECK queue_delayed_work(td->esd_wq, &td->esd_work, TAAL_ESD_CHECK_PERIOD); #endif @@ -828,13 +834,11 @@ static int taal_sync(struct omap_dss_device *dssdev) return 0; } -static int taal_enable_te(struct omap_dss_device *dssdev, bool enable) +static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable) { struct taal_data *td = dev_get_drvdata(&dssdev->dev); int r; - dsi_bus_lock(); - td->te_enabled = enable; if (enable) @@ -848,6 +852,17 @@ static int taal_enable_te(struct omap_dss_device *dssdev, bool enable) * Panel bug? Needs more studying */ msleep(100); + return r; +} + +static int taal_enable_te(struct omap_dss_device *dssdev, bool enable) +{ + int r; + + dsi_bus_lock(); + + r = _taal_enable_te(dssdev, enable); + dsi_bus_unlock(); return r; -- cgit v1.2.3