2016-01-13 2 views
3

Мне интересно, есть ли API ядра, который позволяет получить struct device на основе нескольких параметров. Я использую основное ядро, версия 3.3.API Linux Kernel для получения структурного устройства из драйвера платформы

Вот ситуация: Я зарегистрировал платформу устройства A и установить некоторые данные драйвера, связанные с А. Есть несколько экземпляров A с различными ID, так что А (1), A (2), A (3). ..

Теперь я регистрирую платформерное устройство B. Драйвер для B должен владеть конкретный экземпляром struct device, связанные с A(1) или A(2) или A(3) ...

Так что думайте об этом, как B владеющих A(n) в некотором роде. Один из способов, которым я мог бы это сделать, заключается в том, что драйвер A имеет глобальный массив struct device, который отслеживает все зарегистрированные устройства. Однако с чем-то общим, как драйверы платформы, мне интересно, предоставит ли ящик API для получения этого на основе нескольких параметров, таких как platform drivername и связанных с ними id.

Спасибо!

+0

Теперь единственный способ - установить отношения между родителями и дочерними элементами. Существует одно исключение, когда устройство является Multi Functional, и в этом случае среда MFD будет полезна. Из вашего вопроса неясно, какие отношения имеют устройства (A и B). – 0andriy

+1

Я бы сказал, что драйвер MFD не будет подходящей моделью моей ситуации. Я скорее всего последую за ответом Федерико и создам свой собственный метод поиска. –

ответ

0

Не уверен, что он существует. На самом деле я не вижу, какие параметры можно использовать для выбора экземпляра struct device.

Я думаю, что вы должны реализовать свой собственный метод поиска в драйвере A. В драйвере A вы отслеживаете (глобальную переменную) всех экземпляров.

Экспорт из драйвера А функция find_instance(<parameters>) и использовать его в драйвер B.

Если я хорошо помню, что-то подобное на месте в рамках V4L2 для того, чтобы найти I2C устройства.

+0

Если это дерево устройств или платформа на основе ACPI, вам не нужно делать таких, чтобы вы могли обеспечить такую ​​зависимость в таблице. Жесткий случай - это временные зависимости. Я не уверен, что начинать тему хотелось бы. – 0andriy

+0

, конечно, но если это так, надеюсь, он знает, что это уже сделано в дереве устройств :) Но я думаю, что это не так, потому что он использует ядро ​​3.3 (дерево устройств статично), и он сказал, что он регистрирует устройства позже. – Federico

+0

Федерико правильный. К сожалению, я «застрял» с 3.3 и статическим деревом. Я решил проблему, создав свои собственные функции a_get и a_put в драйвере A, похожие на что-то вроде clk_get или clk_put, но для struct device. благодаря –

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