[Android6.0][RK3399] 电池系统(三)电量计 CW2015 驱动流程分析

Platform: RK3399
OS: Android 6.0
Kernel: 4.4
Version: v2017.04
IC: TI BQ25700、RK808

已知问题

cw2015 的代码默认是 rk3288 平台的,3399 平台有一些接口已经升级。
所以默认编译是无法通过的。
所以当前的问题是进行代码的修改以适用于当前 3399 平台。
磨刀不误砍柴工,我们先磨好刀,下一章再开始砍柴。

驱动分析

我在驱动中添加了 cw_init_power_supply 和 cw_turn_on_bq_hw_init。
在前者里面完成了 power_supply 设备的注册(利用升级后的 register_power_supply 接口)
在后者中完成了电池状态的检测,并传给 bq25700_charger IC。

函数调用链

cw_bat_probe
  cw2015_parse_dt  // 解析 dts。
                   // 包括 bat_config_info、dc_det_gpio、bat_low_gpio、chg_ok_gpio
                   // chg_mode_sel_gpio、
                   // is_dc_charge 是否支持 dc 充电
                   // is_usb_charge 是否支持 usb 充电
  cw_bat_gpio_init // 申请 GPIO 并分配 dc_det_gpio、bat_low_gpio、chg_ok_gpio 为 input
                   // 分配 chg_mode_sel_gpio 为 output
  cw_init          // 初始化 cw2015 的寄存器。
                   // 设置工作模式,如果是 SLEEP MODE 就将其唤醒进入 NORMAL MODE;
                   // 设置警报寄存器 ATHD;
                   // 更新还未设置的寄存器信息
  cw_init_power_supply // 注册 power_supply 设备(三种 battery、usb、ac)
  cw_update_time_member_capacity_change  // 更新到现在开始充电系统启动的用时,以及到现在为止系统休眠了多长时间
  cw_update_time_member_charge_start // 更新到现在电量改变系统启动的用时,以及到现在为止系统休眠了多长时间
  battery_workqueue = create_singlethread_workqueue // 创建单线程工作队列 rk_battery
  INIT_DELAYED_WORK // 初始化 cw_bat_work 绑定到 battery_delay_work
    cw_bat_work     // 不断更新电池信息
       rk_ac_update_online // 更新 DC 状态
       power_supply_changed(cw_bat->rk_ac) //
       rk_usb_update_online // 更新 usb 状态
       power_supply_changed(cw_bat->rk_usb)
  INIT_DELAYED_WORK // 初始化 dc_detect_do_wakeup 绑定到 dc_wakeup_work
    dc_detect_do_wakeup // 获取 dc_det irq 号,根据现在中断状态来设置下一次中断的触发条件
  cw_turn_on_bq_hw_init // 获取 VCELL Voltage 并且传递标志位给 BQ IC 的驱动,用以决定是否配置 BQ IC

欢迎转载,转载请著名作者 Younix 和原文地址:
http://blog.csdn.net/dearsq/article/details/72770295
谢谢。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值