diff options
author | Ziyan <jaraidaniel@gmail.com> | 2016-05-04 19:47:15 +0200 |
---|---|---|
committer | Andreas Blaesius <skate4life@gmx.de> | 2016-05-05 13:44:23 +0200 |
commit | d3b177c7f887f062b639e4fc602f413c910ba142 (patch) | |
tree | 838d417b439da1ebe4d9574bdced6bc2247fb350 /drivers/video | |
parent | ca0128a03452200d50756147f725a9ad720a9460 (diff) | |
download | kernel_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.c | 23 |
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, <n_backlight_ops, &props); if (IS_ERR(lcd->bd)) { |