浏览代码

disp: msm: sde: add tracking for if perf_mode is changed

Perf tuning mode can be updated through debugfs and this should
be used to reflect the core clock rate.

Change-Id: I313d079f0b8013f43f4b293c6400f34eaf56b6d2
Signed-off-by: Nilaan Gunabalachandran <[email protected]>
Nilaan Gunabalachandran 5 年之前
父节点
当前提交
d423505a8e
共有 2 个文件被更改,包括 10 次插入1 次删除
  1. 8 1
      msm/sde/sde_core_perf.c
  2. 2 0
      msm/sde/sde_core_perf.h

+ 8 - 1
msm/sde/sde_core_perf.c

@@ -842,12 +842,18 @@ static void _sde_core_perf_crtc_update_check(struct drm_crtc *crtc,
 		}
 	}
 
+	if (kms->perf.perf_tune.mode_changed &&
+			kms->perf.perf_tune.min_core_clk)
+		new->core_clk_rate = kms->perf.perf_tune.min_core_clk;
+
 	if ((params_changed &&
 			(new->core_clk_rate > old->core_clk_rate)) ||
 			(!params_changed && new->core_clk_rate &&
-			(new->core_clk_rate < old->core_clk_rate))) {
+			(new->core_clk_rate < old->core_clk_rate)) ||
+			kms->perf.perf_tune.mode_changed) {
 		old->core_clk_rate = new->core_clk_rate;
 		*update_clk = 1;
+		kms->perf.perf_tune.mode_changed = false;
 	}
 }
 
@@ -1069,6 +1075,7 @@ static ssize_t _sde_core_perf_mode_write(struct file *file,
 		DRM_INFO("normal performance mode\n");
 	}
 	perf->perf_tune.mode = perf_mode;
+	perf->perf_tune.mode_changed = true;
 
 	return count;
 }

+ 2 - 0
msm/sde/sde_core_perf.h

@@ -47,11 +47,13 @@ struct sde_core_perf_params {
  * @mode: performance mode
  * @min_core_clk: minimum core clock
  * @min_bus_vote: minimum bus vote
+ * @mode_changed: indicate if clock tuning strategy changed
  */
 struct sde_core_perf_tune {
 	u32 mode;
 	u64 min_core_clk;
 	u64 min_bus_vote;
+	bool mode_changed;
 };
 
 /**