2014-10-13 3 views
1

У меня есть системы Intel. Я пытаюсь загрузить at24.ko и i2c-mux-pca9541.ko. Оба модуля имеют функции зонда, которые не вызываются. в соответствии с Документацией, мне нужно вызвать i2c_registetr_board_info в arch_init. , но я не знаю, где это сделать для системы Intel (то есть, какие файлы). Я не вижу никаких примеров в Интернете. может кто-нибудь предоставить указатель на файл, который я добавлю этот вызов. Если это неправильный подход, сообщите мне.зонд i2c не вызывается .... не уверен, куда звонить i2c_register_board_info

заблаговременно.

+0

Какую версию ядра вы используете? Используете ли вы дерево устройств? Является ли интерфейс I2C определенным в дереве устройств? –

+0

Привет, я использую 3.14. Я не использую дерево устройств. Я попытался добавить i2c_register_board_info в i2c-i801 (так как это адаптер i2c), но получил ошибку компиляции, в которой указано, что «i2c_register_board_info» не определен. Мне пришлось явно экспортировать эту функцию, чтобы обойти проблему компиляции, и до сих пор не может заставить зонд быть для системы intel, кажется, что есть что-то еще, что можно сделать .. – vcho

+0

«i2c_register_board_info» определяется в драйверах/i2c/i2c-boardinfo.c, поэтому его размещение в i2c-i1801, как и вы, не является решением. У вас есть CONFIG_I2C_BOARDINFO включен в вашем файле .config? –

ответ

3

Зонд не вызывается, потому что ядро, которое может быть связано с драйвером, не найдено «подходящим» устройством. Существуют различные способы предоставления информации об устройстве в ядро. Они рассматриваются следующим образом:

Если это для целей тестирования, вы можете зондировать устройства I2C через sysfs:

echo <device_name> <i2c_address> > /sys/bus/i2c/devices/i2c-0/new_device

device_name: имя устройства I2C. Должен быть тот, который используется в драйвере.

i2c_address: Адрес i2c устройства согласно спецификации устройства

Приведенная выше команда предполагает, что шина I2C «0» является тот, в котором крепится устройство.

Помимо этого, существуют другие способы зондирования устройства. Вы можете указать информацию об устройстве через дерево устройств или путем вызова i2c_register_board_info(). Вы можете создать простой модуль, который создает структуру i2c_board_info и регистрирует его с помощью i2c_register_board_info(), а затем вставьте модуль таким образом, чтобы устройство было «известно» ядру и привязывало устройство к его драйверу. Это не обязательно в кодах init.

Я рекомендую вам пройти через следующую документацию зондировании устройств I2C: http://lxr.free-electrons.com/source/Documentation/i2c/instantiating-devices

+0

спасибо, это помогает мне много. но где передать 'platform_data'' i2c_board_info' – yurenchen

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