Прерывание пользовательского пространства для выводов gpio, у которых нет пограничной sysfs

На моей платформе есть CMOS-устройство PCA9555 с 16 контактами GPIO и отдельным контактом INT для прерываний. Пока мое приложение периодически считывало конкретный пин gpio. Мне нужно изменить его на способ, управляемый прерываниями. Из спецификации: он имеет вывод прерывания с открытым стоком, который активируется, когда один из выводов 16 порта меняет состояние, и вывод настроен как вход. Вывод, настроенный как выход, не может вызывать прерывание.

Ни у одного из 16 контактов нет поддержки прерывания, и я не вижу edgesysfs в / sys / class / gpio / gpio / [pin_no]. Скоро valueфайл не блокируется. И я делаю вывод из спецификации, что прерывание будет инициировано для ЦП, если состояние любого из входных контактов изменится. Как мне поймать это прерывание в пользовательском пространстве?

Я вижу в gpiolib-cdev.c о линейных событиях. static irqreturn_t lineevent_irq_handler(int irq, void *p)

Могу ли я использовать /dev/gpiochip<n> устройство персонажа и poll()для прерываний? или это поддерживается только для вывода gpio, который поддерживает прерывание?

0 ответов

Другие вопросы по тегам