Пример #1
0
/**
 *	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;
}
Пример #2
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;
}
Пример #3
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;
}