1

每个人。我正在为我的 Galaxy Mini 2 移植 3.0.x 内核,我已经能够自己解决大部分问题,但振动器驱动程序中的一件事。我是在 Linux 内核中工作的新手,所以我自己无法解决它。每当启用振动器时,都会出现在日志中:https ://gist.github.com/TheWhisp/6133946

这是振动器驱动程序的源代码:https ://github.com/TheWhisp/android_kernel_samsung_msm7x27a/blob/jb-3.0/arch/arm/mach-msm/msm_vibrator_samsung.c

如果我是正确的,我已将其缩小到从第 176 行开始的函数

谢谢,任何帮助将不胜感激。:)

4

1 回答 1

3

尽管他的分析是有道理的,但我不同意 rakib 提出的解决方案。

msm_vibrator_power() 在 hrtimer 处理程序中调用。并且 hrtimer 在软件 irq 上下文中运行。

OOPS 信息抱怨 msm_vibrator_power() 调用 _regulator_get() ,它在其中使用互斥锁。

此问题的解决方案是:避免在 hrtimer 处理程序中使用任何阻塞/休眠功能。这意味着重新设计 hrtimer 处理程序,避免调用 mutex() 类型的阻塞/休眠函数。

于 2013-08-02T02:26:00.057 回答