Commit 7fb1fe37 authored by Linus Walleij's avatar Linus Walleij
Browse files

Merge tag 'renesas-pinctrl-fixes-for-v6.9-tag2' of...

Merge tag 'renesas-pinctrl-fixes-for-v6.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers

 into fixes

pinctrl: renesas: Fixes for v6.9 (take two)

  - Fix interrupt configuration on RZ/G2L after s2ram.

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parents 398c9955 02cd2d3b
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -2045,7 +2045,9 @@ static void rzg2l_gpio_irq_restore(struct rzg2l_pinctrl *pctrl)

	for (unsigned int i = 0; i < RZG2L_TINT_MAX_INTERRUPT; i++) {
		struct irq_data *data;
		unsigned long flags;
		unsigned int virq;
		int ret;

		if (!pctrl->hwirq[i])
			continue;
@@ -2063,17 +2065,18 @@ static void rzg2l_gpio_irq_restore(struct rzg2l_pinctrl *pctrl)
			continue;
		}

		if (!irqd_irq_disabled(data)) {
			unsigned long flags;

		/*
		 * This has to be atomically executed to protect against a concurrent
		 * interrupt.
		 */
		raw_spin_lock_irqsave(&pctrl->lock.rlock, flags);
		ret = rzg2l_gpio_irq_set_type(data, irqd_get_trigger_type(data));
		if (!ret && !irqd_irq_disabled(data))
			rzg2l_gpio_irq_enable(data);
		raw_spin_unlock_irqrestore(&pctrl->lock.rlock, flags);
		}

		if (ret)
			dev_crit(pctrl->dev, "Failed to set IRQ type for virq=%u\n", virq);
	}
}