charger在充电达到75%停止充电

具体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);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值