staticinlinestructgpio_chip *gpio_to_chip(unsigned gpio) {returngpio_desc[S5PV210_GPH2(0)].chip;//参考gpio-s5pv210.c中//samsung_gpiolib_add_4bit_chips(s5pv210_gpio_4bit, nr_chips)函数//gpio_desc[id].chip = chip;} 10returnchip->to_irq ? chip->to_irq(chip, gpio - chip->base) :...
int gpio_set_debounce(unsigned gpio, unsigned debounce) //获取gpio对应的中断线路 int gpio_to_irq(unsigned gpio) //gpio中断,当产生中断时调用handle函数 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char * name, void * dev) linux gpio设备驱动程序 在前面...
int gpio_get_value(unsigned gpio);void gpio_set_value(unsigned gpio, int value);5 gpio当作中断口使用int gpio_to_irq(unsigned gpio);返回的值即中断编号可以传给request_irq()和free_irq()内核通过调用该函数将gpio端口转换为中断,在用户空间也有类似方法6 导出gpio端口到用户空间int gpio_export(unsigned...
方式一:通过 gpio_to_irq 获取虚拟中断号,然后调用申请中断函数即可目前 sunxi-pinctrl 使用 irq-domain 为 gpio 中断实现虚拟 irq 的功能,使用 gpio 中断功能时,设备驱动只需要通过 gpio_to_irq 获取虚拟中断号后,其他均可以按标准 irq 接口操作。 static int sunxi_gpio_eint_demo(struct platform_device *pdev...
irq:Linux内核给每一个CPU的硬件中断都分配了一个指定的软件编号,该编号也就是中断号。(通过gpio_to_irq(gpio)获得) handler:传递要注册的中断处理函数,中断处理函数的原型: irqreturn_t (*irq_handler_t)(int irq, void *dev) #irq:当前触发的硬件中断对应的中断号。
static int __init gpio_dev_test_init(void) { unsigned int gpio_num; unsigned int irq_num; unsigned int irqflags = 0; //初始化自旋锁lock spin_lock_init(&lock); gpio_num = gpio_chip_num * 32 + gpio_offset_num; //注册要操作的GPIO编号 ...
3.3. 调用of_irq_get获得中断号 如果你的设备节点既不能转换为platform_device,它也不是I2C设备,不是SPI设备,那么在驱动程序中可以自行调用of_irq_get函数去解析设备树,得到中断号。 3.4. 对于GPIO 参考: drivers/input/keyboard/gpio_keys.c 可以使用gpio_to_irq或gpiod_to_irq获得中断号。
后来获取中断号的函数我换成了gpio_to_irq,然后去掉了interrutps属性。并且在驱动程序中直接指定了中断...
int gpio_to_irq(unsigned gpio); gpio: gpio编号 返回值:中断编号可以传给request_irq()和free_irq() 举个例子:单个GPIO 申请gpio4,输出模式,输出高(从设备树配置) 设备树设置 gpio_test{ status="ok"; gpio_req=<&tlmn 4 0>; 代码实现 struct device dev; ...
int gpio_to_irq(unsigned gpio); gpio: gpio编号 返回值:中断编号可以传给request_irq()和free_irq() 举个例子:单个GPIO 申请gpio4,输出模式,输出高(从设备树配置) 设备树设置 gpio_test{ status="ok"; gpio_req=<&tlmn 4 0>; 代码实现 struct device dev; ...