全志平臺Tina系統I2C struct 缺少class定義導致的probe失敗等問題解決方法
阿新 • • 發佈:2018-12-09
全志平臺Tina系統I2C struct 缺少class定義導致的probe失敗等問題
【適用範圍】
全志Tina系統平臺
【問題現象】
在移植、編寫I2C及相關驅動時,在其它平臺上已經驗證過了的驅動移植到我們平臺後經常無法正常detect到I2C裝置。
【復現步驟】
編譯後檢視dmesg列印,無相應I2C 匹配成功資訊,串列埠中也無法搜到生成的裝置節點。
【原因分析】
在我們的I2C控制器程式碼中,i2c_detect函式中在最初始處有如下程式碼:
這就意味著在i2c檢測和匹配過程中,如果class成員沒有進行設定,預設值將直接導致檢測的失敗而結束。
而在其它平臺上並沒有這個問題。
鑑於I2C驅動不由我們維護,不推薦修改i2c-core.c
【解決辦法】
在I2C驅動中,通常定義的i2c_adapter 或 i2c_driver 結構體中,必須包含.class成員,實際定義如下即可,如ac108驅動:
I2C_CLASS_HWMON,硬體監控類,如lm_sensors等; I2C_CLASS_DDC,DDC是數字顯示通道(Digital Display Channel)的意思, 通常用於顯示裝置資訊的獲取; I2C_CLASS_SPD,儲存類的模組;