Prechádzať zdrojové kódy

disp: msm: sde: extend perf debugfs to control all disp sys cache

Extend the existing sys_cache_enabled debugfs node functionality
to enable/disable all the display related system cache. Boolean
property is converted to integer and each BIT is associated with
a system cache.

Usage:
enable SYS_CACHE_DISP:
        echo 1 > /d/dri/0/debug/core_perf/sys_cache_enabled
enable SYS_CACHE_DISP_WB:
        echo 2 > /d/dri/0/debug/core_perf/sys_cache_enabled
enable both:
        echo 3 > /d/dri/0/debug/core_perf/sys_cache_enabled

Change-Id: I41eaacc4d3f448bb566993b20aa74caa979f1258
Signed-off-by: Veera Sundaram Sankaran <[email protected]>
Veera Sundaram Sankaran 3 rokov pred
rodič
commit
8707002bba
2 zmenil súbory, kde vykonal 11 pridanie a 9 odobranie
  1. 9 6
      msm/sde/sde_core_perf.c
  2. 2 3
      msm/sde/sde_core_perf.h

+ 9 - 6
msm/sde/sde_core_perf.c

@@ -442,9 +442,12 @@ 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;
+	/* update based on sys_cache_enabled debugfs node */
+	for (i = 0; i < SDE_SYS_CACHE_MAX; i++) {
+		if (!(kms->perf.sys_cache_enabled & BIT(i))) {
+			SDE_DEBUG("system cache[%d] is disabled from debugfs\n", i);
+			new->llcc_active[i] = false;
+		}
 	}
 
 	if (_sde_core_perf_crtc_is_power_on(crtc)) {
@@ -1369,8 +1372,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("sys_cache_enable", 0600, perf->debugfs_root,
+			&perf->sys_cache_enabled);
 
 	debugfs_create_u32("uidle_perf_cnt", 0600, perf->debugfs_root,
 			&sde_kms->catalog->uidle_cfg.debugfs_perf);
@@ -1440,7 +1443,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;
+	perf->sys_cache_enabled = 0xffffffff;
 
 	return 0;
 

+ 2 - 3
msm/sde/sde_core_perf.h

@@ -76,9 +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
  * @core_clk_reserve_rate: reserve core clk rate for built-in display
+ * @sys_cache_enabled: override system cache enable state
  */
 struct sde_core_perf {
 	struct drm_device *dev;
@@ -99,8 +98,8 @@ struct sde_core_perf {
 	bool bw_vote_mode_updated;
 	bool llcc_active[SDE_SYS_CACHE_MAX];
 	bool uidle_enabled;
-	bool idle_sys_cache_enabled;
 	u64 core_clk_reserve_rate;
+	u32 sys_cache_enabled;
 };
 
 /**