mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
Mali: midgard: Add support for static power consumption calculation
Signed-off-by: Ye Zhang <ye.zhang@rock-chips.com> Change-Id: Ic5685241bd7dbe7b5869a623ce25640af7017840
This commit is contained in:
@@ -343,6 +343,7 @@ int kbase_devfreq_init(struct kbase_device *kbdev)
|
||||
unsigned long opp_rate;
|
||||
unsigned int dyn_power_coeff = 0;
|
||||
int err;
|
||||
struct device_node *model_dt_node;
|
||||
|
||||
if (!kbdev->clock) {
|
||||
dev_err(kbdev->dev, "Clock not available for devfreq\n");
|
||||
@@ -373,10 +374,20 @@ int kbase_devfreq_init(struct kbase_device *kbdev)
|
||||
&ondemand_data.upthreshold);
|
||||
of_property_read_u32(np, "downdifferential",
|
||||
&ondemand_data.downdifferential);
|
||||
of_property_read_u32(kbdev->dev->of_node, "dynamic-power-coefficient",
|
||||
&dyn_power_coeff);
|
||||
if (dyn_power_coeff)
|
||||
dp->is_cooling_device = true;
|
||||
|
||||
model_dt_node = of_get_compatible_child(np, "arm,mali-simple-power-model");
|
||||
if (!model_dt_node) {
|
||||
err = of_property_read_u32(np, "dynamic-power-coefficient",
|
||||
&dyn_power_coeff);
|
||||
if (err) {
|
||||
dev_err(kbdev->dev, "Couldn't find proper 'dynamic-power-coefficient' in DT\n");
|
||||
goto devfreq_add_dev_failed;
|
||||
} else {
|
||||
dp->is_cooling_device = true;
|
||||
}
|
||||
} else {
|
||||
of_node_put(model_dt_node);
|
||||
}
|
||||
|
||||
kbdev->devfreq = devfreq_add_device(kbdev->dev, dp,
|
||||
"simple_ondemand", &ondemand_data);
|
||||
|
||||
@@ -584,6 +584,8 @@ struct devfreq_cooling_power kbase_ipa_power_model_ops = {
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)
|
||||
.get_static_power = &kbase_get_static_power,
|
||||
.get_dynamic_power = &kbase_get_dynamic_power,
|
||||
#else
|
||||
.get_real_power = kbase_get_real_power,
|
||||
#endif
|
||||
};
|
||||
KBASE_EXPORT_TEST_API(kbase_ipa_power_model_ops);
|
||||
|
||||
@@ -145,9 +145,9 @@ static int add_params(struct kbase_ipa_model *model)
|
||||
if (err)
|
||||
goto end;
|
||||
|
||||
err = kbase_ipa_model_add_param_s32(model, "dynamic-coefficient",
|
||||
&model_data->dynamic_coefficient,
|
||||
1, true);
|
||||
err = of_property_read_u32_array(model->kbdev->dev->of_node,
|
||||
"dynamic-power-coefficient",
|
||||
&model_data->dynamic_coefficient, 1);
|
||||
if (err)
|
||||
goto end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user