disp: msm: sde: skip unnecessary cache register programming

Plane update will call system cache update, and by default,
will clear any cache programming. This clear is only necessary
after returning from a cached state. This change will reduce
unnecessary programming and event logs if the sys cache
was previously disabled and remains disabled.

Change-Id: I7f560ff24990a8c7ad785e560873193b7bf3a491
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
This commit is contained in:
Nilaan Gunabalachandran
2020-09-03 16:46:40 -04:00
parent 20db960f01
commit 2a3fe5e4c5

View File

@@ -2716,15 +2716,17 @@ static void _sde_plane_sspp_setup_sys_cache(struct sde_plane *psde,
struct sde_plane_state *pstate, bool is_tp10)
{
struct sde_sc_cfg *sc_cfg = psde->catalog->sc_cfg;
bool prev_rd_en;
if (!psde->pipe_hw->ops.setup_sys_cache ||
!(psde->perf_features & BIT(SDE_PERF_SSPP_SYS_CACHE)))
return;
prev_rd_en = pstate->sc_cfg.rd_en;
SDE_DEBUG("features:0x%x rotation:0x%x\n",
psde->features, pstate->rotation);
pstate->sc_cfg.rd_en = false;
pstate->sc_cfg.rd_scid = 0x0;
pstate->sc_cfg.flags = SSPP_SYS_CACHE_EN_FLAG |
@@ -2760,6 +2762,9 @@ static void _sde_plane_sspp_setup_sys_cache(struct sde_plane *psde,
pstate->sc_cfg.type = SDE_SYS_CACHE_DISP;
}
if (!pstate->sc_cfg.rd_en && !prev_rd_en)
return;
SDE_EVT32(DRMID(&psde->base), pstate->sc_cfg.rd_scid,
pstate->sc_cfg.rd_en, pstate->sc_cfg.rd_noallocate);