ltr_558als 光线传感器和接近传感器 probe 后默认开启导致的系统无法休眠

时间:2020-12-03 19:49:26

这两天看一个bug,其他同事怀疑是因为光线传感器每隔两秒产生一个中断导致系统无法休眠。我开始不怎么相信这种说法,因为这个普通的gpio中断怎么会导致系统无法休眠呢?但是它提到我们的这个gpio中断会申请一个wake-lock 。。。。这我就需要自己研究研究了。不过这会儿没时间仔细跟代码了。因为我还有好几个bug需要处理。这个问题等我后面有空了,仔细看看。

此处待续。。。。。


没有人知道这个ltr_558als的代码写的有多烂了。我真想重写一下。说实话,有很多代码我都想重新搞一下,因为你知道,哥有强迫症,有强迫症的人大都有洁癖,有强迫症的人大都追求绝对的完美,而哥把这些都占全了。我现在就差关门时把门把手给拽掉了。

我前面已经发现了,当开机后,上层会把light sensor打开,哪怕我已经选择了不自动调节亮度!我没有高明白还有什么地方会用到光传感器,但是上层每次开机都会打开光传感器,不过这个和我的驱动没啥关系,驱动只是给他提供一个打开的方法而已,上面爱打开就让他打开吧。

然后当我按下power键后,系统开始休眠,我也看到了上层关闭light sensor的动作,这很好,说明上层的逻辑很正确。

现在的问题是还有另外一种情况,就是系统已经休眠了,让后因为BP连着,BP想周期性的把系统唤醒,然后扫扫网络。。。。本来这个和AP貌似有毛关系啊。BP醒了扫扫网络和AP有什么关系啊。干嘛把AP也折腾醒了啊???

这就是玄机。。。别人的机器AP 和 BP 会有两个独立的CPU,那么BP扫网的时候和AP就真的毛关系也没有了,AP还会睡的香,但是我们的机器只有一个CPU,所以他就必须要醒了。。。

这时候系统被唤醒了。然后ltr_558als也跟着折腾起来了。。。但是这时候屏幕都没有亮,,android的那套流程都走不了,这下没人关闭558了。。。。所以系统睡不了。。

咋办呢?probe的时候不要让558默认开启了,让他关掉。这样只有上层才会打开或者关闭他。558自己再也不能偷偷跑了。。。

问题解决。