任何IRQ使用者都可以从任何irqchip请求IRQ,即使它是一个组合的GPIO+IRQ驱动程序。基本前提是gpio_chip和irq_chip是正交的,它们独立地提供它们的服务。 gpiod_to_irq()只是一个方便的函数,用于找出特定GPIO线的IRQ,不应该依赖于在使用IRQ之前已经调用了它。 始终在来自GPIO和irq_chip API的相应回调中准备硬件并使...
gpio_irq出现错误genirq: Setting trigger mode 6 for irq 168 failed (gpio_set_irq_type+0x0/0x230) 当时的驱动文件这样写的 request_irq(gpio_keys_100ask[i].irq, gpio_key_isr, IRQF_TRIGGER_RISING |IRQF_TRIGGER_HIGH, "100ask_gpio_key", &gpio_keys_100ask[i]); 改成这样: request_irq(gp...
*/ static void gpio_irq_enable(unsigned irq) { struct gpio_controller *__iomem g = get_irq_chipdata(irq); u32 mask = __gpio_mask(irq_to_gpio(irq)); // 如果先前为下降沿中断,则使能为下降沿中断 if (irq_desc[irq].status & IRQT_FALLING) __raw_writel(mask, &g->set_falling); ...
IOMUXC_GPR->GPR42 |= (1u<<3); NVIC_EnableIRQ(CM7_GPIO2_3_IRQn); GPIO_PinInit(CM7_GPIO3,3, &s_ledConfig); GPIO_PortEnableInterrupts(CM7_GPIO3,1U<<3); }voidGPIO7_8_9_10_11_IRQHandler(void){ GPIO_PortClearInterruptFlags(GPIO9,1U<<3); SDK_ISR_EXIT_BARRIER; }voidconfig_irq_g...
int irq_set_irq_type(unsigned int irq, unsigned int type); void enable_irq(unsigned int irq); void disable_irq(unsigned int irq); int __disable_irq_nosync(unsigned int irq); 1. 2. 3. 4. 5. 6. 7. 使用GPIO步骤 include header ...
void config_irq_gpio3_3(void) { CLOCK_EnableClock(kCLOCK_Iomuxc); IOMUXC_SetPinMux(IOMUXC_GPIO_AD_04_GPIO_MUX3_IO03, 0U); IOMUXC_GPR->GPR42 &= ~(1u << 3); NVIC_EnableIRQ(GPIO3_Combined_0_15_IRQn); GPIO_PinInit(GPIO3, 3, &s_ledConfig); ...
IRQ_TYPE_LEVEL_HIGH //高电平触发 IRQ_TYPE_LEVEL_LOW //低电平触发 然后在 probe 函数中对 DTS 所添加的资源进行解析,再做中断的注册申请,代码如下: staticintfirefly_gpio_probe(structplatform_device*pdev){intret;intgpio;enumof_gpio_flagsflag;structfirefly_gpio_info*gpio_info;structdevice_node*firefl...
}voidconfig_irq_gpio3_3(void){ CLOCK_EnableClock(kCLOCK_Iomuxc); IOMUXC_SetPinMux(IOMUXC_GPIO_AD_04_GPIO_MUX3_IO03,0U); IOMUXC_GPR->GPR42 &= ~(1u<<3); NVIC_EnableIRQ(GPIO3_Combined_0_15_IRQn); GPIO_PinInit(GPIO3,3, &s_ledConfig); ...
interrupts=<GIC_SPI51IRQ_TYPE_LEVEL_HIGH>,/* AW1823_GIC_Spec: GPIOA: 83-32=51 */<GIC_SPI52IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI53IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI54IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI55IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI56IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI57IRQ_TYPE_LEVEL_HIGH>;//...
•SUNXI_PINCFG_TYPE_DAT已不再生效,暂未支持DAT配置(建议使用gpio_direction_output或者__gpio_set_value设置电平值) 5.3 设备驱动使用 GPIO 中断功能 方式一:通过 gpio_to_irq 获取虚拟中断号,然后调用申请中断函数即可目前 sunxi-pinctrl 使用 irq-domain 为 gpio 中断实现虚拟 irq 的功能,使用 gpio 中断功能...