Commit ac4e8560 authored by Riana Tauro's avatar Riana Tauro Committed by Anshuman Gupta

drm/i915/selftests: Add helper function measure_power

move the power measurement and the triangle filter
to a different function. No functional changes.
Signed-off-by: default avatarRiana Tauro <riana.tauro@intel.com>
Reviewed-by: default avatarVinay Belgaumkar <vinay.belgaumkar@intel.com>
Signed-off-by: default avatarAnshuman Gupta <anshuman.gupta@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220923110043.789178-3-riana.tauro@intel.com
parent c09ae4ed
...@@ -1107,21 +1107,27 @@ static u64 __measure_power(int duration_ms) ...@@ -1107,21 +1107,27 @@ static u64 __measure_power(int duration_ms)
return div64_u64(1000 * 1000 * dE, dt); return div64_u64(1000 * 1000 * dE, dt);
} }
static u64 measure_power_at(struct intel_rps *rps, int *freq) static u64 measure_power(struct intel_rps *rps, int *freq)
{ {
u64 x[5]; u64 x[5];
int i; int i;
*freq = rps_set_check(rps, *freq);
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
x[i] = __measure_power(5); x[i] = __measure_power(5);
*freq = (*freq + read_cagf(rps)) / 2;
*freq = (*freq + intel_rps_read_actual_frequency(rps)) / 2;
/* A simple triangle filter for better result stability */ /* A simple triangle filter for better result stability */
sort(x, 5, sizeof(*x), cmp_u64, NULL); sort(x, 5, sizeof(*x), cmp_u64, NULL);
return div_u64(x[1] + 2 * x[2] + x[3], 4); return div_u64(x[1] + 2 * x[2] + x[3], 4);
} }
static u64 measure_power_at(struct intel_rps *rps, int *freq)
{
*freq = rps_set_check(rps, *freq);
return measure_power(rps, freq);
}
int live_rps_power(void *arg) int live_rps_power(void *arg)
{ {
struct intel_gt *gt = arg; struct intel_gt *gt = arg;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment