具体log如下:

[  234.684827]  [3:  kworker/u16:6: 2048] [DEBUG] s2mu106_get_charging_health: S2MU106_CHG_STATUS0 0x3

[  234.690858]  [3:  kworker/u16:6: 2048] check_health: T = 250, bat_health(Good), T_health(Good), Charging(Charging)

[  234.701232]  [3:  kworker/u16:6: 2048] check_charging_full Start

[  234.707733]  [3:  kworker/u16:6: 2048] bat_monitor_work: Status(Charging), Health(Good), Cable(4), Recharging(0))

[  234.709507]  [2:        healthd: 3322] healthd: battery l=75 v=4232 t=25.0 h=2 st=2 c=0 fc=100 chg=u

[  234.710374]  [1:health@2.0-serv: 3334] healthd: battery l=75 v=4232 t=25.0 h=2 st=2 c=0 fc=100 chg=u

[  237.540214]  [1:  kworker/u16:6: 2048] soc_control_worker: S2MU00x battery capacity = 75, status = 1

[  237.540428]  [1:  kworker/u16:6: 2048] soc_control_worker: Capacity is more than 75, stop charging

[  237.540610]  [1:  kworker/u16:6: 2048] set_battery_status: current status = 1, new status = 2

[  237.544667]  [1:  kworker/u16:6: 2048] set_charging_current: cable_type(4), current(500, 500, 300)

[  237.553662]  [1:  kworker/u16:6: 2048] [DEBUG] s2mu106_enable_charger_switch: turn off charger

[  237.564145]  [1:  kworker/u16:6: 2048] s2mcs02_chg_set_property: POWER_SUPPLY_PROP_CHARGING_ENABLED, val->intval = 1.

[  237.572754]  [1:  kworker/u16:6: 2048] s2mcs02_set_charger_state: BUCK_EN(DISABLE)

[  237.591180]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x04]0xff, [0x05]0xff, [0x06]0xff, [0x07]0xea, [0x08]

[  237.604112]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x54]0xc3, [0x55]0x14, [0x56]0x80, [0x57]0x40, [0x58]

[  237.618310]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x5d]0x00, [0x5e]0x00, [0x5f]0x07, [0x60]0x42, [0x61]

[  237.627320]  [1:  kworker/u16:6: 2048] [DEBUG]s2mu106_set_buck: set buck off (charger off mode)

[  237.637326]  [1:  kworker/u16:6: 2048] s2mcs02_chg_set_property: POWER_SUPPLY_PROP_CHARGING_ENABLED, val->intval = 2.

[  237.646559]  [1:  kworker/u16:6: 2048] s2mcs02_set_charger_state: BUCK_EN(DISABLE)

[  237.663674]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x04]0xff, [0x05]0xff, [0x06]0xff, [0x07]0xea, [0x08]

[  237.678177]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x54]0xc3, [0x55]0x14, [0x56]0x80, [0x57]0x40, [0x58]

[  237.692710]  [1:  kworker/u16:6: 2048] s2mcs02_charger_test_read: S2MCS02 : [0x5d]0x00, [0x5e]0x00, [0x5f]0x07, [0x60]0x42, [0x61]

[  244.736021]  [0:  kworker/u16:6: 2048] bat_monitor_work: start monitoring

[  244.781256]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_vbat: vbat (4088)

[  244.836726]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_avgvbat: avgvbat (4156)

[  244.838650]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_current: current (-148)mA

[  244.841605]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_avgcurrent: avg current (335)mA

[  244.842690]  [1:  kworker/u16:6: 2048] ntc_show_batt_temp data is NULL!

[  244.852223]  [1:  kworker/u16:6: 2048] s2mu106_get_temperature: temperature (258)

[  244.860002]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_rawsoc: OTP 52(0d) 53(10), current 52(0d) 53(10), 0x1)

[  244.873938]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_avgcurrent: avg current (335)mA

[  244.934540]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_avgvbat: avgvbat (4154)

[  244.936402]  [2:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_vbat: vbat (4088)

[  244.938116]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_current: current (-156)mA

[  244.940783]  [2:  kworker/u16:6: 2048] s2mu106_get_comp_socr: SOCr = 0, T_SOCr = 0, I_SOCr = 0

[  244.953359]  [3:  kworker/u16:6: 2048] s2mu106_temperature_compensation: diff_soc = 2, data[1] = 0x00, data[0] = 0x02

[  244.958541]  [3:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_rawsoc: current_soc (7509), compen_soc (7511), previo)

[  244.975453]  [3:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_rawsoc: UI SOC = 75, is_charging = 0, avg_vbat = 4154f

[  245.050009]  [3:  kworker/u16:6: 2048] s2mu106_get_soh: original batcap = 3500, new_batcap = 3500, soh = 100

[  245.054706]  [3:  kworker/u16:6: 2048] s2mu106_get_remaining_cap: fcc = 3500, remaining_cap = 2628

[  245.054887]  [3:  kworker/u16:6: 2048] s2mu106_get_rawsoc: SOC_M = 7509, Chg_stat = 1, VM = 1, avbVBAT = 4154, avgCURR = 335, avgT8

[  245.107935]  [1:  kworker/u16:6: 2048] [FG]s2mu106_fg_test_read: 0x04:0xd5, 0x05:0x82, 0x06:0x7c, 0x07:0x02, 0x08:0x0f, 0x09:0x30,

[  245.131053]  [1:  kworker/u16:6: 2048] s2mu00x-battery s2mu00x-battery: get_battery_capacity: SOC(75), rawsoc(75), max_rawsoc(100).

[  245.146207]  [1:  kworker/u16:6: 2048] s2mu106_get_soh: original batcap = 3500, new_batcap = 3500, soh = 100

[  245.159656]  [1:  kworker/u16:6: 2048] s2mu106-fuelgauge 7-003b: s2mu106_get_avgcurrent: avg current (320)mA

[  245.184871]  [1:  kworker/u16:6: 2048] s2mu106_test_read: 0x0a:0xff, 0x0b:0x00, 0x0c:0x9c, 0x0d:0x00, 0x0e:0x05, 0x0f:0x00, 0x10:0f

[  245.195717]  [1:  kworker/u16:6: 2048] get_battery_info: battery status = 2, charger status = 3

LOG分析:查找充电停止结点处的log可以得出在75%充电截止是因为soc_contrlo_worker()停止了充电,查看源码可以看出,此处设置的电量大于75%以后充电电流就被限制在了在100MA,不足以供应系统使用,所以电池开始耗电。

[  237.540214]  [1:  kworker/u16:6: 2048] soc_control_worker: S2MU00x battery capacity = 75, status = 1

[  237.540428]  [1:  kworker/u16:6: 2048] soc_control_worker: Capacity is more than 75, stop charging

[  237.540610]  [1:  kworker/u16:6: 2048] set_battery_status: current status = 1, new status = 2

[  237.544667]  [1:  kworker/u16:6: 2048] set_charging_current: cable_type(4), current(500, 500, 300)

[  237.553662]  [1:  kworker/u16:6: 2048] [DEBUG] s2mu106_enable_charger_switch: turn off charger

源码修改:注掉soc_control_worker();

--- a/drivers/power/supply/s2mu00x_battery.c

+++ b/drivers/power/supply/s2mu00x_battery.c

@@ -1717,28 +1717,38 @@ static enum alarmtimer_restart bat_monitor_alarm(

return ALARMTIMER_NORESTART;

}

+/*

static void soc_control_worker(struct work_struct *work)

{

struct s2mu00x_battery_info *battery =

container_of(work, struct s2mu00x_battery_info, soc_control.work);

pr_info("%s: S2MU00x battery capacity = %d, status = %d\n",

__func__, battery->capacity, battery->status);

if ((battery->capacity >= 75) && (battery->status == POWER_SUPPLY_STATUS_CHARGING)) {

pr_info("%s: Capacity is more than 75, stop charging\n", __func__);

set_battery_status(battery, POWER_SUPPLY_STATUS_DISCHARGING);

set_charger_mode(battery, S2MU00X_BAT_CHG_MODE_BUCK_OFF);

battery->discarging_flag = 1;

}else if ((battery->capacity < 70) && (battery->discarging_flag == 1)) {

pr_info("%s: Capacity is less than 70, recharging\n", __func__);

set_battery_status(battery, POWER_SUPPLY_STATUS_CHARGING);

}

queue_delayed_work(battery->monitor_wqueue, &battery->soc_control, 10*HZ);

}

+*/

static int s2mu00x_battery_probe(struct platform_device *pdev)

{

struct s2mu00x_battery_info *battery;

@@ -1934,8 +1944,8 @@ static int s2mu00x_battery_probe(struct platform_device *pdev)

if ((is_charging_mode == S2MU00X_POWEROFF_CHG_MODE) ||

(is_charging_mode == S2MU00X_NOR_MODE)) {

pr_info("%s: Poweroff charger mode, enable charging\n", __func__);

-               INIT_DELAYED_WORK(&battery->soc_control, soc_control_worker);

-               queue_delayed_work(battery->monitor_wqueue, &battery->soc_control, 5*HZ);

+               //INIT_DELAYED_WORK(&battery->soc_control, soc_control_worker);

+               //queue_delayed_work(battery->monitor_wqueue, &battery->soc_control, 5*HZ);

} else if (is_charging_mode == S2MU00X_FAC_MODE) {

pr_info("%s: Factory boot mode, stop charging\n", __func__);

set_battery_status(battery, POWER_SUPPLY_STATUS_DISCHARGING);

charger在充电达到75%停止充电相关推荐

  1. LENOVO 充到60%就会停止充电

    联想笔记本的电源管理软件中有电池保养选项提供了两种模式,一种是电池充满模式,充电容量能达到100%.另一种是电池养护模式,充到60%就会停止充电,能延长电池的寿命.你可以看一下是不是设置成了电池养护模 ...

  2. NTC电阻短路(高温)电池未停止充电分析

    背景: 应测试要求对电池进行保护测试,在NTC电阻开路或者短路时应自动停止对电池的充电,从而起到保护电池的作用,同时这也是做CE认证中需要过的两项测试项,也可以模拟的是电池的低温以及高温测试.开路意味 ...

  3. 如何设置笔记本电脑充电到70%就停止充电_笔记本电脑电池保护如何设置_win10设置电池保护_win10设置电池70%电量就停止充电

    首先为了我的标题诈骗道歉--你根本无法在win10的系统设置里面找到任何有关于70%电量停止充电的选项,这个选项是各大笔记本厂商设计的. 对于华为matebook16: 华为电脑管家: 在设置中心的嗲 ...

  4. iphone无线服务器未响应,iPhone无线充电断断续续或无法充电是什么原因?

    很多用户表示,iPhone 手机进行无线充电时会出现断断续续或无法充电的情况,这是iPhone 有问题还是充电器有问题?iPhone无线充电断断续续或无法充电问题可以解决吗? 首先,你要确认你的iPh ...

  5. 安卓手机充电慢_苹果手机充电慢,耗电却很快?教你几个窍门,充得快电量更耐用...

    手机作为每个现代人都离不开的工具在大家的心目中占据了很重要的地位,不过即使是性能再好的手机也逃脱不了一个困境,那就是电量撑不过一天.这个问题对于很多安卓手机来说还算好解决,因为很多安卓手机都是闪充类型 ...

  6. ipad无法充电怎么办_ipad2不能充电怎么办 6种办法快速解决【图解】

    Ipad2在推出时也很受消费者喜爱,其智能化和时尚化水平都处于行业尖端地位,但是有的朋友在使用过程会发现一些问题.就比如说,Ipad2有时候不能充电,这就麻烦了,不能充电就代表后续无法使用了.今天小编 ...

  7. 台式计算机电池能充电吗,电脑的充电线可以一直充电吗?对电脑电池是否有损害?...

    原标题:电脑的充电线可以一直充电吗?对电脑电池是否有损害? 很多人为了使用方便.携带方便,都将笔记本电脑作为办公或日常娱乐使用的首选.在写字间的办公区,或者是在家中,比起台式电脑,笔记本电脑更加常见. ...

  8. 锂电池充电电路原理 锂电池充电电路设计

    锂电池充电电路原理 一.锂电池与镍镉.镍氢可充电池: 锂离子电池的负极为石墨晶体,正极通常为二氧化锂.充电时锂离子由正极向负极运动而嵌入石墨层中.放电时,锂离子从石墨晶体内负极表面脱离移向正极.所以, ...

  9. 【立创开源】两节锂电池8.4V充电电路(USB-5V充电)

    CS5090E是一款5V输入,最大1.5A充电电流,支持双节锂电池串联应用,锂离子电池的升压充电管理lC,CS5090E集成功率Mos ,采用异步开关架构,使其在应用时仅需极少的外围器件,可有效减少整 ...

最新文章

  1. Gitflow工作流程
  2. vue路由query和params的区别
  3. (10)FPGA面试题多位信号同步问题
  4. 【CentOS】 Nginx+jdk+tomcat 环境搭建
  5. [转]js模块化(一)
  6. CentOS6.x安装zabbix
  7. php对象在内存中的分配
  8. python实现sm3加密算法
  9. 如何写好一篇技术博客
  10. 【题解】HNOI-2015落忆枫音
  11. 英语名词复数s的发音规则
  12. Python 第二章 字典
  13. Open Aspect Target Sentiment Classification with Natural Language Prompts
  14. 程序员的四个暑假:从打工开始到打工结束
  15. 5G通信设备安装,不仅是技术活,更是一门艺术活!(干货图文大全)
  16. 导师吐槽:我怎么摊上了这么个极品研究生!
  17. Unity: How to build and debug external DLLs
  18. 广东省vb计算机二级证书,广东省2019下半年计算机二级考试教程:VB语言程序设计...
  19. 虚拟机克隆盘磁盘空间不足解决方法
  20. autoware 使用Bug汇总

热门文章

  1. 5G学习笔记之NGAP
  2. Struts1、Struts2、Hibernate、Spring框架工作原理介绍
  3. 游戏蓝牙耳机怎么选?游戏大神推荐四款好用的游戏蓝牙耳机
  4. IntelliJ IDEA插件开发指南(一)
  5. Carla 使用神经网络训练自动驾驶车辆---数据采集部分
  6. 写了一个java的连点器程序 但是有时候点击的时候无法暂停 并且暂停之后无法再次运行
  7. ubuntu18.04下pass-through直通realteck PCI设备到qemu-kvm虚拟机实践
  8. java 实现pdf转化为批量图片(两步走)
  9. python爬取天天基金历史净值_用Python抓取天天基金网基金历史净值数据
  10. 使用vueAdmin-template,java后台不能接收到参数