summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@nokia.com>2010-03-02 12:13:55 +0200
committerTomi Valkeinen <tomi.valkeinen@nokia.com>2010-03-02 17:24:18 +0200
commit21df20fcfb4e88f4cd4991e9e67de549e6480adf (patch)
treee75764923d09f257dae21c913dcdfe10431e20db /drivers
parent1189b7ff6485ebf1039440c34150360fab7cfb01 (diff)
downloadlwn-21df20fcfb4e88f4cd4991e9e67de549e6480adf.tar.gz
lwn-21df20fcfb4e88f4cd4991e9e67de549e6480adf.zip
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 <tomi.valkeinen@nokia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/omap2/displays/panel-taal.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index 2b5777621779..fcd6a61a91eb 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;