[PATCH] gpio: realtek-otto: add pinctrl support
From: Michael Zavertkin
Date: Sat Jul 25 2026 - 04:01:37 EST
RTL9607C relies on pinctrl to mux SoC pins. Use pinctrl to request pins
for GPIO
Signed-off-by: Michael Zavertkin <misha.zavertkin@xxxxxxx>
---
drivers/gpio/gpio-realtek-otto.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/gpio-realtek-otto.c b/drivers/gpio/gpio-realtek-otto.c
index 4a606bad5848..4d594db24dd0 100644
--- a/drivers/gpio/gpio-realtek-otto.c
+++ b/drivers/gpio/gpio-realtek-otto.c
@@ -97,6 +97,11 @@ enum realtek_gpio_flags {
* range, where the per-cpu enable masks are located.
*/
GPIO_INTERRUPTS_PER_CPU = BIT(2),
+ /*
+ * Request GPIOs from pinctrl using gpiochip_generic_request()
+ * and gpiochip_generic_free().
+ */
+ GPIO_PINCTRL = BIT(3),
};
static struct realtek_gpio_ctrl *irq_data_to_ctrl(struct irq_data *data)
@@ -354,7 +359,7 @@ static const struct of_device_id realtek_gpio_of_match[] = {
},
{
.compatible = "realtek,rtl9607-gpio",
- .data = (void *)GPIO_PORTS_REVERSED,
+ .data = (void *)(GPIO_PORTS_REVERSED | GPIO_PINCTRL),
},
{}
};
@@ -405,6 +410,10 @@ static int realtek_gpio_probe(struct platform_device *pdev)
ctrl->line_imr_pos = realtek_gpio_line_imr_pos_swapped;
}
+ if (dev_flags & GPIO_PINCTRL) {
+ gen_gc_flags |= GPIO_GENERIC_PINCTRL_BACKEND;
+ }
+
config = (struct gpio_generic_chip_config) {
.dev = dev,
.sz = 4,
--
2.54.0