Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4607d65a authored by Roland Stigge's avatar Roland Stigge
Browse files

ARM: LPC32xx: Use handle_edge_irq() callback on edge type irqs



irq.c uses handle_level_irq() as the unconditional default handler. This patch
uses handle_edge_irq() instead for edge type irqs.

Signed-off-by: default avatarRoland Stigge <stigge@antcom.de>
Acked-by: default avatarSrinivas Bakki <srinivas.bakki@nxp.com>
parent 4cbe5a55
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -283,21 +283,25 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type)
	case IRQ_TYPE_EDGE_RISING:
		/* Rising edge sensitive */
		__lpc32xx_set_irq_type(d->hwirq, 1, 1);
		__irq_set_handler_locked(d->hwirq, handle_edge_irq);
		break;

	case IRQ_TYPE_EDGE_FALLING:
		/* Falling edge sensitive */
		__lpc32xx_set_irq_type(d->hwirq, 0, 1);
		__irq_set_handler_locked(d->hwirq, handle_edge_irq);
		break;

	case IRQ_TYPE_LEVEL_LOW:
		/* Low level sensitive */
		__lpc32xx_set_irq_type(d->hwirq, 0, 0);
		__irq_set_handler_locked(d->hwirq, handle_level_irq);
		break;

	case IRQ_TYPE_LEVEL_HIGH:
		/* High level sensitive */
		__lpc32xx_set_irq_type(d->hwirq, 1, 0);
		__irq_set_handler_locked(d->hwirq, handle_level_irq);
		break;

	/* Other modes are not supported */
@@ -305,9 +309,6 @@ static int lpc32xx_set_irq_type(struct irq_data *d, unsigned int type)
		return -EINVAL;
	}

	/* Ok to use the level handler for all types */
	irq_set_handler(d->hwirq, handle_level_irq);

	return 0;
}