解决bq2416x休眠后USB充不进电

       前两天,我的机器一直可以进行USB充电,而且都充满了。就没太在意USB充电的问题。

但是最近,经常发现USB充不了电。于是用cat /proc/driver/deb2416x看一下寄存器配置,果然发现负责USB充电电流的寄存器2的值不对。

但是一直没找到哪个地方能设置这个值,因为这个值在模块初始化的时候会进行设置,之后代码里没有任何地方操作该寄存器。

       问了下老大,他说应该是看门狗超时造成的。起初我不相信,因为其他的寄存器的值都是正确的。唯独寄存器2不对。但是其他寄存器都有恢复操作(在一个work里面进行设置,每20秒执行一次,也进行看门狗复位)。

        其实,在这个work里面,也有对寄存器2的检查操作。但是检测的部分太少了,如果该寄存器的其他位改变了,那么还就真充不了电了。


先看看如何改代码

--- a/drivers/power/bq2416x_charger.c
+++ b/drivers/power/bq2416x_charger.c
@@ -353,16 +353,18 @@ static int bq2416x_check_reg02(struct bq2416x_device_info *di, int force)
                 }
         }
         else {
-                if ((!(Reg2Val & 0x4)) || force) {
-                        //Reg2Val &= ~(1<<7);
-                  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值