static unsigned int h8300_startup_irq(struct irq_data *data) { if (is_ext_irq(data->irq)) return h8300_enable_irq_pin(data->irq); else return 0; }
static unsigned int h8300_startup_irq(unsigned int irq) { if (is_ext_irq(irq)) return h8300_enable_irq_pin(irq); else return 0; }
int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *devname, void *dev_id) { irq_handler_t *irq_handle; if (irq < 0 || irq >= NR_IRQS) { printk(KERN_ERR "Incorrect IRQ %d from %s\n", irq, devname); return -EINVAL; } if (irq_list[irq] || (h8300_enable_irq_pin(irq) == -EBUSY)) return -EBUSY; if (use_kmalloc) irq_handle = kmalloc(sizeof(irq_handler_t), GFP_ATOMIC); else { /* use bootmem allocater */ irq_handle = (irq_handler_t *)alloc_bootmem(sizeof(irq_handler_t)); irq_handle = (irq_handler_t *)((unsigned long)irq_handle | 0x80000000); } if (irq_handle == NULL) return -ENOMEM; irq_handle->handler = handler; irq_handle->flags = flags; irq_handle->count = 0; irq_handle->dev_id = dev_id; irq_handle->devname = devname; irq_list[irq] = irq_handle; if (irq_handle->flags & IRQF_SAMPLE_RANDOM) rand_initialize_irq(irq); enable_irq(irq); return 0; }