summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2014-10-24 17:43:14 +0900
committerInki Dae <inki.dae@samsung.com>2014-10-24 17:56:03 +0900
commitdd6b323f8f9c6bfde6c8414f311df86cd6bebe8b (patch)
treec21ebbce6764f338c611ca48080fc8606e22af32
parentceb664dbdf47c48d356f2d0ed3ab7ae33b07cb53 (diff)
downloadlinux-3.10-dd6b323f8f9c6bfde6c8414f311df86cd6bebe8b.tar.gz
linux-3.10-dd6b323f8f9c6bfde6c8414f311df86cd6bebe8b.tar.bz2
linux-3.10-dd6b323f8f9c6bfde6c8414f311df86cd6bebe8b.zip
drm/panel: s6e63j0x03: correct lcd power status
This patch makes sure for panel driver to have correct power status. Change-Id: I33e6e64969ab6f2679f5f1f889ccfde27d81c901 Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/panel/panel-s6e63j0x03.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/panel/panel-s6e63j0x03.c b/drivers/gpu/drm/panel/panel-s6e63j0x03.c
index d07eb0a3d42..de7bdfa6615 100644
--- a/drivers/gpu/drm/panel/panel-s6e63j0x03.c
+++ b/drivers/gpu/drm/panel/panel-s6e63j0x03.c
@@ -478,10 +478,12 @@ static const struct backlight_ops s6e63j0x03_bl_ops = {
.update_status = s6e63j0x03_set_brightness,
};
+static int s6e63j0x03_enable(struct drm_panel *panel);
static int s6e63j0x03_disable(struct drm_panel *panel)
{
struct s6e63j0x03 *ctx = panel_to_s6e63j0x03(panel);
+ int ret;
s6e63j0x03_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_OFF);
s6e63j0x03_dcs_write_seq_static(ctx, MIPI_DCS_ENTER_SLEEP_MODE);
@@ -491,7 +493,13 @@ static int s6e63j0x03_disable(struct drm_panel *panel)
usleep_range(ctx->power_off_delay * 1000,
(ctx->power_off_delay + 1) * 1000);
- return s6e63j0x03_power_off(ctx);
+ ret = s6e63j0x03_power_off(ctx);
+ if (ret < 0)
+ return s6e63j0x03_enable(panel);
+
+ ctx->power = FB_BLANK_POWERDOWN;
+
+ return ret;
}
static int s6e63j0x03_enable(struct drm_panel *panel)
@@ -509,7 +517,9 @@ static int s6e63j0x03_enable(struct drm_panel *panel)
ret = ctx->error;
if (ret < 0)
- s6e63j0x03_disable(panel);
+ return s6e63j0x03_disable(panel);
+
+ ctx->power = FB_BLANK_UNBLANK;
return ret;
}