linux 设备树-探测驱动程序并避免竞态条件

5hcedyr0  于 2023-10-16  发布在  Linux
关注(0)|答案(1)|浏览(126)

我有一个连接到Linux板的触摸屏设备。它是一个基于SPI的器件。显示器工作良好,但触摸屏(使用STMPE 610控制器)非常不可靠-它在不同的电路板和系统上工作,在其他上不工作。发现器械探测期间屏幕失败(错误-22)。驱动探头故障。
SPI可以在各种模式下进行电气配置/驱动(有4),触摸控制器似乎处于某种未知状态。
此外,计算机还试图配置驱动屏幕的SPI引脚(根据具体情况,将其向上拉或向下拉)。
问题-我需要知道Linux设备驱动程序的做法是什么,以延迟探测或如何解决竞争条件,以便驱动程序探测一个麻烦的SPI从设备可以工作。Linux设备树是否提供任何此类功能,例如等待延迟功能?
我基本上需要延迟驱动程序探测器,直到系统成功地配置了自己的电气(计算机)和从设备(触摸屏)已经最终决定了什么SPI模式。

vulvrdjw

vulvrdjw1#

我以前也遇到过类似的问题,那就是两个车手之间的比赛状态。我所做的是将usleep_range(10000000, 12000000);添加到驱动程序内部的probe函数中。这将给予你大约10秒的延迟。
在您的情况下,您可以尝试将usleep_range(10000000, 12000000);放入触摸屏驱动程序中的probe函数中,这样驱动程序将在10 - 12秒后加载。您可以调整它,以便首先加载SPI,并分配触摸屏驱动程序所需的所有资源并准备使用。
这不是一个好方法来解决问题,只有保存时间,因为有可能会失败,如由于某些原因,SPI驱动程序加载晚于10秒。

相关问题