summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>2014-10-24 16:24:53 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 12:01:06 +0900
commit1928bb002a2154a7b7a6a105ba1d65a36a7f0263 (patch)
tree526c44055e4e0411f7a90f41d1beb75f9688c312
parent9292ba6e397fe426a2a91d3526394f9054fc4d8c (diff)
downloadlinux-3.10-1928bb002a2154a7b7a6a105ba1d65a36a7f0263.tar.gz
linux-3.10-1928bb002a2154a7b7a6a105ba1d65a36a7f0263.tar.bz2
linux-3.10-1928bb002a2154a7b7a6a105ba1d65a36a7f0263.zip
drm/panel: s6e63j0x03: Fix uninitialized power state
Fix following DSI panel enable error (booted init=/bin/sh): echo 0 > /sys/devices/platform/exynos-drm/graphics/fb0/blank [ 55.708859] exynos-dsi 11c80000.dsi: PLL input frequency: 24000000 [ 55.709038] exynos-dsi 11c80000.dsi: PLL freq 250000000, (p 3, m 125, s 2) [ 55.709107] exynos-dsi 11c80000.dsi: band 4 [ 55.709929] exynos-dsi 11c80000.dsi: PLL failed to stabilize [ 55.709987] exynos-dsi 11c80000.dsi: failed to configure DSI PLL [ 56.007706] exynos-dsi 11c80000.dsi: timeout waiting for reset [ 56.030676] exynos-dsi 11c80000.dsi: waiting for bus lanes timed out [ 56.030804] exynos-dsi 11c80000.dsi: < xfer df45fda8: tx len 3, done 0, rx len 0, done 0 [ 56.127024] exynos-dsi 11c80000.dsi: xfer timed out: 03 00 f1 5a 5a [ 56.127125] panel_s6e63j0x03 11c80000.dsi.0: failed to dcs write: -110[f1 5a 5a] The panel power state was initialized by devm_kzalloc() to 0 which means FB_BLANK_UNBLANK. Request to unblank frame buffer from sysfs was triggering a call to panel set_brightness(). This lead to starting DSI transfers on disabled DSI/panel (no calls to exynos_dsi_enable, s6e63j0x03_prepare, s6e63j0x03_enable) Change-Id: I146d46c92c96112a6c616daf83edc57c5b889902 Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/panel/panel-s6e63j0x03.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/panel/panel-s6e63j0x03.c b/drivers/gpu/drm/panel/panel-s6e63j0x03.c
index b5b0ec4d371..d07eb0a3d42 100644
--- a/drivers/gpu/drm/panel/panel-s6e63j0x03.c
+++ b/drivers/gpu/drm/panel/panel-s6e63j0x03.c
@@ -647,6 +647,8 @@ static int s6e63j0x03_probe(struct mipi_dsi_device *dsi)
return ret;
}
+ ctx->power = FB_BLANK_POWERDOWN;
+
drm_panel_init(&ctx->panel);
ctx->panel.dev = dev;
ctx->panel.funcs = &s6e63j0x03_drm_funcs;
@@ -661,6 +663,11 @@ static int s6e63j0x03_probe(struct mipi_dsi_device *dsi)
ctx->bl_dev->props.max_brightness = MAX_BRIGHTNESS;
ctx->bl_dev->props.brightness = DEFAULT_BRIGHTNESS;
+ /*
+ * FIXME: probably we should also initialize backlight power:
+ * ctx->bl_dev->props.power = FB_BLANK_POWERDOWN;
+ */
+
ret = drm_panel_add(&ctx->panel);
if (ret < 0)
goto err_unregister_backlight;