如何分析:MT6739平台(手机)老化充电电流突然降低到0并且电流不稳

如何分析:MT6739平台(手机)老化充电电流突然降低到0并且电流不稳

1.抓取实时mtklog,打开kernel log
搜索Thermal发现:
<5>[ 671.163625] (1)[971:kworker/u8:17][Thermal/TC/bcct]chrlmt_set_limit 76ca66e5 -1 1650 0
<5>[ 671.163659] (0)[31:kworker/u9:0][Thermal/TC/bcct]chrlmt_set_limit_handler -1 1650
.
.
.
<5>[ 721.084706] (2)[973:kworker/u8:19][Thermal/TC/bcct]chrlmt_set_limit 76ca66e5 -1 250 0
<5>[ 721.084720] (3)[31:kworker/u9:0][Thermal/TC/bcct]chrlmt_set_limit_handler -1 250
<5>[ 731.483837] (2)[964:kworker/u8:10][Thermal/TC/bcct]chrlmt_set_limit 76ca66e5 -1 0 0
<5>[ 731.483870] (3)[31:kworker/u9:0][Thermal/TC/bcct]chrlmt_set_limit_handler -1 0
似乎触发了thermal限流机制,电流从3A循环降低到0
2.使用decrypt工具打开:
device\mediatek\mt6739\thermal.config
放到decrypt工具目录下,修改名字为thermal.conf.mtc
点击decrypt_all_config.bat脚本即可生成thermal.conf.txt
再打开thermal.conf.txt
找到/proc/driver/thermal/tzbts
修改bcct策略为no-cooler:
6 100000 0 mtktsAP-sysrst 90000 0 mtk-cl-shutdown00 61000 0 no-cooler 50000 0 no-cooler 0 0 no-cooler 0 0 no-cooler 0 0 no-cooler 0 0 no-cooler 0 0 no-cooler 0 0 no-cooler 1000
重新拖动encrypt.exe thermal.conf.txt thermal.conf会重新生成thernmal.conf,然后make生效
3.继续排查发现,老化后不再出现降低到0的现象了,测量charger ic波形,似乎出现了拉不低到0v的现象,应该是i2c驱动能力/电流不够导致,修改:
— a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6739/src/drivers/i2c.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6739/src/drivers/i2c.c
@@ -902,7 +902,8 @@ int i2c_hw_init(void)
/* SDA1[7:6], SCL1 [5:4] /
/
SDA2[11:10], SCL2 [9:8] /
/
SDA3[15:14], SCL3 [13:12] */

  • I2C_SET_REG32(0x10002A70, 0xFFFF, 0x5555);
  • //I2C_SET_REG32(0x10002A70, 0xFFFF, 0x5555);
  • I2C_SET_REG32(0x10002A20, 0xFFFF, 0x0000);//加强i2c驱动能力,解决i2c电压拉不低的问题
    再次测量,i2c波形规则了
    4.根据charger ic规格书发现,该充电IC还有一个30s的看门狗机制,需要在30s内喂狗,发现
    似乎kernel部分在kernel-4.14\drivers\power\supply\mediatek\charger\charger_class.c定义的

int charger_dev_kick_wdt(struct charger_device *chg_dev)

{

if (chg_dev != NULL && chg_dev->ops != NULL && chg_dev->ops->kick_wdt)

    return chg_dev->ops->kick_wdt(chg_dev);



return -ENOTSUPP;

}

没有调用到驱动中的static struct charger_ops hl7005_chg_ops

.kick_wdt = hl7005_reset_watch_dog_timer,

所以看门狗喂狗也有点问题,

在dump_register()的地方十秒喂一次狗,问题已解决,恒流阶段充电电流一直稳定,老化也正常了。

所用平台:手机MT6739
author:kzh

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值