设备树文件:
/ {
input_dev_demo {
compatible = "sym,input_dev_demo";
reg = <0x021B4000 16>;/*寄存器的基地址 16代表申请的空间 0x021B4000-4000C*/
//interrupt-parent = <&gpio1>;
//interrupts = <5 IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING>;
gpios = <&gpio1 5 3>; /*3代表的是一种flag =IRQ_TYPE_EDGE_FALLING |
IRQ_TYPE_EDGE_RISING */
};
};
gpio_set_value 设置的是逻辑电平,1 有效 0 无效 如果GPIO_ACTIVE_LOW 那么 1 有效 就是低电平 0 无效 就是高电平 (物理电平) 如果GPIO_ACTIVE_HIGH 那么 1 有效 就是高电平 0 无效 就是低电平 (物理电平)
驱动程序:
int gpio;
gpio = of_get_gpio(pdev->dev.of_node, 0);
g_irq = gpio_to_irq(gpio); /*将其转化为中断号*/
error = request_irq(g_irq, input_dev_demo_isr, IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, "input_dev_demo_irq", NULL); /*申请中端 没有返回值会报警告*/
仅为我可见 大家就不用点了 input驱动框架-CSDN博客