/** * irq_set_chip - set the irq chip for an irq * @irq: irq number * @chip: pointer to irq chip description structure */ int irq_set_chip(unsigned int irq, struct irq_chip *chip) { unsigned long flags; struct irq_desc *desc = irq_get_desc_lock(irq, &flags); if (!desc) return -EINVAL; if (!chip) chip = &no_irq_chip; irq_chip_set_defaults(chip); desc->irq_data.chip = chip; irq_put_desc_unlock(desc, flags); return 0; }
/** * set_irq_chip - set the irq chip for an irq * @irq: irq number * @chip: pointer to irq chip description structure */ int set_irq_chip(unsigned int irq, struct irq_chip *chip) { struct irq_desc *desc = irq_to_desc(irq); unsigned long flags; if (!desc) { WARN(1, KERN_ERR "Trying to install chip for IRQ%d\n", irq); return -EINVAL; } if (!chip) chip = &no_irq_chip; raw_spin_lock_irqsave(&desc->lock, flags); irq_chip_set_defaults(chip); desc->chip = chip; raw_spin_unlock_irqrestore(&desc->lock, flags); return 0; }
/** * set_irq_chip - set the irq chip for an irq * @irq: irq number * @chip: pointer to irq chip description structure */ int set_irq_chip(unsigned int irq, struct irq_chip *chip) { struct irq_desc *desc; unsigned long flags; if (irq >= NR_IRQS) { printk(KERN_ERR "Trying to install chip for IRQ%d\n", irq); WARN_ON(1); return -EINVAL; } if (!chip) chip = &no_irq_chip; desc = irq_desc + irq; spin_lock_irqsave(&desc->lock, flags); irq_chip_set_defaults(chip); desc->chip = chip; spin_unlock_irqrestore(&desc->lock, flags); return 0; }