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

- Fix interrupt configuration on RZ/G2L after s2ram.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCZiobmAAKCRCKwlD9ZEnx
 cLw/AQDo44Mpw5I6DMkZCg3D9ux6LrSkgGj+BpYUb45n9k2sSgD8CXWktVXYrXd2
 mUtT+Kf8GWa+i2QP7Y/MDqF46pqRxw0=
 =pkn9
 -----END PGP SIGNATURE-----

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: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Linus Walleij 2024-04-25 14:28:31 +02:00
commit 7fb1fe37a1

View File

@ -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);
/*
* 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);
}
raw_spin_unlock_irqrestore(&pctrl->lock.rlock, flags);
if (ret)
dev_crit(pctrl->dev, "Failed to set IRQ type for virq=%u\n", virq);
}
}