问题:充电电流被限制,导致充电时间过长。
代码版本分支:android4.3_master
pmu文件管理文件地址:drivers/infotm/power/axp_power/
复现问题,检测电流变化,发现机器在深度休眠后电流会由原来的1.2A变成0.5A。
猜测:可能是由于充电电流过小导致充电时间过长。
分析:1.查看axp202的datasheet查找到限制充电电流的寄存器地址,发现控制是否有限制充电电流的寄存器地址为:0x30[1-0],在深度休眠前查看寄存器0x30的值
>>#echo 30 > sys/class/axppower/axpreg
>>#cat sys/class/axppower/axpreg
得到结果为:63(此为十六进制),转换为2进制为:1100011,此时0x30[1-0]位的取值为:11,根具datasheet发现此时充电电流限流是关闭的。
深度休眠后用同样的方法查看寄存器0x30,得到结果0x30为:61,转换二进制后为:1100001,0x30[1-0]位取值为:01,根据datasheet发现此时被限流为500mA,与发现的问题相符。
查看datasheet会发现,限制流量大小的控制是通过寄存器0x33来控制的,同样此时可以读取0x33的值,根据datasheet中的说明计算,同样可以得到电流为500mA,以此来验证了猜想。
由于问题是发生在深度休眠后,故此查看代码,查找软件在深度休眠时以及休眠唤醒时做了哪些动作。或者查找那些地方对0x30这个寄存器做了修改,