设备树 - 探测驾驶员并避免竞争条件

时间:2017-05-25 20:58:48

标签: linux linux-device-driver spi device-tree

我有一个连接到Linux主板的触摸屏设备。它是基于SPI的设备。显示效果很好,但触摸屏(使用STMPE610控制器)非常不可靠 - 它适用于不同的主板和系统,不适用于其他主板和系统。已发现的是屏幕在设备探测期间失败(错误-22)。驱动程序探测失败。

SPI可以在各种模式下进行电气配置/驱动(有4个),触摸控制器似乎有点处于未知状态。

此外,计算机还试图配置驱动屏幕的SPI引脚(根据具体情况将它们拉起或拉下它们)。

问题 - 我需要知道Linux设备驱动程序的做法是什么?延迟探测或如何解决竞争条件,以便在棘手的SPI从设备上进行驱动程序探测。 Linux DeviceTree是否提供任何此类功能,例如等待延迟功能?

我基本上需要延迟驱动程序探测器UNTIL系统已成功配置电气(计算机)和从属设备(触摸屏)最终确定它是什么SPI模式。

1 个答案:

答案 0 :(得分:1)

之前我遇到过类似的问题,那就是两名车手之间的竞争状态。我所做的是将usleep_range(1000000, 12000000);添加到驱动程序内的探测函数中。这将给你大约10秒的延迟。

在您的情况下,您可以尝试将usleep_range(1000000, 12000000);放入触摸屏驱动程序中的探测功能,以便将驱动程序加载10-12秒后来。您可以对其进行调整,以便首先加载 SPI 并分配触摸屏驱动程序所需的所有资源并准备好使用。

这不是一个解决问题的好方法,只能节省时间,因为有可能会因为某些原因导致 SPI 驱动程序在10秒之后加载而失败。