void free_irq(unsigned int irq, void *dev_id) { if (irq & IRQ_MACHSPEC) { mach_free_irq(IRQ_IDX(irq), dev_id); return; } if (irq < 0 || irq >= NR_IRQS) { printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); return; } if (vec_list[irq].dev_id != dev_id) printk("%s: Removing probably wrong IRQ %d from %s\n", __FUNCTION__, irq, vec_list[irq].devname); if (vec_list[irq].flags & IRQ_FLG_FAST) { extern asmlinkage void intrhandler(void); extern void set_evector(int vecnum, void (*handler)(void)); set_evector(irq, intrhandler); } if (mach_default_handler) vec_list[irq].handler = (*mach_default_handler)[irq]; else vec_list[irq].handler = default_irq_handler; vec_list[irq].flags = IRQ_FLG_STD; vec_list[irq].dev_id = NULL; vec_list[irq].devname = NULL; }
void free_irq(unsigned int irq, void *dev_id) { if (irq & IRQ_MACHSPEC) { mach_free_irq(IRQ_IDX(irq), dev_id); return; } if (irq < IRQ1 || irq > IRQ7) { printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); return; } if (irq_list[irq].dev_id != dev_id) printk("%s: Removing probably wrong IRQ %d from %s\n", __FUNCTION__, irq, irq_list[irq].devname); if (mach_default_handler) irq_list[irq].handler = (*mach_default_handler)[irq]; else irq_list[irq].handler = NULL; irq_list[irq].flags = IRQ_FLG_STD; irq_list[irq].dev_id = NULL; irq_list[irq].devname = default_names[irq]; }
void free_irq(unsigned int irq, void *dev_id) { mach_free_irq(irq, dev_id); }