网上的相关的博客太少了,很多都是转发的,实际百度搜到的都是同一篇内容。。。真是太难了
能找到点相关的内容也不错啊,感谢原博客的思路:
https://blog.youkuaiyun.com/stoic163/article/details/80611626
------------------------------------------------------------------------------------
问题背景:
我这有机器,灭屏休眠状态能充电,android唤醒状态,用充电器AC充电,有时不能充电。
(表现为,充电电流为0,状态栏电池百分比下降,处于放电状态)
log:
[416:VSyncThread_0][name:primary_display&][DISP]use fake vsync: lcm_connect=0, has_vsync=1
[471:kworker/u8:5][name:mtk_cooler_bcct_v1&][Thermal/TC/bcct]chrlmt_set_limit c2436380 -1 0 0
[5277:kworker/u9:4][name:mtk_cooler_bcct_v1&][Thermal/TC/bcct]chrlmt_set_limit_handler -1 0
[5277:kworker/u9:4][name:mtk_charger&]charger_manager_set_input_current_limit: dev:mtk-cooler-bcct idx:0 en:-1
[5277:kworker/u9:4][name:mtk_switch_charging&]force:0 thermal:-1,50 pe4:-1,-1,0 setting:3200 0 type:4 usb_unlimited:0 usbif:0 usbsm:0 aicl:-1
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_update_bits: bq2560x bq2560x_update_bits
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_set_ichg: bq2560x_set_ichg 0
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_set_chargecurrent: bq2560x bq2560x_set_chargecurrent
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_update_bits: bq2560x bq2560x_update_bits
[5277:kworker/u9:4][name:mtk_charger&]charger_manager_set_charging_current_limit: dev:mtk-cooler-bcct idx:0 en:0
[5277:kworker/u9:4][name:mtk_switch_charging&]force:0 thermal:-1,0 pe4:-1,-1,0 setting:3200 0 type:4 usb_unlimited:0 usbif:0 usbsm:0 aicl:-1
[416:VSyncThread_0][name:primary_display&][DISP]use fake vsync: lcm_connect=0, has_vsync=1
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_update_bits: bq2560x bq2560x_update_bits
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_set_ichg: bq2560x_set_ichg 0
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_set_chargecurrent: bq2560x bq2560x_set_chargecurrent
[5277:kworker/u9:4][name:bq2560x_charger&][bq2560x]:bq2560x_update_bits: bq2560x bq2560x_update_bits
[5277:kworker/u9:4]qyc, chrlmt_bat_chr_curr_limit=0, forbid
[5277:kworker/u9:4][name:mtk_charger&][charger_manager_enable_high_voltage_charging] already set: 0 1
[249:charger_thread]mt6357_get_auxadc_value: 17 callbacks suppressed
[249:charger_thread][name:pmic_auxadc&][mt6357_get_auxadc_value] ch_idx = 2, channel = 3, bat_cur = -4186, reg_val = 0x5ee, adc_result = 667
[249:charger_thread][name:mtk_charger&]Vbat=3926,Ibat=-4318,I=107,VChr=5052,T=24,Soc=63:62,CT:4:4 hv:1 pd:0:0
[249:charger_thread][name:pmic_auxadc&][mt6357_get_auxadc_value] ch_idx = 2, channel = 3, bat_cur = -4070, reg_val = 0x5ed, adc_result = 666
[249:charger_thread][name:pmic_auxadc&][mt6357_get_auxadc_value] ch_idx = 1, channel = 2, reg_val = 0x4c2, adc_result = 535
[249:charger_thread][name:pmic_auxadc&][mt6357_get_auxadc_value] ch_idx = 1, channel = 2, reg_val = 0x4bf, adc_result = 533
[249:charger_thread][name:mtk_charger&]tmp:24 (jeita:0 sm:0 cv:0 en:0) (sm:1) en:1 c:0 s:0 ov:0 1 1
分析:
log关键词:
Thermal/TC/bcct
[name:mtk_switch_charging&]force:0 thermal:-1,50 pe4:-1,-1,0 setting:3200 0 type:4
usb_unlimited:0 usbif:0 usbsm:0 aicl:-1
--------------------
上面force这条log很关键,
force: pdata->force_charging_current
thermal: pdata->thermal_input_current_limit, pdata->thermal_charging_currrent_limit
------------
休眠和唤醒分别看这条log
发现
休眠时 thermal:-1, -1, 理解的意思就是充电电流无限制
唤醒并且充电异常时 thermal:-1,3000, 然后thermal_charging_currrent_limit从3000一直下降到0
这个log和上面那个灵感博客差不多,所以把问题原因定在mtk Thermal温控机制导致的,温度过高,
然后charger IC bq2560x把充电电流设置为0.
验证下是不是,温度过高,导致的。拿个小风扇对着板子吹吹吹,然后就会发现:
这个 thermal第二个参数,pdata->thermal_charging_currrent_limit 神奇地自己上升到预设值。充电电流变大,电又能冲进去。
然后怎么解决温度升高的问题呢?
从硬件上解决就是处理散热问题,别发热这么大
从软件,怎么改善这个问题:
1.直接关闭abcct //这个不知道行不,没有thermal温度控制,实际不知道会不会出问题
2.提高触发的这个温度
3.依旧让它触发之后,但是设置减少到最小充电电流不为0,为一个小电流充电,后面板子热量下降,自己电流应该会涨回去
软件改的话,用 mtk Thermal_config_tool打开import android/device/mediatek/mt6739/下面的thermal.conf和thermal.eng.conf
(这两个文件内容是一样的),然后修改regular thermal policy里面的mtktsAP列和Irregular thermal policy里面abcct。
Trips Points应该就是温度,然后从修改报错来看,mtktsAP列从上到下Trips Points是要降序否则生成报错,然后这个值不能超过一个最大值,最大值是Irregular thermal policy里面对应的Target Temp。(自己摸索的就是这样。。。不知正确与否)
改了之后,就是这样:
thermal:-1, -1, 和休眠时log一样,应该没有触发thermal机制,我的充电器的电是充进去了,没出现之前的问题。
写到这儿吧,可能理解操作有偏差.