Commit fcce88d9 authored by Andy Shevchenko's avatar Andy Shevchenko
Browse files

gpio: crystalcove: Use for_each_set_bit() in IRQ handler



This simplifies and standardizes the AB IRQ handler by using
the for_each_set_bit() library function.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
parent bfeffd15
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -279,8 +279,8 @@ static struct irq_chip crystalcove_irqchip = {
static irqreturn_t crystalcove_gpio_irq_handler(int irq, void *data)
{
	struct crystalcove_gpio *cg = data;
	unsigned long pending;
	unsigned int p0, p1;
	int pending;
	int gpio;
	unsigned int virq;

@@ -293,12 +293,10 @@ static irqreturn_t crystalcove_gpio_irq_handler(int irq, void *data)

	pending = p0 | p1 << 8;

	for (gpio = 0; gpio < CRYSTALCOVE_GPIO_NUM; gpio++) {
		if (pending & BIT(gpio)) {
	for_each_set_bit(gpio, &pending, CRYSTALCOVE_GPIO_NUM) {
		virq = irq_find_mapping(cg->chip.irq.domain, gpio);
		handle_nested_irq(virq);
	}
	}

	return IRQ_HANDLED;
}