summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2023-06-12 14:19:26 +0000
committerChris Lu <luchris@google.com>2023-12-01 02:21:08 +0000
commit5f5123b5f206683679ecf132779703c5bc2f76ec (patch)
treedcbc9a04a36e55790ebe4b01ed15aea7cbeccbb5
parent9b80f3df0928ae63fa128bc24eef6a61900bc71c (diff)
downloaddisplay-5f5123b5f206683679ecf132779703c5bc2f76ec.tar.gz
panel: s6e3hc3: update idle vrefresh in backlight state
Simply update panel idle vrefresh follow by self refresh for IDLE_MODE_ON_INACTIVITY mode to provide correct information in backlight state. Bug: 283374166 Test: check backlight state in normal and AOD mode Change-Id: I4d530b4433130afb21753ca79ebb24ecb0b95f61 Signed-off-by: Midas Chien <midaschieh@google.com>
-rw-r--r--samsung/panel/panel-samsung-s6e3hc3.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/samsung/panel/panel-samsung-s6e3hc3.c b/samsung/panel/panel-samsung-s6e3hc3.c
index 5c1f5a9..485c0fd 100644
--- a/samsung/panel/panel-samsung-s6e3hc3.c
+++ b/samsung/panel/panel-samsung-s6e3hc3.c
@@ -533,8 +533,12 @@ static bool s6e3hc3_set_self_refresh(struct exynos_panel *ctx, bool enable)
return false;
/* self refresh is not supported in lp mode since that always makes use of early exit */
- if (pmode->exynos_mode.is_lp_mode)
+ if (pmode->exynos_mode.is_lp_mode) {
+ /* set 10Hz while self refresh is active, otherwise clear it */
+ ctx->panel_idle_vrefresh = enable ? 10 : 0;
+ backlight_state_changed(ctx->bl);
return false;
+ }
idle_vrefresh = s6e3hc3_get_min_idle_vrefresh(ctx, pmode);
@@ -543,13 +547,17 @@ static bool s6e3hc3_set_self_refresh(struct exynos_panel *ctx, bool enable)
* if idle mode is on inactivity, may need to update the target fps for auto mode,
* or switch to manual mode if idle should be disabled (idle_vrefresh=0)
*/
- if ((pmode->idle_mode == IDLE_MODE_ON_INACTIVITY) &&
- (spanel->auto_mode_vrefresh != idle_vrefresh)) {
- dev_dbg(ctx->dev,
- "early exit update needed for mode: %s (idle_vrefresh: %d)\n",
- pmode->mode.name, idle_vrefresh);
- s6e3hc3_update_refresh_mode(ctx, pmode, idle_vrefresh);
- return true;
+ if (pmode->idle_mode == IDLE_MODE_ON_INACTIVITY) {
+ /* simply update idle vrefresh follow by self refresh */
+ ctx->panel_idle_vrefresh = enable ? idle_vrefresh : 0;
+ backlight_state_changed(ctx->bl);
+ if (spanel->auto_mode_vrefresh != idle_vrefresh) {
+ dev_dbg(ctx->dev,
+ "early exit update needed for mode: %s (idle_vrefresh: %d)\n",
+ pmode->mode.name, idle_vrefresh);
+ s6e3hc3_update_refresh_mode(ctx, pmode, idle_vrefresh);
+ return true;
+ }
}
return false;
}