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:
@@ -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_plane_state *pstate, bool is_tp10)
|
||||||
{
|
{
|
||||||
struct sde_sc_cfg *sc_cfg = psde->catalog->sc_cfg;
|
struct sde_sc_cfg *sc_cfg = psde->catalog->sc_cfg;
|
||||||
|
bool prev_rd_en;
|
||||||
|
|
||||||
if (!psde->pipe_hw->ops.setup_sys_cache ||
|
if (!psde->pipe_hw->ops.setup_sys_cache ||
|
||||||
!(psde->perf_features & BIT(SDE_PERF_SSPP_SYS_CACHE)))
|
!(psde->perf_features & BIT(SDE_PERF_SSPP_SYS_CACHE)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
prev_rd_en = pstate->sc_cfg.rd_en;
|
||||||
|
|
||||||
SDE_DEBUG("features:0x%x rotation:0x%x\n",
|
SDE_DEBUG("features:0x%x rotation:0x%x\n",
|
||||||
psde->features, pstate->rotation);
|
psde->features, pstate->rotation);
|
||||||
|
|
||||||
|
|
||||||
pstate->sc_cfg.rd_en = false;
|
pstate->sc_cfg.rd_en = false;
|
||||||
pstate->sc_cfg.rd_scid = 0x0;
|
pstate->sc_cfg.rd_scid = 0x0;
|
||||||
pstate->sc_cfg.flags = SSPP_SYS_CACHE_EN_FLAG |
|
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;
|
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,
|
SDE_EVT32(DRMID(&psde->base), pstate->sc_cfg.rd_scid,
|
||||||
pstate->sc_cfg.rd_en, pstate->sc_cfg.rd_noallocate);
|
pstate->sc_cfg.rd_en, pstate->sc_cfg.rd_noallocate);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user