summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShiyong Li <shiyongli@google.com>2023-07-17 21:36:38 +0000
committerShiyong Li <shiyongli@google.com>2023-07-19 20:55:41 +0000
commit232d0d2bc96db89726843ea5212080aec93abf5a (patch)
tree83cfa5f71ba72abf6a1c368fdd55e5fd108f9dc3
parent2b81037dc40474224dc601c516bb8cc388e1ac83 (diff)
downloadshusky-232d0d2bc96db89726843ea5212080aec93abf5a.tar.gz
display: shoreline: turn off power saving while setting Vreg register
One clock would be missed if keeping power saving on, which leads to one parameter not written into Vreg register. Bug: 289980476 Test: enable HBM@60Hz, suspend/resume panel Change-Id: Ibef1ace6047f38dbef4cf005c73f4b1bdf075444 Signed-off-by: Shiyong Li <shiyongli@google.com>
-rw-r--r--display/panel-google-shoreline.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/display/panel-google-shoreline.c b/display/panel-google-shoreline.c
index 7316db9..8dd6fbf 100644
--- a/display/panel-google-shoreline.c
+++ b/display/panel-google-shoreline.c
@@ -117,9 +117,9 @@ static const struct exynos_binned_lp shoreline_binned_lp[] = {
static const struct exynos_dsi_cmd shoreline_vgh_init_cmds[] = {
/* VGH/VLIN1 Setting (P1.0~EVT1.1 only) */
EXYNOS_DSI_CMD0(test_key_on_f0),
- EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x0A , 0xB5), /* global para */
+ EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x0A, 0xB5), /* global para */
EXYNOS_DSI_CMD_SEQ(0xB5, 0x08), /* NBM/HBM VLIN 7.9V */
- EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x0E , 0xB5), /* global para */
+ EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x0E, 0xB5), /* global para */
EXYNOS_DSI_CMD_SEQ(0xB5, 0x00), /* AOD VLIN 7.9V */
EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x0F, 0xF4), /* global para */
EXYNOS_DSI_CMD_SEQ(0xF4, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18), /* VGH 7.4V */
@@ -130,9 +130,9 @@ static const struct exynos_dsi_cmd shoreline_vgh_init_cmds[] = {
static const struct exynos_dsi_cmd shoreline_vreg_init_cmds[] = {
/* VREG 4.5V Set */
EXYNOS_DSI_CMD0(test_key_on_f0),
- EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x60 , 0xF4), /* global para */
+ EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x60, 0xF4), /* global para */
EXYNOS_DSI_CMD_SEQ(0xF4, 0x50), /* AMP Type Change */
- EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x3A , 0xF4), /* global para */
+ EXYNOS_DSI_CMD_SEQ(0xB0, 0x00, 0x3A, 0xF4), /* global para */
EXYNOS_DSI_CMD_SEQ(0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00), /* VREG 4.5V */
EXYNOS_DSI_CMD0(test_key_off_f0),
};
@@ -322,10 +322,14 @@ static void shoreline_display_on(struct exynos_panel *ctx)
if (spanel->vreg_cmd[0]) {
EXYNOS_DCS_BUF_ADD_SET(ctx, test_key_on_f0);
EXYNOS_DCS_BUF_ADD_SET(ctx, sync_begin);
+ EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x12, 0xF8); /* global para */
+ EXYNOS_DCS_BUF_ADD(ctx, 0xF8, 0x3F); /* auto power saving off */
EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x60, 0xF4); /* global para */
EXYNOS_DCS_BUF_ADD(ctx, 0xF4, 0x70); /* AMP type Return */
EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x3A, 0xF4);/* global para */
EXYNOS_DCS_BUF_ADD_SET(ctx, spanel->vreg_cmd); /* VREG OTP Value */
+ EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x12, 0xF8); /* global para */
+ EXYNOS_DCS_BUF_ADD(ctx, 0xF8, 0x00); /* auto power saving on */
EXYNOS_DCS_BUF_ADD_SET(ctx, sync_end);
EXYNOS_DCS_BUF_ADD_SET(ctx, test_key_off_f0);
}
@@ -341,11 +345,15 @@ static void shoreline_display_off(struct exynos_panel *ctx)
if (spanel->vreg_cmd[0]) {
EXYNOS_DCS_BUF_ADD_SET(ctx, test_key_on_f0);
EXYNOS_DCS_BUF_ADD_SET(ctx, sync_begin);
+ EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x12, 0xF8); /* global para */
+ EXYNOS_DCS_BUF_ADD(ctx, 0xF8, 0x3F); /* auto power saving off */
EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x60, 0xF4); /* global para */
EXYNOS_DCS_BUF_ADD(ctx, 0xF4, 0x50); /* AMP Type Change */
EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x3A, 0xF4); /* global para */
EXYNOS_DCS_BUF_ADD(ctx, 0xF4, 0x00, 0x00, 0x00, /* VREG 4.5V */
0x00, 0x00, 0x00, 0x00);
+ EXYNOS_DCS_BUF_ADD(ctx, 0xB0, 0x00, 0x12, 0xF8); /* global para */
+ EXYNOS_DCS_BUF_ADD(ctx, 0xF8, 0x00); /* auto power saving on */
EXYNOS_DCS_BUF_ADD_SET(ctx, sync_end);
EXYNOS_DCS_BUF_ADD_SET(ctx, test_key_off_f0);
}