旧内核中从用户空间控制 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>
当然,重要的是在加载驱动程序之前实例化 dummy
设备。虚拟设备将由 i2c-core 本身处理,从而防止其他驱动程序稍后绑定到它。如果问题地址上有一个真正的设备,并且您希望另一个驱动程序绑定到它,那么只需传递有问题的设备的名称,而不是 dummy
。