在我的平台中,有一个 PCA9555 CMOS 设备,它有 16 个 GPIO 引脚和一个用于中断的单独 INT 引脚。这么久了,我的应用程序会定期读取特定的 gpio pin。我需要将其更改为中断驱动的方式。根据规范: 它有一个开漏中断引脚,当 16 个端口引脚之一改变状态并且该引脚被配置为输入时,该引脚被激活。配置为输出的引脚不会引起中断。
16 个引脚本身都没有中断支持,我edge
在 /sys/class/gpio/gpio/[pin_no] 中看不到 sysfs。所以文件poll()
上value
没有阻塞。我从规范中推断,如果任何输入引脚的状态发生变化,都会向 CPU 触发中断。如何在用户空间中捕获此中断?
我看到gpiolib-cdev.c
关于线事件。
static irqreturn_t lineevent_irq_handler(int irq, void *p)
我可以使用/dev/gpiochip<n>
字符设备和poll()
中断吗?还是仅支持支持中断的 gpio 引脚?