跳至主要内容

I2C Hotplug

i2c-hotplug

處理可熱插拔的 I2C 裝置(例如插上/拔除的模組、cable card、riser),在裝置出現/消失時動態建立或移除對應的 I2C bus 與 device node,而不需重開機。

概念:

  • 由一支「偵測用」訊號(presence GPIO 或 interrupt)觸發。
  • 插入時:動態把子 bus(常在 i2c mux 之後)與其上的 device 加入 kernel。
  • 拔除時:移除對應 device,釋放資源。

在 OpenBMC / device tree 生態,常見做法:

  • i2c-mux + overlay 或 driver 在偵測到 presence 後掛載子 bus。
  • 搭配 Entity Manager 依偵測結果動態產生該裝置的設定與 sensor。

重點是「拔除時要乾淨移除」,避免殘留 stale 的 /sys/bus/i2c/devices/... 造成讀取錯誤。

相關筆記:entity_manager、device_tree。