linux关机外围芯片未复位(高通平台)

问题场景

linux内核版本:Linux version 4.14.117(查看内核版本信息命令 cat /proc/version)
我们使用的充电ic,需要在关机流程中进行复位。在.remove中已经调用了复位充电IC的函数,为什么芯片没有复位?

问题的排查与解决

  • 初步猜测关机并没有走remove的流程,验证猜想,在remove函数中增加打印,走关机流程,查看LOG信息,并未找到增加的打印LOG。
  • 上网查找相关资料,发现关机需要走shutdown流程,增加模块,增加打印信息,信息打印成功,增加复位芯片操作,关机复位成功。

问题解决

方法:增加shutdown流程

注意

shutdown返回值为void,开始抄remove流程未修改,导致编译报错。。。细节还是需要注意!!!

简单分析

  • probe的执行有两个时机,一是设备创建时,二是驱动注册时;remove相对也有两个执行时机,一是设备注销时,二是驱动注销时。
  • 系统关机或重启的过程中,会调用设备驱动的shutdown函数来完成设备的关闭操作,有需要的设备可以在驱动中定义该函数。
static struct i2c_driver bq25890_driver = {
 .driver = {
  .name = "bq25890-charger",
  .of_match_table = of_match_ptr(bq25890_of_match),
  .acpi_match_table = ACPI_PTR(bq25890_acpi_match),
  .pm = &bq25890_pm,
 },
 .probe = bq25890_probe,
 .remove = bq25890_remove,
 .shutdown = bq25890_shutdown,
 .id_table = bq25890_i2c_ids,
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值