RK818/
RK816自身提供了fuel gauge和charge的功能,即电池电量检测和电池充电管理,两颗
芯片关于这部分的 功能实现非常类似。在本文主要以RK818作为例子,介绍驱动在各阶段打印出来的重要信息。RK816的打印信息与 之类似,可直接参考,不再重复增加单独文档。
1、充电器/
OTG检测
1.1 驱动文件
drivers/
power/rk818_charger.c
本驱动主要实现了充电器/OTG拔插事件的检测和充电电流的配置。打印信息都以 "rk818-charger: " 作为前缀方便 识别,打印中出现的 "ac"、"usb"、"dc"、"otg" 分别代表了不同的设备,1表示当前处于连接状态,0表示断开连 接。需要注意的是:
PMIC本身没有能力检测充电器/OTG拔插事件,所以对于充电类型的检测实际上都是依赖USB 的通知链消息。
1.2 probe阶段
DC充电器注册情况:
rk818‐charger:
support dc
rk818‐charger: not support dc
注册type-c口充电器的通知链:
rk818‐charger: register typec extcon evt notifier
注册传统usb口充电器的通知链:
rk818‐charger: register bc evt notifier
probe结束时各设备连接状态:
rk818‐charger: ac=1, usb=0, dc=0, otg=0
驱动版本号:
rk818‐charger: driver
version: 2.0
1.3 running阶段
来自于USB通知链的充电器/OTG设备插拔消息:
rk818‐charger: receive bc notifier event: DISCNT // 充电器拔出
rk818‐charger: receive bc notifier event: USB // 电脑充电插入
rk818‐charger: receive bc notifier event: AC // 标准充电器插入
rk818‐charger: receive bc notifier event: CDP1.5A // CDP类型充电器插入
rk818‐charger: receive bc notifier event: UNKNOWN // 不识别的充电器插入
rk818‐charger: receive bc notifier event: OTG ON // OTG插入
rk818‐charger: receive bc notifier event: OTG OFF // OTG拔出
rk818‐charger: detect dc charger in // DC插入
rk818‐charger: detect dc charger out // DC拔出
PMIC本身无法判断充电器类型,但是可以判断是否有充电设备插入:
rk818‐charger: pmic: plug out
rk818‐charger: pmic: plug in
拔插OTG设备时,5V供电变化情况:
rk818‐charger: disable otg5v
rk818‐charger:
enable otg5v
每次插拔充电器/OTG后都会更新设备和电流信息:
rk818‐charger: ac=1 usb=0 dc=0 otg=0 v=4200 chrg=1000 input=1800 virt=0
1.4 suspend阶段
suspend时OTG设备的5V供电变化情况:
rk818‐charger: suspend: otg 5v on
rk818‐charger: suspend: otg 5v off
1.5 shutdown阶段
shutdown时当前各设备的连接情况:
rk818‐charger: shutdown: ac=1 usb=0 dc=0 otg=0
2、电池电量检测
2.1 驱动文件
drivers/power/rk818_
Battery.c
drivers/power/rk818_battery.h
本驱动主要实现了fuel gauge的功能,提供了一套用于统计电池电量信息的
驱动程序。打印信息都以 "rk818-bat: " 作为前缀方便识别。
2.2 probe阶段
当接电池后第一次上电开机,会有 "first on" 的提示:
rk818‐bat: first on: d
SOC=24, rsoc=24 cap=960, fcc=4000, ov=3840
当异常关机(比如:死机后持续耗电)导致库仑计出现异常时,再次开机会进行库仑计的强制校正:
rk818‐bat: system halt last time... cap: pre=2400, now=120
当U-Boot已经初始化过电量计时,
内核电量计驱动可以跳过部分初始化流程,防止重复初始化:
rk818‐bat: initialized yet..
probe阶段的库仑计初始状态:
rk818‐bat: dsoc=32 cap=1000 v=3780 ov=3900 rv=3890 min=25 psoc=32 pcap=1000
电量计版本号:
rk818‐bat: driver version 7.1
更多详细内容请下载附件查看