舊核心中來自使用者空間的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。