Пример #1
0
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;
}
Пример #2
0
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];
}
Пример #3
0
void free_irq(unsigned int irq, void *dev_id)
{
    mach_free_irq(irq, dev_id);
}