staticvoidgpio_irq_handler(unsignedirq, struct irq_desc *desc){structirq_chip*chip=irq_desc_get_chip(desc);structirq_data*idata=irq_desc_get_irq_data(desc);structat91_gpio_chip*at91_gpio=irq_data_get_irq_chip_data(idata);void__iomem *pio = at91_gpio->regbase;unsignedlongisr;intn; ...
struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_CHECK_GLOBAL); #描述符为null,则直接退出. if (!desc) return; #中断描述符如果没有对应的chip,则打印error 信息,并退出 if (WARN(!desc->irq_data.chip, KERN_ERR "enable_irq before setup/request_irq: irq %u\n", ...
struct msi_desc *entry){unsignedlongflags;structirq_desc*desc=irq_get_desc_lock(irq_base+irq_offset, &flags,IRQ_GET_DESC_CHECK_GLOBAL);if(!desc)return-EINVAL; desc->irq_data.msi_desc = entry;if(entry && !irq_offset) entry->irq = irq_base; irq_put_desc_unlock(desc, flags);return0...