|
@@ -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);
|
|
|
|
|