2017-02-03 20 views
0

我試圖瞭解關於Linux內核4.4編解碼器驅動程序代碼。編解碼器使用i2c總線連接到聲卡,並將編解碼器驅動程序代碼編寫爲I2C客戶端。客戶的結構i2c_driver包含i2c_device_id信息和of_device_id信息。當兼容結構的of_device_id比賽與兼容串的設備節點信息如果我們已經使用struct of_device_id,struct i2c_device_id的用途是什麼?

現在按照我的理解客戶的探測功能將被調用。那麼有什麼用struct i2c_device_id

注:編解碼器驅動程序使用設備樹。

+1

([I2C設備ID表中的驅動器\ _data構件的使用方法]的可能的複製http://stackoverflow.com/questions/24606448/usage-of-driver-data-member-of-i2c-device-id-表) –

回答

0

i2c_device_id結構由i2c_driver結構引用; I²C框架使用它來查找要連接到特定I²C器件的驅動器。這與of_device_id信息如何用於查找設備樹中描述的特定設備的驅動程序相似。

隨着驅動程序的編寫者,你真的不知道該怎麼編解碼器實際上將在後面列舉(I²C或),所以你應該提供兩條信息。

當您使用MODULE_DEVICE_TABLE()時,i2c_device_id結構中的值用於查找要加載的模塊。 (這是不可能在既無熱插拔也不模塊的嵌入式系統發生,但如果編解碼器是一個模塊化系統曾經使用(例如,用於測試),自動加載可能無法正常工作。)
此外,所提供的信息可以使用MODULE_DEVICE_TABLE()來確定某些特定硬件需要哪些內核配置選項。

相關問題