[PATCH 9/9] gpio: mxc: simplify gpio_set_wake_irq() with irq_set_irq_wake and assign_bit
From: Peng Fan (OSS)
Date: Sat Oct 03 2026 - 08:11:29 EST
From: Peng Fan <peng.fan@xxxxxxx>
To simplify gpio_set_wake_irq():
- Replace the enable/disable_irq_wake() if/else branches with a single
irq_set_irq_wake() call which handles both directions internally.
- Replace the separate set_bit()/clear_bit() calls with assign_bit()
which sets or clears the bit based on the enable parameter.
Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
drivers/gpio/gpio-mxc.c | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index bf1207f30460..546a46857e1d 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -329,21 +329,13 @@ static int gpio_set_wake_irq(struct irq_data *d, u32 enable)
u32 gpio_idx = d->hwirq;
int ret;
- if (enable) {
- if (port->irq_high && (gpio_idx >= 16))
- ret = enable_irq_wake(port->irq_high);
- else
- ret = enable_irq_wake(port->irq);
- if (!ret)
- set_bit(gpio_idx, &port->wakeup_pads);
- } else {
- if (port->irq_high && (gpio_idx >= 16))
- ret = disable_irq_wake(port->irq_high);
- else
- ret = disable_irq_wake(port->irq);
- if (!ret)
- clear_bit(gpio_idx, &port->wakeup_pads);
- }
+ if (port->irq_high && (gpio_idx >= 16))
+ ret = irq_set_irq_wake(port->irq_high, enable);
+ else
+ ret = irq_set_irq_wake(port->irq, enable);
+
+ if (!ret)
+ assign_bit(gpio_idx, &port->wakeup_pads, enable);
return ret;
}
--
2.51.0