2017-02-03 37 views
0

Я пытался понять код драйвера кодека на Ядро Linux 4.4. Кодек подключается к звуковой карте с использованием шины i2c, а код драйвера кодека записывается как клиент I2C. Клиент struct i2c_driver содержит как i2c_device_id информация и of_device_id информация.Что такое struct i2c_device_id, если мы уже используем struct of_device_id?

Теперь в соответствии с функцией зондовой моего понимания клиента будет вызываться, когда совместимая строки структуры of_device_id матчей с совместимой строки информации узла устройства. Тогда в чем польза struct i2c_device_id?

ПРИМЕЧАНИЕ: Драйвер кодека использует дерево устройств.

+1

Возможный дубликат [использования драйвера \ _data члена таблицы идентификаторов устройств I2C] (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 или OF), поэтому вы должны предоставить обе части информации.

При использовании MODULE_DEVICE_TABLE() значения в структуре i2c_device_id используются для загрузки модуля. (Это вряд ли произойдет во встроенной системе, которая не имеет ни hotplugging, ни модулей, но если кодек когда-либо используется в модульной системе (например, для тестирования), автозагрузка может не работать.)
Кроме того, информация, предоставленная MODULE_DEVICE_TABLE() может использоваться для определения того, какие параметры конфигурации ядра необходимы для определенного оборудования.

 Смежные вопросы

  • Нет связанных вопросов^_^