I2C设备驱动程序从用户空间绑定控制(旧内核)

注意:只有当你在处理内核2.6中发现的一些旧代码时,这一节才有用。如果您使用的是最新的内核,您可以安全地跳过这一节。

直到内核2.6.32,许多I2C驱动程序都使用 <linux/i2c.h> 提供的帮助宏,它创建了标准模块参数,让用户控制驱动程序探测I2C总线和连接到设备的方式。这些参数被称为probe(让驱动程序探测一个额外的地址),force(强制将驱动程序连接到给定的设备上)和 ignore(防止驱动程序探测给定地址)。

在将I2C子系统转换为标准设备驱动程序绑定模型之后,很明显,不再需要这些每个模块的参数,可以进行集中实现。新的基于sysfs的接口在如何实例化I2C设备一文“方法4:从用户空间实例化”中进行了描述。

下面是旧模块参数到新接口的映射。

将驱动程序连接到I2C设备

旧方法(模块参数):

# modprobe <driver> probe=1,0x2d
# modprobe <driver> force=1,0x2d
# modprobe <driver> force_<device>=1,0x2d

新方法(sysfs接口):

# echo <device> 0x2d > /sys/bus/i2c/devices/i2c-1/new_device

阻止驱动程序连接到I2C设备

旧方法(模块参数):

# modprobe <driver> ignore=1,0x2f

新方法(sysfs接口):

# echo dummy 0x2f > /sys/bus/i2c/devices/i2c-1/new_device
# modprobe <driver>

当然,在加载驱动程序之前实例化虚拟设备是很重要的。虚拟设备将由i2c核心自己处理,以防止稍后其他驱动程序绑定到它。如果在有问题的地址上有一个真实的设备,而您想要另一个驱动程序绑定到它,那么只需传递有问题的设备的名称,而不是虚拟的。

posted @ 2021-08-20 11:11  闹闹爸爸  阅读(145)  评论(0编辑  收藏  举报