У меня есть устройство i2c, встроенное в плату, для которой я разрабатываю. Он отвечает на один адрес, но первый байт (иногда называемый «команда» или «регистр») диктует функцию, адресованную.Написание модулей (я) ядра для многофункционального устройства i2c - одного или нескольких?
Я могу использовать устройство из пользовательского пространства с i2cset/get/detect
, поэтому я знаю, что все работает.
Устройство управляет светодиодами (и поэтому должно появиться в /sys/class/leds
).
Он также имеет GPIO (и поэтому должен появиться в /sys/class/gpio
).
Есть еще полдюжины различных мест, где должны появляться функции устройства.
Должен ли я закодировать это как:
- Один модуль i2c клиента, и найти способ, чтобы получить вещи, перечисленные в нужных местах в
/sys
. - Один модуль платформы и множество модулей драйверов, которые совместно используют одно устройство i2c (как-то) со своим кодом модуля в местах, специфичных для конкретной функции.
(Это мой первый модуль ядра, так как в конце-2,4 или ранней 2,6, это было очень давно.)
Это трудно для меня точно настроить сообщения в ответ секции. До этого вы сможете поделиться именем/номером устройства, которое вы собираетесь использовать? Чтобы ответить на ваш вопрос, да, вам нужно написать драйвер для самого устройства в соответствующем слое. Например, напишите драйвер водить в linux/driver/leds /.Как сам по себе он экспортирует класс/sys/class/leds, вам может понадобиться понять основные слои ядра и написать поверх него. Я смогу ответить на конкретный вопрос, знаю ли я сам прибор. –