旧内核中来自用户空间的I2C设备驱动程序绑定控制¶
注意
注意:本节仅适用于处理在 kernel 2.6 中找到的一些旧代码。 如果您使用更新的内核,您可以安全地跳过本节。
在 kernel 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
设备。 dummy 设备将由 i2c-core 本身处理,从而防止其他驱动程序稍后绑定到它。 如果在有问题的地址上有一个真实的设备,并且您希望另一个驱动程序绑定到它,那么只需传递相关设备的名称,而不是 dummy
。