mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
soc: rockchip_system_monitor: Add support to change mem volt when low temp
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com> Change-Id: I7ce9959bb56617c2fc1111d047af5ec7e88ce60e
This commit is contained in:
@@ -523,6 +523,8 @@ static int rockchip_init_temp_opp_table(struct monitor_dev_info *info)
|
|||||||
info->opp_table[i].rate = opp->rate;
|
info->opp_table[i].rate = opp->rate;
|
||||||
info->opp_table[i].volt = opp->supplies[0].u_volt;
|
info->opp_table[i].volt = opp->supplies[0].u_volt;
|
||||||
info->opp_table[i].max_volt = opp->supplies[0].u_volt_max;
|
info->opp_table[i].max_volt = opp->supplies[0].u_volt_max;
|
||||||
|
if (opp_table->regulator_count > 1)
|
||||||
|
info->opp_table[i].mem_volt = opp->supplies[1].u_volt;
|
||||||
|
|
||||||
if (opp->supplies[0].u_volt <= info->high_temp_max_volt) {
|
if (opp->supplies[0].u_volt <= info->high_temp_max_volt) {
|
||||||
if (!reach_high_temp_max_volt)
|
if (!reach_high_temp_max_volt)
|
||||||
@@ -814,11 +816,27 @@ static int rockchip_adjust_low_temp_opp_volt(struct monitor_dev_info *info,
|
|||||||
opp->supplies[0].u_volt =
|
opp->supplies[0].u_volt =
|
||||||
info->opp_table[i].low_temp_volt;
|
info->opp_table[i].low_temp_volt;
|
||||||
opp->supplies[0].u_volt_min = opp->supplies[0].u_volt;
|
opp->supplies[0].u_volt_min = opp->supplies[0].u_volt;
|
||||||
|
if (opp_table->regulator_count > 1) {
|
||||||
|
opp->supplies[1].u_volt_max =
|
||||||
|
opp->supplies[0].u_volt_max;
|
||||||
|
opp->supplies[1].u_volt =
|
||||||
|
opp->supplies[0].u_volt;
|
||||||
|
opp->supplies[1].u_volt_min =
|
||||||
|
opp->supplies[0].u_volt_min;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
opp->supplies[0].u_volt_min = info->opp_table[i].volt;
|
opp->supplies[0].u_volt_min = info->opp_table[i].volt;
|
||||||
opp->supplies[0].u_volt = opp->supplies[0].u_volt_min;
|
opp->supplies[0].u_volt = opp->supplies[0].u_volt_min;
|
||||||
opp->supplies[0].u_volt_max =
|
opp->supplies[0].u_volt_max =
|
||||||
info->opp_table[i].max_volt;
|
info->opp_table[i].max_volt;
|
||||||
|
if (opp_table->regulator_count > 1) {
|
||||||
|
opp->supplies[1].u_volt_min =
|
||||||
|
info->opp_table[i].mem_volt;
|
||||||
|
opp->supplies[1].u_volt =
|
||||||
|
opp->supplies[1].u_volt_min;
|
||||||
|
opp->supplies[1].u_volt_max =
|
||||||
|
info->opp_table[i].max_volt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ struct temp_freq_table {
|
|||||||
* struct temp_opp_table - System monitor device OPP description structure
|
* struct temp_opp_table - System monitor device OPP description structure
|
||||||
* @rate: Frequency in hertz
|
* @rate: Frequency in hertz
|
||||||
* @volt: Target voltage in microvolt
|
* @volt: Target voltage in microvolt
|
||||||
|
* @mem_volt: Target voltage for memory in microvolt
|
||||||
* @low_temp_volt: Target voltage when low temperature, in microvolt
|
* @low_temp_volt: Target voltage when low temperature, in microvolt
|
||||||
* @max_volt: Maximum voltage in microvolt
|
* @max_volt: Maximum voltage in microvolt
|
||||||
*/
|
*/
|
||||||
struct temp_opp_table {
|
struct temp_opp_table {
|
||||||
unsigned long rate;
|
unsigned long rate;
|
||||||
unsigned long volt;
|
unsigned long volt;
|
||||||
|
unsigned long mem_volt;
|
||||||
unsigned long low_temp_volt;
|
unsigned long low_temp_volt;
|
||||||
unsigned long max_volt;
|
unsigned long max_volt;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user