我正在尝试初始化ADT746x芯片的状态寄存器。Linux内核有这个芯片的hwmon驱动程序,但是它没有配置。
当设备准备好通过sys接受i2c命令时,我需要初始化几组寄存器。这些寄存器将温度和电压传感器配置为有效,并将它们标记为监视。
有这些init代码的正确位置是什么?探测()或检测()或其他任何地方的用户?
发布于 2019-09-18 14:23:03
在普通内核中,这类传感器的驱动程序很少,即驱动程序/hwmon/adt7462.c(在内核文档中)、驱动程序/hwmon/ in 85.c(在内核文档中)、驱动程序/hwmon/lm90.c(在内核文档中)和驱动器/macintosh/therm_adt746x.c。
它们都通过sysfs拥有相应的接口:对于hwmon来说,它是一个通用的接口,而对于Macintosh驱动程序则是一个特定的接口。
要实现您所要求的目标,以下选项是可能的:
对于第二个变体,最好的选择是将代码放在->probe()回调中。对于hwmon驱动程序,在调用hwmon_device_register()之前这样做是有意义的,因为最后一个驱动程序将公开用户空间可能立即使用的sysfs属性。
->detect()专用于允许I 2 C核心检查驱动程序是否在总线上看到任何受支持的设备。在这个阶段,还不知道有问题的设备是连接的。即使在检测到了一些强制性的初始化步骤之后,也可能会忽略一些步骤,因此不建议在此阶段与设备进行通信。
https://stackoverflow.com/questions/57906912
复制相似问题