aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorZiyan <jaraidaniel@gmail.com>2016-05-04 19:47:15 +0200
committerAndreas Blaesius <skate4life@gmx.de>2016-05-05 13:44:23 +0200
commitd3b177c7f887f062b639e4fc602f413c910ba142 (patch)
tree838d417b439da1ebe4d9574bdced6bc2247fb350 /drivers/video
parentca0128a03452200d50756147f725a9ad720a9460 (diff)
downloadkernel_samsung_espresso10-d3b177c7f887f062b639e4fc602f413c910ba142.zip
kernel_samsung_espresso10-d3b177c7f887f062b639e4fc602f413c910ba142.tar.gz
kernel_samsung_espresso10-d3b177c7f887f062b639e4fc602f413c910ba142.tar.bz2
OMAPDSS: panel-ltn: don't turn on backlight on resume
Automatically turning on backlight on resume causes the screen to blink every time when alarms wake the device up. Only turn it on when it's actually requested.
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/displays/panel-ltn.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/video/omap2/displays/panel-ltn.c b/drivers/video/omap2/displays/panel-ltn.c
index 3f27f40..cc88f02 100644
--- a/drivers/video/omap2/displays/panel-ltn.c
+++ b/drivers/video/omap2/displays/panel-ltn.c
@@ -166,12 +166,14 @@ static int get_gamma_value_from_bl(struct omap_dss_device *dssdev, int bl)
static void update_brightness(struct omap_dss_device *dssdev)
{
struct ltn *lcd = dev_get_drvdata(&dssdev->dev);
+ int prev_brightness = lcd->current_brightness;
lcd->current_brightness = lcd->bl;
- if (lcd->current_brightness == BRIGHTNESS_OFF)
+ if (lcd->current_brightness == BRIGHTNESS_OFF &&
+ prev_brightness != BRIGHTNESS_OFF)
backlight_gptimer_stop(dssdev);
- else
+ else if (lcd->current_brightness != BRIGHTNESS_OFF)
backlight_gptimer_update(dssdev);
}
@@ -195,10 +197,7 @@ static int ltn_power_on(struct omap_dss_device *dssdev)
/* reset ltn bridge */
if (!dssdev->skip_init) {
ltn_hw_reset(dssdev);
-
msleep(100);
- omap_dm_timer_start(lcd->gptimer);
- usleep_range(2000, 2100);
update_brightness(dssdev);
}
@@ -220,9 +219,10 @@ static int ltn_power_off(struct omap_dss_device *dssdev)
lcd->enabled = 0;
- if (lcd->bl != BRIGHTNESS_OFF) {
- backlight_gptimer_stop(dssdev);
- msleep(200);
+ if (lcd->current_brightness != BRIGHTNESS_OFF) {
+ lcd->bl = BRIGHTNESS_OFF;
+ update_brightness(dssdev);
+ msleep(50);
}
gpio_set_value(lcd->pdata->lvds_nshdn_gpio, 0);
@@ -249,7 +249,6 @@ static int ltn_set_brightness(struct backlight_device *bd)
struct omap_dss_device *dssdev = dev_get_drvdata(&bd->dev);
struct ltn *lcd = dev_get_drvdata(&dssdev->dev);
int bl = bd->props.brightness;
- int ret = 0;
if (bl < BRIGHTNESS_OFF)
bl = BRIGHTNESS_OFF;
@@ -266,8 +265,10 @@ static int ltn_set_brightness(struct backlight_device *bd)
dev_dbg(&bd->dev, "brightness=%d, bl=%d\n",
bd->props.brightness, lcd->bl);
}
+
mutex_unlock(&lcd->lock);
- return ret;
+
+ return 0;
}
static const struct backlight_ops ltn_backlight_ops = {
@@ -338,7 +339,7 @@ static int ltn_panel_probe(struct omap_dss_device *dssdev)
lcd->bl = get_gamma_value_from_bl(dssdev, props.brightness);
- /* Register DSI backlight control */
+ /* Register DSI backlight control */
lcd->bd = backlight_device_register("panel", &dssdev->dev, dssdev,
&ltn_backlight_ops, &props);
if (IS_ERR(lcd->bd)) {