Unverified Commit b40c2021 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!13802 pinctrl: ocelot: fix system hang on level based interrupts

parents 1a47bbfa 57cb0541
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1097,22 +1097,21 @@ static void ocelot_irq_handler(struct irq_desc *desc)
	unsigned int reg = 0, irq, i;
	unsigned long irqs;

	chained_irq_enter(parent_chip, desc);

	for (i = 0; i < info->stride; i++) {
		regmap_read(info->map, id_reg + 4 * i, &reg);
		if (!reg)
			continue;

		chained_irq_enter(parent_chip, desc);

		irqs = reg;

		for_each_set_bit(irq, &irqs,
				 min(32U, info->desc->npins - 32 * i))
			generic_handle_irq(irq_linear_revmap(chip->irq.domain,
							     irq + 32 * i));

		chained_irq_exit(parent_chip, desc);
	}
	chained_irq_exit(parent_chip, desc);
}

static int ocelot_gpiochip_register(struct platform_device *pdev,