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核心自己处理,以防止稍后其他驱动程序绑定到它。如果在有问题的地址上有一个真实的设备,而您想要另一个驱动程序绑定到它,那么只需传递有问题的设备的名称,而不是虚拟的。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/15165578.html