本文转载自:http://blog.csdn.net/dearsq/article/details/72770295

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

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

[Android6.0][RK3399] 电池系统(三)电量计 CW2015 驱动流程分析【转】的更多相关文章

  1. [Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: ...

  2. [Android6.0][RK3399] 双屏异显代码实现流程分析(二)【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/55050125 Patch Code dtsi rk3399-androiddtsi rk3399 ...

  3. [Android6.0][RK3399] 修改默认按键 KEY-PAD 的功能【转】

    本文转载自:http://m.blog.csdn.net/dearsq/article/details/70175637 Platform: RK3399 OS: Android 6.0 Kernel ...

  4. [RK3288][Android6.0] 系统按键驱动流程分析【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/77894406 Rockchip的按键驱动位于 kernel/drivers/input/ke ...

  5. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...

  6. android休眠唤醒驱动流程分析【转】

    转自:http://blog.csdn.net/hanmengaidudu/article/details/11777501 标准linux休眠过程: l        power managemen ...

  7. (三)golang--执行流程分析

    XXX.go--go build XXX.go--XXX.exe XXX.go--go run XXX.go 两种方式的区别:(1)如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没g ...

  8. Linux网卡驱动架构分析

    一.网卡驱动架构 由上到下层次依次为:应用程序→系统调用接口→协议无关接口→网络协议栈→设备无关接口→设备驱动. 二.重要数据结构 1.Linux内核中每一个网卡由一个net_device结构来描述. ...

  9. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

    关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台: ...

随机推荐

  1. 关于程序计数器(PC)和条件控制转移 引起的性能差异

    关于PC(程序计数器) 冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”! 处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐 ...

  2. Javascript拼接HTML字符串的方法列举及思路

    转载过来,去掉一些废话吧. 目标: 方便的拼接字符串,不使用让人眼晕的+=.使用过程如下: 1,先创建一个作为“模板”的字符串,如:’My name is ${name},I\’m ${age}.’ ...

  3. 大数据学习——装私服nexus

    (一)安装 解压之后 进入bin文件夹下 复制路径 D:\software\nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin 进入命令行窗口输入以下命令,安装成功 ...

  4. CDOJ 1220 The Battle of Guandu

    The Battle of Guandu Time Limit: 6000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Oth ...

  5. Leetcode 274.H指数

    H指数 给定一位研究者论文被引用次数的数组(被引用次数是非负整数).编写一个方法,计算出研究者的 h 指数. h 指数的定义: "一位有 h 指数的学者,代表他(她)的 N 篇论文中至多有 ...

  6. 67. @Transactional的类注入失败【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] Spring的代理模式有两种:java自带的动态代理模式和cglib代理模式,cglib代码模式适用于没有接口的类,而java自带适用于接口类,默 ...

  7. 制作U盘Puppy-Live启动盘

    制作U盘Puppy-Live启动盘 准备工具和材料:Puppy的ISO镜像文件.UltraISO工具.100M以上的U盘 开始: 1.用Ultraiso打开下载的镜像文件,然后选择菜单栏里面的&quo ...

  8. 【POJ2406】Power Strings(KMP,后缀数组)

    题意: n<=1000000,cas较大 思路:这是一道论文题 后缀数组已弃疗,强行需要DC3构造,懒得(不会)写 ..]of longint; n,m,i,j,len,ans,st:longi ...

  9. 没啥用,更换注册表信息使webbrower选择适合的版本

    /// <summary>            /// 修改注册表信息来兼容当前程序            ///             /// </summary>   ...

  10. P1455 搭配购买

    洛谷——P1455 搭配购买 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商 ...