1. 程式人生 > >[Android6.0][RK3399] 電池系統(三)電量計 CW2015 驅動流程分析

[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

相關推薦

[Android6.0][RK3399] 電池系統電量 CW2015 驅動流程分析

Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.04 IC: TI BQ25700、RK808 已知問題 驅動分析 函式呼叫鏈 已知問題 cw2

[Android6.0][RK3399] 電池系統BQ IC 新增 DC 充電功能

Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.04 IC: TI BQ25700、RK808 解決思路 程式碼新增 驗證結果 遇到 Bug 我們也

Android後臺保活4.0~8.0系統

簡單回顧下:在之前的保活第一篇中,主要介紹了設定模組關於保活的一些作用;在第二篇中,主要介紹了在關閉activity和系統退出的時候,系統是如何反應的,我們能否利用這些機制創造出更多的保活條件; 這篇主要介紹下在4.0~8.0系統當中,我們可以利用的保活方

Django2.0筆記(5)-開發個人部落格系統

開發環境PyCharm 2017.3.2 (Professional Edition)Python 3.6.3windows 10Sqlite3本文目標後臺admin頁面美化富文字輸入框配置優化 無圖無

自己搭建自動化巡檢系統 通過telnet實現遠程創建loopback

telnet loopback 我們在上一章完成了用代碼操作telnet,實現了遠程控制,分析前面的代碼會發現健壯性太低,需要進行優化,後續會通過開發一個交互式界面來完成人工介入操作網絡的過程。本次實驗目的:實現自動化創建環回口首先更新拓撲,拉出新的路由器和一臺交換機import telnetlibi

個性化推薦系統---推薦系統意義一點思考

進展 這樣的 es2017 意見 推廣 移動 付出 技術 com 個性化推薦是隨著移動互聯網發展不斷發展起來的,國內應用個性化推薦技術最早應該是豆瓣,在web2.0興起時做了很多嘗試,給網民帶來很多新鮮感覺、體驗。後來是國外電影租賃網站netflex推波助瀾

Java實驗--基於Swing的簡單的歌曲信息管理系統

img dbo check clas str http 按鈕 cancel uuid 轉載請註明出處,上一篇《Java實驗--基於Swing的簡單的歌曲信息管理系統(二)》介紹了項目的目錄結構和Dao層,本篇主要講解界面的繪制和業務層Service。 登錄界面   登錄

SCCM 2016 使用PXE 部署操作系統

兼容性 版本信息 重新 設定 locker proc roc wim 定義 上篇文章我們講到了如何在SCCM 2016裏面分發啟動映像和操作系統映像。不同於WDS,分發完還需要配置一個叫做任務序列的東西。只有配置了它,SCCM才能發揮其強大的自定義功能! 在“軟件庫”-“概

淺析Linux網絡子系統

pac 網絡設備 系統 title ack inux ket AD 視角 繼續分享陳鐵飛老師在華為北研所講座時的講稿。這次內容有Qos子系統、默認排隊規則、網絡設備驅動程序和驅動實例。最後陳老師為大家推薦了基本參考書籍以供參考。 Linux網絡子系統系列課程連接:

android6.0指紋識別學習 --------阿冬專欄!!!

轉載自:http://blog.csdn.net/baniel01/article/details/51991764 在Android 6.0中google終於給android系統加上了指紋識別的支援,這個功能在iPhone上早就已經實現了,並且在很多廠商的定製的R

NodeJS簡易部落格系統MongoDB入門學習

安裝好mongodb並設定開機自啟動服務,然後安裝視覺化軟體NoSQL Manager for MongoDB Professional。 一、CRUD操作 1、建立/使用資料庫 use DATABASE_NAME

LAMP+Postfix+Dovecot+Postfixadmin搭建郵件管理系統

接上篇,我們部署完了MySQL服務,接下來開始不是Apache服務。四、部署Apache服務     1、安裝Apache所必須的依賴包     [[email protected] ~]# yum -y ins

Spring Boot + Spring Cloud 構建微服務系統:服務消費和負載Feign

Spring Cloud Feign Spring Cloud Feign是一套基於Netflix Feign實現的宣告式服務呼叫客戶端。它使得編寫Web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對Web服務介面的繫結。它具備可插拔的註解支援,包括Feign註解、JAX-RS註解

大資料專案實戰之 --- 某App管理平臺的手機app日誌分析系統

一、建立hive分割槽表 ---------------------------------------------------- 1.建立資料庫 $hive> create database applogsdb; 2.建立分割槽表 編寫指令碼。

angular6 + ng-zorro鹿途後臺管理系統專案升級改造 01 升級ng-zorro-antd到1.8+

 升級命令 npm i ng-zorro-antd   ng add ng-zorro-antd   ng-zorro-antd 1.8+的版本圖示使用方法存在差異,我們需要按照新的標準對專案的圖示進行調整,命令如下   ng g

angular6 + ng-zorro鹿途後臺管理系統項目升級改造 01 升級ng-zorro-antd到1.8+

管理系 圖標 lar 項目 實時更新 後臺管理 log 針對 建議 升級命令 npm i ng-zorro-antd ng add ng-zorro-antd ng-zorro-antd 1.8+的版本圖標使用方法存在差異,我們需要按照新的標準對項目的圖標

機房收費系統-組合查詢

【前言】 一拖再拖,組合查詢終於做完了,並且弄明白了其中的含義。下面就以操作員的工作記錄窗體為例,來總結一下組合查詢吧! 【內容】 組合查詢: 第一行(可單獨查詢)即為第一個條件,第二行為第二個條件,第三行為第三個條件。利用“組合關係”控制元件將條件連線起來,進行組合查詢。 導圖 這張

Scratch 3.0建站指南課程管理

轉載僅供個人學習,原文地址:https://blog.csdn.net/fancy_kevin/article/details/84110975 Scratch 3.0建站指南(三)課程管理 線下機構是否需要針對線上進行課程管理? 1.是否需要將線上作為一種獲客來源 2.是否需要線上課程為線下授

Java專案開發成績管理系統 學生資訊模組—主介面設定

學生資訊模組負責管理學生的個人資訊,包括對學生人數的增加對資訊的修改等, 1.主介面設計: 學生資訊主介面包含選單欄,列表按鈕,等元件,其實現程式碼如下: package student; import grade.GIndex; import java.awt.*;

Android輸入系統InputReader的加工型別和InputDispatcher的分發過程

關聯絡列 解析WMS系列 深入理解JNI系列 輸入系統系列 前言 在上一篇文章中,我們學習了輸入事件的處理,輸入事件會交由InputDispatcher進行分發,那麼InputDispatcher是如何進行分發的?這篇文章會給你答案。 1.InputReader的加工型別 在Android輸入系統(二