瀏覽代碼

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 <[email protected]>
Signed-off-by: Nilaan Gunabalachandran <[email protected]>
Dhaval Patel 5 年之前
父節點
當前提交
d7514cc1a3
共有 2 個文件被更改,包括 11 次插入0 次删除
  1. 8 0
      msm/sde/sde_core_perf.c
  2. 3 0
      msm/sde/sde_core_perf.h

+ 8 - 0
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;
 

+ 3 - 0
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;
 };
 
 /**