void q40_free_irq(unsigned int irq, void *dev_id) { if (irq > Q40_IRQ_MAX || (irq>15 && irq<32)) { printk("%s: Incorrect IRQ %d, dev_id %x \n", __FUNCTION__, irq, (unsigned)dev_id); return; } /* test for ISA ints not implemented by HW */ switch (irq) { case 1: case 2: case 8: case 9: case 12: case 13: printk("%s: ISA IRQ %d from %x invalid\n", __FUNCTION__, irq, (unsigned)dev_id); return; case 11: irq=10; } if (irq<Q40_IRQ_SAMPLE) { if (irq_tab[irq].dev_id != dev_id) printk("%s: Removing probably wrong IRQ %d from %s\n", __FUNCTION__, irq, irq_tab[irq].devname); irq_tab[irq].handler = q40_defhand; irq_tab[irq].flags = 0; irq_tab[irq].dev_id = NULL; /* irq_tab[irq].devname = NULL; */ /* do not reset state !! */ } else { /* == Q40_IRQ_SAMPLE */ sys_free_irq(4,dev_id); sys_free_irq(6,dev_id); } }
void mac_free_irq(unsigned int irq, void *dev_id) { #ifdef DEBUG_MACINTS printk ("%s: irq %d freed by %p\n", __FUNCTION__, irq, dev_id); #endif if (irq < VIA1_SOURCE_BASE) { return sys_free_irq(irq, dev_id); } if (irq >= NUM_MAC_SOURCES) { printk ("%s: unknown irq %d freed\n", __FUNCTION__, irq); return; } mac_delete_irq(&mac_irq_list[irq], dev_id); /* If the list for this interrupt is */ /* empty then disable the source. */ if (!mac_irq_list[irq]) { mac_disable_irq(irq); } }
void amiga_free_irq(unsigned int irq, void *dev_id) { if (irq >= AMI_IRQS) { printk ("%s: Unknown IRQ %d\n", __FUNCTION__, irq); return; } if (irq >= IRQ_AMIGA_AUTO) { sys_free_irq(irq - IRQ_AMIGA_AUTO, dev_id); return; } if (irq >= IRQ_AMIGA_CIAA) { cia_free_irq(irq, dev_id); return; } if (ami_servers[irq]) { amiga_delete_irq(&ami_irq_list[irq], dev_id); /* if server list empty, disable the interrupt */ if (!ami_irq_list[irq] && irq < IRQ_AMIGA_PORTS) custom.intena = ami_intena_vals[irq]; } else { if (ami_irq_list[irq]->dev_id != dev_id) printk("%s: removing probably wrong IRQ %d from %s\n", __FUNCTION__, irq, ami_irq_list[irq]->devname); ami_irq_list[irq]->handler = ami_badint; ami_irq_list[irq]->flags = 0; ami_irq_list[irq]->dev_id = NULL; ami_irq_list[irq]->devname = NULL; custom.intena = ami_intena_vals[irq]; } }
void bvme6000_free_irq(unsigned int irq, void *dev_id) { if (irq > 255) { printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); return; } #if 0 if (irq >= VEC_INT1 && irq <= VEC_INT7) { sys_free_irq(irq - VEC_SPUR, dev_id); return; } #endif if (irq_tab[irq].dev_id != dev_id) printk("%s: Removing probably wrong IRQ %d from %s\n", __FUNCTION__, irq, irq_tab[irq].devname); irq_tab[irq].handler = bvme6000_defhand; irq_tab[irq].flags = IRQ_FLG_STD; irq_tab[irq].dev_id = NULL; irq_tab[irq].devname = NULL; }