platform: rk3026 MID
pmu: axp192
system: android4.2
日前碰到机器休眠arm电压偏高的问题。自己找问题,找啊找,就是找不到,一直改那个arm电压表,没用,因为那个表是机器运行时的arm动态电压调整。
当机器休眠时的arm电压是另外设置的,不在这个表格内。
baord-rk3026-86v.c文件中的arm电压表如下:
/***********************************************************
* clock
************************************************************/
static struct cpufreq_frequency_table dvfs_arm_table[] = {
{.frequency = 312 * 1000, .index = 950 * 1000},
{.frequency = 504 * 1000, .index = 1200 * 1000},
{.frequency = 816 * 1000, .index = 1275 * 1000},
{.frequency = 912 * 1000, .index = 1350 * 1000},
{.frequency = 1008 * 1000, .index = 1400 * 1000},
{.frequency = CPUFREQ_TABLE_END},
};用工具测量arm电压,确实会随着cpu的频率而动态变化。但是机器休眠的时候cpu是不工作的,频率大概是24M,所以arm电压设置就不在这个表格内了。(这个表格在哪里被调用以后在更新to be continued).
arm电压是由axp192的dcdc2来输出实现动态调压。原理图如下:

本文探讨了在RK3026平台Android4.2系统中遇到的休眠时ARM电压保持在1.2V的问题。作者发现休眠电压设置不在常规的动态电压调整表中,而是在i2c_sram.c文件的suspend函数中。通过在suspend函数中将电压设为1V,并在resume函数中恢复休眠前电压,解决了问题。
最低0.47元/天 解锁文章
1109

被折叠的 条评论
为什么被折叠?



