1. 程式人生 > >全志平臺Tina系統I2C struct 缺少class定義導致的probe失敗等問題解決方法

全志平臺Tina系統I2C struct 缺少class定義導致的probe失敗等問題解決方法

全志平臺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,儲存類的模組;