From d7514cc1a31ee99c0c321fe0d81831570e260acd Mon Sep 17 00:00:00 2001 From: Dhaval Patel Date: Wed, 10 Jun 2020 15:09:00 -0700 Subject: [PATCH] disp: msm: sde: add debugfs node to support system cache disable Add a debugfs node to support system cache disable dynamically. Change-Id: I19da291c6e7a8d96e78cf94fa143c63c065f7fb9 Signed-off-by: Dhaval Patel Signed-off-by: Nilaan Gunabalachandran --- msm/sde/sde_core_perf.c | 8 ++++++++ msm/sde/sde_core_perf.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/msm/sde/sde_core_perf.c b/msm/sde/sde_core_perf.c index 0a0cac365021..2b539de2cb7d 100644 --- a/msm/sde/sde_core_perf.c +++ b/msm/sde/sde_core_perf.c @@ -422,6 +422,11 @@ void sde_core_perf_crtc_update_llcc(struct drm_crtc *crtc) mutex_lock(&sde_core_perf_lock); + if (!kms->perf.idle_sys_cache_enabled) { + SDE_DEBUG("disp system cache is disabled from debugfs\n"); + new->llcc_active[SDE_SYS_CACHE_DISP] = false; + } + if (_sde_core_perf_crtc_is_power_on(crtc)) { for (i = 0; i < SDE_SYS_CACHE_MAX; i++) { if (new->llcc_active[i] != old->llcc_active[i]) { @@ -1211,6 +1216,8 @@ int sde_core_perf_debugfs_init(struct sde_core_perf *perf, &perf->fix_core_ib_vote); debugfs_create_u64("fix_core_ab_vote", 0600, perf->debugfs_root, &perf->fix_core_ab_vote); + debugfs_create_bool("idle_sys_cache_enable", 0600, perf->debugfs_root, + &perf->idle_sys_cache_enabled); debugfs_create_u32("uidle_perf_cnt", 0600, perf->debugfs_root, &sde_kms->catalog->uidle_cfg.debugfs_perf); @@ -1280,6 +1287,7 @@ int sde_core_perf_init(struct sde_core_perf *perf, SDE_DEBUG("optional max core clk rate, use default\n"); perf->max_core_clk_rate = SDE_PERF_DEFAULT_MAX_CORE_CLK_RATE; } + perf->idle_sys_cache_enabled = true; return 0; diff --git a/msm/sde/sde_core_perf.h b/msm/sde/sde_core_perf.h index 95f61bf67fc4..8e9ac9b79547 100644 --- a/msm/sde/sde_core_perf.h +++ b/msm/sde/sde_core_perf.h @@ -76,6 +76,8 @@ struct sde_core_perf_tune { * @bw_vote_mode_updated: bandwidth vote mode update * @llcc_active: status of the llcc, true if active. * @uidle_enabled: indicates if uidle is already enabled + * @idle_sys_cache_enabled: override system cache enable state + * for idle usecase */ struct sde_core_perf { struct drm_device *dev; @@ -96,6 +98,7 @@ struct sde_core_perf { bool bw_vote_mode_updated; bool llcc_active[SDE_SYS_CACHE_MAX]; bool uidle_enabled; + bool idle_sys_cache_enabled; }; /**