summaryrefslogtreecommitdiff
path: root/samsung/exynos_drm_dsim.c
diff options
context:
space:
mode:
authorAdrian Salido <salidoa@google.com>2021-01-22 17:53:56 -0800
committerTreeHugger Robot <treehugger-gerrit@google.com>2021-02-16 18:28:32 +0000
commitc98d772e947e4db5482fc583b26b5c5969a9dc5a (patch)
tree4f1ff73941924ef2aa74fb0f280e8fa248280a72 /samsung/exynos_drm_dsim.c
parent7a0b289f79cc6da152ed5c372ae75cba637e6e3c (diff)
downloaddisplay-c98d772e947e4db5482fc583b26b5c5969a9dc5a.tar.gz
drm: samsung: replace tui private mode flag
With private flags getting deprecated, replace the usage of TUI mode flag with the use of crtc state flags such that: * self_refresh_active: indicates that panel should remain in self refresh mode with regulators/power on * bypass: decon should remain in bypass mode with power on Bug: 165347448 Bug: 178988232 Change-Id: I2b708ec102477dd97495b821922d0d5a1ff80066 Signed-off-by: Adrian Salido <salidoa@google.com>
Diffstat (limited to 'samsung/exynos_drm_dsim.c')
-rw-r--r--samsung/exynos_drm_dsim.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/samsung/exynos_drm_dsim.c b/samsung/exynos_drm_dsim.c
index e805efd..0e0a184 100644
--- a/samsung/exynos_drm_dsim.c
+++ b/samsung/exynos_drm_dsim.c
@@ -108,13 +108,6 @@ static struct drm_crtc *drm_encoder_get_new_crtc(struct drm_encoder *encoder,
return conn_state->crtc;
}
-static bool dsim_encoder_in_tui(struct drm_encoder *encoder, struct drm_atomic_state *state)
-{
- const struct drm_crtc *crtc = drm_encoder_get_new_crtc(encoder, state);
-
- return crtc && exynos_crtc_in_tui(crtc->state);
-}
-
static void dsim_dump(struct dsim_device *dsim)
{
struct dsim_regs regs;
@@ -263,10 +256,12 @@ static void _dsim_enable(struct dsim_device *dsim)
static void dsim_encoder_enable(struct drm_encoder *encoder, struct drm_atomic_state *state)
{
struct dsim_device *dsim = encoder_to_dsim(encoder);
+ struct drm_crtc *crtc = drm_encoder_get_new_crtc(encoder, state);
+ struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state, crtc);
_dsim_enable(dsim);
- if (!dsim_encoder_in_tui(encoder, state))
+ if (!old_crtc_state || !old_crtc_state->self_refresh_active)
dsim_set_te_pinctrl(dsim, 1);
}
@@ -340,10 +335,12 @@ static void _dsim_disable(struct dsim_device *dsim)
static void dsim_encoder_disable(struct drm_encoder *encoder, struct drm_atomic_state *state)
{
struct dsim_device *dsim = encoder_to_dsim(encoder);
+ const struct drm_crtc *crtc = drm_encoder_get_new_crtc(encoder, state);
+ const bool self_refresh_active = crtc && crtc->state && crtc->state->self_refresh_active;
_dsim_disable(dsim);
- if (!dsim_encoder_in_tui(encoder, state))
+ if (!self_refresh_active)
dsim_set_te_pinctrl(dsim, 0);
}