华为mu739来电唤不醒问题调试记录

问题描述:

     在我的系统中,目前modem通过外部中断可以唤醒AP。当AP进入睡眠的时候,如果modem收到incoming call或者incoming sms或者其他网络事件,modem就会拉高拉低一下AP的外部中断脚,这时候,AP就会被wakeup了。现在的问题是,当incoming call或者incoming SMS来的时候,可以唤醒AP,但系统只进入到Resume状态,然后迅速又进入睡眠,系统不会从resume状态切换到systemon状态,或者说android被唤醒之后发现没有什么事件需要它处理,然后又进入睡眠了。

 

     因为RIL源码华为不开放,只能参照原生态的RIL来跟踪问题,在原生的RIL里面,没有对modem的这个中断做任何处理。在/kernel/power/suspend.c的suspend_finish()函数中,使用pm_notifier_call_chain(PM_POST_SUSPEND);广播一个系统从suspend状态退出的notify,发出这个消息后RIL进程就唤醒了,然后RIL不断POLLING USB端口的数据,如果发现数据端口有incoming call和incoming sms事件,就告诉android有事件要处理,这时候android就会写一个on到/sys/power/state中,这时候系统才真正的唤醒,开始走linux resume和late resume的流程,打开LCD,处理incoming call,打开APK显示来电等。现在的状况是,RIL在被唤醒后,POLLING USB数据端口,发现没有任何数据,也就不会告诉android有incoming call事件了,android发现没有什么事情需要处理,就又进入睡眠。查看resume后的打印信息发现,kernel resume后连接modem的usb reset了,LOG如下:

[   79.970069] usb 1-3: reset high speed USB device number 2 using s5p-ehci
[   80.315189] GPS: mt3326_gps_resume:
[   80.317320] GPS: mt3326_gps_set_suspend: issue sysfs_notify : d2369270
[   80.390143] usb 1-3.2: reset high speed USB device number 3 using s5p-ehci
[   80.502360] PM: resume of devices complete after 909.113 msecs

 

这就不难解释为什么RIL POLLING不到数据了。由于没有RIL源码,无法DEBUG到RIL POLLING的信息,没办法100%确认这个结论。
所以,个人认为,来电无法唤醒的这个问题应该是HSIC接口RESET导致的,如果USB掉电->HSIC RESET无法避免,那就只有修改RIL和MODEM FIRMWARE,增加握手信号,在MODEM和RIL都确认系统唤醒可以正常工作后再开始数据业务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suntao222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值