mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 20:32:04 +09:00
soc: rockchip: Add support to change static power according to leakage
Change-Id: Ie25e42ab14a46676819711957afa8aef8dfd0785 Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
This commit is contained in:
@@ -56,6 +56,8 @@ int rockchip_ipa_power_model_init(struct device *dev,
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
of_property_read_u32(model_node, "ref-leakage",
|
||||
&model_data->ref_leakage);
|
||||
*data = model_data;
|
||||
|
||||
return 0;
|
||||
@@ -135,14 +137,15 @@ unsigned long
|
||||
rockchip_ipa_get_static_power(struct ipa_power_model_data *data,
|
||||
unsigned long voltage)
|
||||
{
|
||||
u32 temp_scaling_factor, coeffp;
|
||||
u32 temp_scaling_factor, coeffp, static_power;
|
||||
u64 coeff_big;
|
||||
int temp;
|
||||
int ret;
|
||||
|
||||
ret = data->tz->ops->get_temp(data->tz, &temp);
|
||||
if (ret) {
|
||||
pr_err("%s:failed to read %s temp\n", __func__, data->tz->type);
|
||||
pr_err("%s:failed to read %s temp\n",
|
||||
__func__, data->tz->type);
|
||||
temp = FALLBACK_STATIC_TEMPERATURE;
|
||||
}
|
||||
|
||||
@@ -156,6 +159,11 @@ rockchip_ipa_get_static_power(struct ipa_power_model_data *data,
|
||||
coeff_big = (u64)data->static_coefficient * (u64)temp_scaling_factor;
|
||||
coeffp = div_u64(coeff_big, 1000000);
|
||||
|
||||
return scale_static_power(coeffp, (u32)voltage);
|
||||
static_power = scale_static_power(coeffp, (u32)voltage);
|
||||
if (data->leakage && data->ref_leakage)
|
||||
static_power = static_power * data->leakage /
|
||||
data->ref_leakage;
|
||||
|
||||
return static_power;
|
||||
}
|
||||
EXPORT_SYMBOL(rockchip_ipa_get_static_power);
|
||||
|
||||
@@ -10,6 +10,8 @@ struct ipa_power_model_data {
|
||||
u32 dynamic_coefficient;
|
||||
s32 ts[4];
|
||||
struct thermal_zone_device *tz;
|
||||
u32 leakage;
|
||||
u32 ref_leakage;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ROCKCHIP_IPA
|
||||
|
||||
Reference in New Issue
Block a user