diff options
author | Midas Chien <midaschieh@google.com> | 2023-06-12 14:19:26 +0000 |
---|---|---|
committer | Chris Lu <luchris@google.com> | 2023-12-01 02:21:08 +0000 |
commit | 5f5123b5f206683679ecf132779703c5bc2f76ec (patch) | |
tree | dcbc9a04a36e55790ebe4b01ed15aea7cbeccbb5 | |
parent | 9b80f3df0928ae63fa128bc24eef6a61900bc71c (diff) | |
download | display-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.c | 24 |
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; } |