Linux GPIO subsystem development
 help / color / mirror / Atom feed
* [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup
@ 2026-10-29 13:42 Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC Peng Fan (OSS)
                   ` (10 more replies)
  0 siblings, 11 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

Per i.MX8ULP/93/95 and etc reference mannual, there is only one
clock for a GPIO controller, so drop the 2nd 'port' clock.
And for i.MX8ULP, the 'port' clock is for digital filter for iomuxc
PAD, not for gpio controller. If we need to support digital filter,
we need to add the support in pinctrl driver.

With binding fixed, to avoid dt-schema failure, correct gpio node for
i.MX8ULP/93/95/94/952.

While at here, a few misc gpio driver cleanup patches are also
included, more info could be found in each commit log.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Peng Fan (11):
      dt-bindings: gpio: vf610: fix clock requirements per SoC
      gpio: vf610: propagate return value to callers
      gpio: vf610: simplify with irq_set_irq_wake
      gpio: vf610: use devm_clk_get_optional_enabled for clock handling
      gpio: vf610: drop unneeded header
      gpio: vf610: drop unnecessary wrappers
      arm64: dts: imx8ulp: fix gpio clocks
      arm64: dts: imx93: fix gpio clocks
      arm64: dts: imx95: fix gpio clocks
      arm64: dts: imx952: fix gpio clocks
      arm64: dts: imx94: add clocks for gpio controller

 .../devicetree/bindings/gpio/gpio-vf610.yaml       | 32 +++++++++
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi         | 15 ++--
 arch/arm64/boot/dts/freescale/imx91_93_common.dtsi | 20 +++---
 arch/arm64/boot/dts/freescale/imx94.dtsi           | 12 ++++
 arch/arm64/boot/dts/freescale/imx95.dtsi           | 25 +++----
 arch/arm64/boot/dts/freescale/imx952.dtsi          | 25 +++----
 drivers/gpio/gpio-vf610.c                          | 80 +++++-----------------
 7 files changed, 96 insertions(+), 113 deletions(-)
---
base-commit: 8a36f53fd5ec3eff01f1b637d42cbdc3821d0493
change-id: 20261029-gpio-vf610-fixes-c56439785fcd

Best regards,
--  
Peng Fan <peng.fan@nxp.com>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 14:30   ` Frank Li
  2026-10-29 13:42 ` [PATCH 02/11] gpio: vf610: propagate return value to callers Peng Fan (OSS)
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

The i.MX7ULP GPIO controller needs both the GPIO and PORT clocks,
while the i.MX8ULP and its derivatives (i.MX93/94/95/952) only have
a single "gpio" clock. The vf610 controller has no gateable clocks,
so keep clocks optional there.

Describe the clock items with minItems/maxItems, require exactly two
clocks for i.MX7ULP, and require exactly one "gpio" clock for the
i.MX8ULP family.

Fixes: c61d8b5791ab ("dt-bindings: gpio: gpio-vf610: Add imx8ulp compatible string")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 .../devicetree/bindings/gpio/gpio-vf610.yaml       | 32 ++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index a31f64b6d40b..822fa11d18d9 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -57,11 +57,13 @@ properties:
     maxItems: 32
 
   clocks:
+    minItems: 1
     items:
       - description: SoC GPIO clock
       - description: SoC PORT clock
 
   clock-names:
+    minItems: 1
     items:
       - const: gpio
       - const: port
@@ -116,6 +118,36 @@ allOf:
         reg:
           items:
             - description: GPIO register base address
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx7ulp-gpio
+    then:
+      properties:
+        clocks:
+          minItems: 2
+          maxItems: 2
+        clock-names:
+          minItems: 2
+          maxItems: 2
+      required:
+        - clocks
+        - clock-names
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx8ulp-gpio
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          maxItems: 1
+      required:
+        - clocks
+        - clock-names
 
 additionalProperties: false
 

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 02/11] gpio: vf610: propagate return value to callers
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 13:57   ` sashiko-bot
  2026-10-29 13:42 ` [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake Peng Fan (OSS)
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Fix the return value handling in vf610_gpio_irq_set_wake() to properly
propagate the return value from enable_irq_wake()/disable_irq_wake()
instead of always returning 0.

Fixes: 7f2691a19627 ("gpio: vf610: add gpiolib/IRQ chip driver for Vybrid")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/gpio/gpio-vf610.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index adfa2c2d5873..44b846ff1b93 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -188,13 +188,14 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
 {
 	struct vf610_gpio_port *port =
 		gpiochip_get_data(irq_data_get_irq_chip_data(d));
+	int ret;
 
 	if (enable)
-		enable_irq_wake(port->irq);
+		ret = enable_irq_wake(port->irq);
 	else
-		disable_irq_wake(port->irq);
+		ret = disable_irq_wake(port->irq);
 
-	return 0;
+	return ret;
 }
 
 static const struct irq_chip vf610_irqchip = {

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 02/11] gpio: vf610: propagate return value to callers Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 14:46   ` Daniel Baluta
  2026-10-29 14:46   ` Frank Li
  2026-10-29 13:42 ` [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling Peng Fan (OSS)
                   ` (7 subsequent siblings)
  10 siblings, 2 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Replace the manual enable/disable irq wake logic with a single call to
irq_set_irq_wake() to simplify code.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/gpio/gpio-vf610.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index 44b846ff1b93..eccc79a4d96b 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -188,14 +188,8 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
 {
 	struct vf610_gpio_port *port =
 		gpiochip_get_data(irq_data_get_irq_chip_data(d));
-	int ret;
-
-	if (enable)
-		ret = enable_irq_wake(port->irq);
-	else
-		ret = disable_irq_wake(port->irq);
 
-	return ret;
+	return irq_set_irq_wake(port->irq, enable);
 }
 
 static const struct irq_chip vf610_irqchip = {

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (2 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 14:50   ` Frank Li
  2026-10-29 13:42 ` [PATCH 05/11] gpio: vf610: drop unneeded header Peng Fan (OSS)
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Replace the manual clock acquisition, enable and cleanup sequences with
devm_clk_get_optional_enabled() for both the port and gpio clocks. The
helper treats a missing clock as NULL and automatically disables and
unprepares the clocks on driver unbind, so the vf610_gpio_disable_clk()
helper is no longer needed.

Unlike the previous code, propagate all errors from the helper,
including clk_prepare_enable() failures. The old code only tolerated
lookup errors and failed probe when enabling the clock failed; continuing
with a disabled clock could fault when accessing the PORT/GPIO registers.
The optional helper already covers the "clock not described" case, so
there is no need to silently ignore other errors.

The clock pointers are only needed during probe now that devm manages
their lifetime, so drop them from struct vf610_gpio_port and use a local
variable instead.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/gpio/gpio-vf610.c | 46 +++++++++-------------------------------------
 1 file changed, 9 insertions(+), 37 deletions(-)

diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index eccc79a4d96b..fda3633ee2b3 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -34,8 +34,6 @@ struct vf610_gpio_port {
 	void __iomem *gpio_base;
 	const struct fsl_gpio_soc_data *sdata;
 	u8 irqc[VF610_GPIO_PER_PORT];
-	struct clk *clk_port;
-	struct clk *clk_gpio;
 	int irq;
 };
 
@@ -204,11 +202,6 @@ static const struct irq_chip vf610_irqchip = {
 	GPIOCHIP_IRQ_RESOURCE_HELPERS,
 };
 
-static void vf610_gpio_disable_clk(void *data)
-{
-	clk_disable_unprepare(data);
-}
-
 static int vf610_gpio_probe(struct platform_device *pdev)
 {
 	struct gpio_generic_chip_config config;
@@ -216,6 +209,7 @@ static int vf610_gpio_probe(struct platform_device *pdev)
 	struct vf610_gpio_port *port;
 	struct gpio_chip *gc;
 	struct gpio_irq_chip *girq;
+	struct clk *clk;
 	unsigned long flags;
 	int i;
 	int ret;
@@ -259,37 +253,15 @@ static int vf610_gpio_probe(struct platform_device *pdev)
 	if (port->irq < 0)
 		return port->irq;
 
-	port->clk_port = devm_clk_get(dev, "port");
-	ret = PTR_ERR_OR_ZERO(port->clk_port);
-	if (!ret) {
-		ret = clk_prepare_enable(port->clk_port);
-		if (ret)
-			return ret;
-		ret = devm_add_action_or_reset(dev, vf610_gpio_disable_clk,
-					       port->clk_port);
-		if (ret)
-			return ret;
-	} else if (ret == -EPROBE_DEFER) {
-		/*
-		 * Percolate deferrals, for anything else,
-		 * just live without the clocking.
-		 */
-		return ret;
-	}
+	clk = devm_clk_get_optional_enabled(dev, "port");
+	if (IS_ERR(clk))
+		return dev_err_probe(dev, PTR_ERR(clk),
+				     "failed to get/enable port clock\n");
 
-	port->clk_gpio = devm_clk_get(dev, "gpio");
-	ret = PTR_ERR_OR_ZERO(port->clk_gpio);
-	if (!ret) {
-		ret = clk_prepare_enable(port->clk_gpio);
-		if (ret)
-			return ret;
-		ret = devm_add_action_or_reset(dev, vf610_gpio_disable_clk,
-					       port->clk_gpio);
-		if (ret)
-			return ret;
-	} else if (ret == -EPROBE_DEFER) {
-		return ret;
-	}
+	clk = devm_clk_get_optional_enabled(dev, "gpio");
+	if (IS_ERR(clk))
+		return dev_err_probe(dev, PTR_ERR(clk),
+				     "failed to get/enable gpio clock\n");
 
 	gc = &port->chip.gc;
 	flags = GPIO_GENERIC_PINCTRL_BACKEND;

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 05/11] gpio: vf610: drop unneeded header
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (3 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 14:51   ` Frank Li
  2026-10-29 13:42 ` [PATCH 06/11] gpio: vf610: drop unnecessary wrappers Peng Fan (OSS)
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Remove the unused pinctrl consumer header since the driver doesn't use
any pinctrl consumer functions.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/gpio/gpio-vf610.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index fda3633ee2b3..4c46342bc66c 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -16,7 +16,6 @@
 #include <linux/io.h>
 #include <linux/ioport.h>
 #include <linux/irq.h>
-#include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/property.h>
 

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 06/11] gpio: vf610: drop unnecessary wrappers
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (4 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 05/11] gpio: vf610: drop unneeded header Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 14:45   ` Daniel Baluta
  2026-10-29 14:53   ` Frank Li
  2026-10-29 13:42 ` [PATCH 07/11] arm64: dts: imx8ulp: fix gpio clocks Peng Fan (OSS)
                   ` (4 subsequent siblings)
  10 siblings, 2 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Remove trivial wrapper functions vf610_gpio_writel() and
vf610_gpio_readl() that just called the relaxed versions directly.
Replace their usage with direct calls to writel_relaxed() and
readl_relaxed().

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/gpio/gpio-vf610.c | 26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index 4c46342bc66c..f6712bb45841 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -82,16 +82,6 @@ static const struct of_device_id vf610_gpio_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, vf610_gpio_dt_ids);
 
-static inline void vf610_gpio_writel(u32 val, void __iomem *reg)
-{
-	writel_relaxed(val, reg);
-}
-
-static inline u32 vf610_gpio_readl(void __iomem *reg)
-{
-	return readl_relaxed(reg);
-}
-
 static void vf610_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct vf610_gpio_port *port =
@@ -102,10 +92,10 @@ static void vf610_gpio_irq_handler(struct irq_desc *desc)
 
 	chained_irq_enter(chip, desc);
 
-	irq_isfr = vf610_gpio_readl(port->base + PORT_ISFR);
+	irq_isfr = readl_relaxed(port->base + PORT_ISFR);
 
 	for_each_set_bit(pin, &irq_isfr, VF610_GPIO_PER_PORT) {
-		vf610_gpio_writel(BIT(pin), port->base + PORT_ISFR);
+		writel_relaxed(BIT(pin), port->base + PORT_ISFR);
 
 		generic_handle_domain_irq(port->chip.gc.irq.domain, pin);
 	}
@@ -119,7 +109,7 @@ static void vf610_gpio_irq_ack(struct irq_data *d)
 		gpiochip_get_data(irq_data_get_irq_chip_data(d));
 	int gpio = d->hwirq;
 
-	vf610_gpio_writel(BIT(gpio), port->base + PORT_ISFR);
+	writel_relaxed(BIT(gpio), port->base + PORT_ISFR);
 }
 
 static int vf610_gpio_irq_set_type(struct irq_data *d, u32 type)
@@ -165,7 +155,7 @@ static void vf610_gpio_irq_mask(struct irq_data *d)
 	irq_hw_number_t gpio_num = irqd_to_hwirq(d);
 	void __iomem *pcr_base = port->base + PORT_PCR(gpio_num);
 
-	vf610_gpio_writel(0, pcr_base);
+	writel_relaxed(0, pcr_base);
 	gpiochip_disable_irq(gc, gpio_num);
 }
 
@@ -177,8 +167,8 @@ static void vf610_gpio_irq_unmask(struct irq_data *d)
 	void __iomem *pcr_base = port->base + PORT_PCR(gpio_num);
 
 	gpiochip_enable_irq(gc, gpio_num);
-	vf610_gpio_writel(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET,
-			  pcr_base);
+	writel_relaxed(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET,
+		       pcr_base);
 }
 
 static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
@@ -290,10 +280,10 @@ static int vf610_gpio_probe(struct platform_device *pdev)
 
 	/* Mask all GPIO interrupts */
 	for (i = 0; i < gc->ngpio; i++)
-		vf610_gpio_writel(0, port->base + PORT_PCR(i));
+		writel_relaxed(0, port->base + PORT_PCR(i));
 
 	/* Clear the interrupt status register for all GPIO's */
-	vf610_gpio_writel(~0, port->base + PORT_ISFR);
+	writel_relaxed(~0, port->base + PORT_ISFR);
 
 	girq = &gc->irq;
 	gpio_irq_chip_set_chip(girq, &vf610_irqchip);

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 07/11] arm64: dts: imx8ulp: fix gpio clocks
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (5 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 06/11] gpio: vf610: drop unnecessary wrappers Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 08/11] arm64: dts: imx93: " Peng Fan (OSS)
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

IMX8ULP_CLK_PCTL[E,F] clocks are actually clocks for PAD digital fiter,
not for GPIO. And per Reference mannual[1], 26.3.5 Clocking:
The GPIO module receives a single clock, which is used for register
access and synchronize external pin inputs.

So only drop the 'port' clock.

[1] https://www.nxp.com/docs/en/reference-manual/IMX8ULPRM.pdf

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
index 777b89ed6849..cd8be753611b 100644
--- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
@@ -731,9 +731,8 @@ gpioe: gpio@2d000000 {
 					     <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
 				interrupt-controller;
 				#interrupt-cells = <2>;
-				clocks = <&pcc4 IMX8ULP_CLK_RGPIOE>,
-					 <&pcc4 IMX8ULP_CLK_PCTLE>;
-				clock-names = "gpio", "port";
+				clocks = <&pcc4 IMX8ULP_CLK_RGPIOE>;
+				clock-names = "gpio";
 				gpio-ranges = <&iomuxc1 0 32 24>;
 				ngpios = <24>;
 		};
@@ -747,9 +746,8 @@ gpiof: gpio@2d010000 {
 					     <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
 				interrupt-controller;
 				#interrupt-cells = <2>;
-				clocks = <&pcc4 IMX8ULP_CLK_RGPIOF>,
-					 <&pcc4 IMX8ULP_CLK_PCTLF>;
-				clock-names = "gpio", "port";
+				clocks = <&pcc4 IMX8ULP_CLK_RGPIOF>;
+				clock-names = "gpio";
 				gpio-ranges = <&iomuxc1 0 64 32>;
 				ngpios = <32>;
 		};
@@ -986,9 +984,8 @@ gpiod: gpio@2e200000 {
 				     <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&pcc5 IMX8ULP_CLK_RGPIOD>,
-				 <&pcc5 IMX8ULP_CLK_RGPIOD>;
-			clock-names = "gpio", "port";
+			clocks = <&pcc5 IMX8ULP_CLK_RGPIOD>;
+			clock-names = "gpio";
 			gpio-ranges = <&iomuxc1 0 0 24>;
 			ngpios = <24>;
 		};

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 08/11] arm64: dts: imx93: fix gpio clocks
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (6 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 07/11] arm64: dts: imx8ulp: fix gpio clocks Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 09/11] arm64: dts: imx95: " Peng Fan (OSS)
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Per reference mannual [1], 28.3.5 Clocking:
GPIO receives a single clock, which is used for register access and
synchronization with external pin inputs. So drop the 'port' clock.

[1] https://www.nxp.com/docs/en/reference-manual/IMX93RM.pdf

Fixes: e41ba6957139 ("arm64: dts: imx93: add gpio clk")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx91_93_common.dtsi | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx91_93_common.dtsi b/arch/arm64/boot/dts/freescale/imx91_93_common.dtsi
index a68ffd04ee08..cf73dab17637 100644
--- a/arch/arm64/boot/dts/freescale/imx91_93_common.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx91_93_common.dtsi
@@ -1034,9 +1034,8 @@ gpio2: gpio@43810000 {
 				     <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&clk IMX93_CLK_GPIO2_GATE>,
-				 <&clk IMX93_CLK_GPIO2_GATE>;
-			clock-names = "gpio", "port";
+			clocks = <&clk IMX93_CLK_GPIO2_GATE>;
+			clock-names = "gpio";
 			gpio-ranges = <&iomuxc 0 4 30>;
 			ngpios = <30>;
 		};
@@ -1050,9 +1049,8 @@ gpio3: gpio@43820000 {
 				     <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&clk IMX93_CLK_GPIO3_GATE>,
-				 <&clk IMX93_CLK_GPIO3_GATE>;
-			clock-names = "gpio", "port";
+			clocks = <&clk IMX93_CLK_GPIO3_GATE>;
+			clock-names = "gpio";
 			gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8 66 18>,
 				      <&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
 			ngpios = <32>;
@@ -1067,9 +1065,8 @@ gpio4: gpio@43830000 {
 				     <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&clk IMX93_CLK_GPIO4_GATE>,
-				 <&clk IMX93_CLK_GPIO4_GATE>;
-			clock-names = "gpio", "port";
+			clocks = <&clk IMX93_CLK_GPIO4_GATE>;
+			clock-names = "gpio";
 			gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
 			ngpios = <30>;
 		};
@@ -1083,9 +1080,8 @@ gpio1: gpio@47400000 {
 				     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&clk IMX93_CLK_GPIO1_GATE>,
-				 <&clk IMX93_CLK_GPIO1_GATE>;
-			clock-names = "gpio", "port";
+			clocks = <&clk IMX93_CLK_GPIO1_GATE>;
+			clock-names = "gpio";
 			gpio-ranges = <&iomuxc 0 92 16>;
 			ngpios = <16>;
 		};

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 09/11] arm64: dts: imx95: fix gpio clocks
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (7 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 08/11] arm64: dts: imx93: " Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 10/11] arm64: dts: imx952: " Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 11/11] arm64: dts: imx94: add clocks for gpio controller Peng Fan (OSS)
  10 siblings, 0 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Per reference mannual [1], 69.3.5 Clocking:
GPIO receives a single clock, which is used for register access and
synchronization with external pin inputs. So drop the 'port' clock.

[1] https://www.nxp.com/docs/en/reference-manual/IMX95RM.pdf

Fixes: 5e3cbb8e4256 ("arm64: dts: freescale: add i.MX95 basic dtsi")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx95.dtsi | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi
index d20c2498b9aa..0398de491553 100644
--- a/arch/arm64/boot/dts/freescale/imx95.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
@@ -1300,9 +1300,8 @@ gpio2: gpio@43810000 {
 				     <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 4 32>;
 			ngpios = <32>;
 		};
@@ -1316,9 +1315,8 @@ gpio3: gpio@43820000 {
 				     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 104 8>, <&scmi_iomuxc 8 74 18>,
 				      <&scmi_iomuxc 26 42 2>, <&scmi_iomuxc 28 0 4>;
 			ngpios = <32>;
@@ -1333,9 +1331,8 @@ gpio4: gpio@43840000 {
 				     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 46 28>, <&scmi_iomuxc 28 44 2>;
 			ngpios = <30>;
 		};
@@ -1349,9 +1346,8 @@ gpio5: gpio@43850000 {
 				     <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 92 12>, <&scmi_iomuxc 12 36 6>;
 			ngpios = <18>;
 		};
@@ -1689,9 +1685,8 @@ gpio1: gpio@47400000 {
 				     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX95_CLK_M33>,
-				 <&scmi_clk IMX95_CLK_M33>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX95_CLK_M33>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 112 16>;
 			ngpios = <16>;
 			status = "disabled";

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 10/11] arm64: dts: imx952: fix gpio clocks
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (8 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 09/11] arm64: dts: imx95: " Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  2026-10-29 13:42 ` [PATCH 11/11] arm64: dts: imx94: add clocks for gpio controller Peng Fan (OSS)
  10 siblings, 0 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Per reference mannual:
GPIO receives a single clock, which is used for register access and
synchronization with external pin inputs. So drop the 'port' clock.

Fixes: b516a4dd6a1f ("arm64: dts: freescale: Add initial device tree for i.MX952")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx952.dtsi | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx952.dtsi b/arch/arm64/boot/dts/freescale/imx952.dtsi
index 1154b66dadb2..22f02f48298f 100644
--- a/arch/arm64/boot/dts/freescale/imx952.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx952.dtsi
@@ -1024,9 +1024,8 @@ gpio2: gpio@43810000 {
 				     <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX952_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 4 32>;
 			ngpios = <32>;
 		};
@@ -1040,9 +1039,8 @@ gpio3: gpio@43820000 {
 				     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX952_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 115 8>, <&scmi_iomuxc 8 85 18>,
 				      <&scmi_iomuxc 26 53 2>, <&scmi_iomuxc 28 0 4>;
 			ngpios = <32>;
@@ -1057,9 +1055,8 @@ gpio4: gpio@43840000 {
 				     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX952_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 57 28>, <&scmi_iomuxc 28 55 2>;
 			ngpios = <30>;
 		};
@@ -1073,9 +1070,8 @@ gpio5: gpio@43850000 {
 				     <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>,
-				 <&scmi_clk IMX952_CLK_BUSWAKEUP>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 103 12>, <&scmi_iomuxc 12 36 6>;
 			ngpios = <18>;
 		};
@@ -1411,9 +1407,8 @@ gpio1: gpio@47400000 {
 				     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-controller;
 			#interrupt-cells = <2>;
-			clocks = <&scmi_clk IMX952_CLK_M33>,
-				 <&scmi_clk IMX952_CLK_M33>;
-			clock-names = "gpio", "port";
+			clocks = <&scmi_clk IMX952_CLK_M33>;
+			clock-names = "gpio";
 			gpio-ranges = <&scmi_iomuxc 0 123 16>;
 			ngpios = <16>;
 			status = "disabled";

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 11/11] arm64: dts: imx94: add clocks for gpio controller
  2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
                   ` (9 preceding siblings ...)
  2026-10-29 13:42 ` [PATCH 10/11] arm64: dts: imx952: " Peng Fan (OSS)
@ 2026-10-29 13:42 ` Peng Fan (OSS)
  10 siblings, 0 replies; 20+ messages in thread
From: Peng Fan (OSS) @ 2026-10-29 13:42 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam
  Cc: Bartosz Golaszewski, linux-gpio, devicetree, linux-kernel, imx,
	linux-arm-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Per reference mannual:
GPIO receives a single clock, which is used for register access and
synchronization with external pin inputs. So add the gpio clock entry.

Fixes: b0d011d4841b ("arm64: dts: freescale: Add basic dtsi for imx943")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx94.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi b/arch/arm64/boot/dts/freescale/imx94.dtsi
index 020aa1da3315..90925d48daad 100644
--- a/arch/arm64/boot/dts/freescale/imx94.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
@@ -861,6 +861,8 @@ gpio2: gpio@43810000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 4 32>;
@@ -874,6 +876,8 @@ gpio3: gpio@43820000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 36 26>;
@@ -887,6 +891,8 @@ gpio4: gpio@43840000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
@@ -901,6 +907,8 @@ gpio5: gpio@43850000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 108 32>;
@@ -914,6 +922,8 @@ gpio6: gpio@43860000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 66 32>;
@@ -927,6 +937,8 @@ gpio7: gpio@43870000 {
 			interrupt-controller;
 			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+			clock-names = "gpio";
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152 12>;

-- 
2.51.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 02/11] gpio: vf610: propagate return value to callers
  2026-10-29 13:42 ` [PATCH 02/11] gpio: vf610: propagate return value to callers Peng Fan (OSS)
@ 2026-10-29 13:57   ` sashiko-bot
  0 siblings, 0 replies; 20+ messages in thread
From: sashiko-bot @ 2026-10-29 13:57 UTC (permalink / raw)
  To: Peng Fan (OSS); +Cc: linux-gpio, devicetree, imx, robh, conor+dt, Frank.Li

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] gpio: vf610: vf610_gpio_irq_set_wake() breaks GPIO wakeup on Vybrid SoCs
--

commit 4cb6078cbfdf301b9f65c4307b8d2ea1ba2ec0b8
Author: Peng Fan <peng.fan@nxp.com>

gpio: vf610: propagate return value to callers

This commit updates vf610_gpio_irq_set_wake() to propagate the return value
from enable_irq_wake() and disable_irq_wake() instead of unconditionally
returning 0.

> diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
> index adfa2c2d5873d..44b846ff1b936 100644
> --- a/drivers/gpio/gpio-vf610.c
> +++ b/drivers/gpio/gpio-vf610.c
> @@ -188,13 +188,14 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
>  {
>  	struct vf610_gpio_port *port =
>  		gpiochip_get_data(irq_data_get_irq_chip_data(d));
> +	int ret;
>  
>  	if (enable)
> -		enable_irq_wake(port->irq);
> +		ret = enable_irq_wake(port->irq);
>  	else
> -		disable_irq_wake(port->irq);
> +		ret = disable_irq_wake(port->irq);
>  
> -	return 0;
> +	return ret;

[Severity: Medium]
Does propagating ret here break GPIO wakeup on Vybrid (VF500/VF610) SoCs?

On Vybrid platforms in arch/arm/boot/dts/nxp/vf/vfxxx.dtsi, all
fsl,vf610-gpio controllers (gpio0 through gpio4) inherit mscm_ir as their
interrupt parent:

arch/arm/boot/dts/nxp/vf/vfxxx.dtsi:
	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
		interrupt-parent = <&mscm_ir>;
		ranges;

In drivers/irqchip/irq-vf610-mscm-ir.c, vf610_mscm_ir_irq_chip sets neither
.irq_set_wake nor IRQCHIP_SKIP_SET_WAKE:

drivers/irqchip/irq-vf610-mscm-ir.c:
static struct irq_chip vf610_mscm_ir_irq_chip = {
	.name			= "mscm-ir",
	.irq_mask		= irq_chip_mask_parent,
	.irq_unmask		= irq_chip_unmask_parent,
	.irq_eoi		= irq_chip_eoi_parent,
	.irq_enable		= vf610_mscm_ir_enable,
	.irq_disable		= vf610_mscm_ir_disable,
	.irq_retrigger		= irq_chip_retrigger_hierarchy,
	.irq_set_affinity	= irq_chip_set_affinity_parent,
};

When a consumer calls enable_irq_wake() on a Vybrid GPIO interrupt, the call
chain irq_set_irq_wake() -> set_irq_wake_real() -> vf610_gpio_irq_set_wake()
calls enable_irq_wake(port->irq), which invokes set_irq_wake_real() on
port->irq in kernel/irq/manage.c:

static int set_irq_wake_real(unsigned int irq, unsigned int on)
{
	struct irq_desc *desc = irq_to_desc(irq);
	int ret = -ENXIO;

	if (irq_desc_get_chip(desc)->flags &  IRQCHIP_SKIP_SET_WAKE)
		return 0;

	if (desc->irq_data.chip->irq_set_wake)
		ret = desc->irq_data.chip->irq_set_wake(&desc->irq_data, on);

	return ret;
}

Because vf610_mscm_ir_irq_chip lacks both IRQCHIP_SKIP_SET_WAKE and
.irq_set_wake, set_irq_wake_real(port->irq, 1) returns -ENXIO. Previously,
vf610_gpio_irq_set_wake() ignored this and returned 0, allowing
irq_set_irq_wake() on the child GPIO IRQ to set IRQD_WAKEUP_STATE so that
suspend_device_irq() left the GPIO pin unmasked while port->irq remained
active as a chained interrupt.

With this change (and after the follow-up commit 614715b30c6f ("gpio: vf610:
simplify with irq_set_irq_wake")), irq_set_irq_wake() on any Vybrid GPIO IRQ
fails with -ENXIO, preventing IRQD_WAKEUP_STATE from being set and causing
suspend_device_irq() to mask the wakeup GPIO interrupt in PORT_PCR(n) during
system suspend.

Should vf610_mscm_ir_irq_chip also be updated to set .irq_set_wake =
irq_chip_set_wake_parent (or IRQCHIP_SKIP_SET_WAKE) before propagating this
return value?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261029-gpio-vf610-fixes-v1-0-45b484b4c434@nxp.com?part=2

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC
  2026-10-29 13:42 ` [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC Peng Fan (OSS)
@ 2026-10-29 14:30   ` Frank Li
  0 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-10-29 14:30 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 09:42:25PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> The i.MX7ULP GPIO controller needs both the GPIO and PORT clocks,
> while the i.MX8ULP and its derivatives (i.MX93/94/95/952) only have
> a single "gpio" clock. The vf610 controller has no gateable clocks,
> so keep clocks optional there.
>
> Describe the clock items with minItems/maxItems, require exactly two
> clocks for i.MX7ULP, and require exactly one "gpio" clock for the
> i.MX8ULP family.
>
> Fixes: c61d8b5791ab ("dt-bindings: gpio: gpio-vf610: Add imx8ulp compatible string")
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  .../devicetree/bindings/gpio/gpio-vf610.yaml       | 32 ++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index a31f64b6d40b..822fa11d18d9 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -57,11 +57,13 @@ properties:
>      maxItems: 32
>
>    clocks:
> +    minItems: 1
>      items:
>        - description: SoC GPIO clock
>        - description: SoC PORT clock
>
>    clock-names:
> +    minItems: 1
>      items:
>        - const: gpio
>        - const: port
> @@ -116,6 +118,36 @@ allOf:
>          reg:
>            items:
>              - description: GPIO register base address
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: fsl,imx7ulp-gpio
> +    then:
> +      properties:
> +        clocks:
> +          minItems: 2
> +          maxItems: 2
> +        clock-names:
> +          minItems: 2
> +          maxItems: 2

Needn't maxItems for both clocks and clock-names because top already
restrict it.

Frank
> +      required:
> +        - clocks
> +        - clock-names
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: fsl,imx8ulp-gpio
> +    then:
> +      properties:
> +        clocks:
> +          maxItems: 1
> +        clock-names:
> +          maxItems: 1
> +      required:
> +        - clocks
> +        - clock-names
>
>  additionalProperties: false
>
>
> --
> 2.51.0
>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 06/11] gpio: vf610: drop unnecessary wrappers
  2026-10-29 13:42 ` [PATCH 06/11] gpio: vf610: drop unnecessary wrappers Peng Fan (OSS)
@ 2026-10-29 14:45   ` Daniel Baluta
  2026-10-29 14:53   ` Frank Li
  1 sibling, 0 replies; 20+ messages in thread
From: Daniel Baluta @ 2026-10-29 14:45 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 3:52 PM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>
> From: Peng Fan <peng.fan@nxp.com>
>
> Remove trivial wrapper functions vf610_gpio_writel() and
> vf610_gpio_readl() that just called the relaxed versions directly.
> Replace their usage with direct calls to writel_relaxed() and
> readl_relaxed().
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake
  2026-10-29 13:42 ` [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake Peng Fan (OSS)
@ 2026-10-29 14:46   ` Daniel Baluta
  2026-10-29 14:46   ` Frank Li
  1 sibling, 0 replies; 20+ messages in thread
From: Daniel Baluta @ 2026-10-29 14:46 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 3:51 PM Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
>
> From: Peng Fan <peng.fan@nxp.com>
>
> Replace the manual enable/disable irq wake logic with a single call to
> irq_set_irq_wake() to simplify code.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake
  2026-10-29 13:42 ` [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake Peng Fan (OSS)
  2026-10-29 14:46   ` Daniel Baluta
@ 2026-10-29 14:46   ` Frank Li
  1 sibling, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-10-29 14:46 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 09:42:27PM +0800, Peng Fan (OSS) wrote:

subject: need () after irq_set_irq_wake

Frank

> From: Peng Fan <peng.fan@nxp.com>
>
> Replace the manual enable/disable irq wake logic with a single call to
> irq_set_irq_wake() to simplify code.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/gpio/gpio-vf610.c | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
> index 44b846ff1b93..eccc79a4d96b 100644
> --- a/drivers/gpio/gpio-vf610.c
> +++ b/drivers/gpio/gpio-vf610.c
> @@ -188,14 +188,8 @@ static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
>  {
>  	struct vf610_gpio_port *port =
>  		gpiochip_get_data(irq_data_get_irq_chip_data(d));
> -	int ret;
> -
> -	if (enable)
> -		ret = enable_irq_wake(port->irq);
> -	else
> -		ret = disable_irq_wake(port->irq);
>
> -	return ret;
> +	return irq_set_irq_wake(port->irq, enable);
>  }
>
>  static const struct irq_chip vf610_irqchip = {
>
> --
> 2.51.0
>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling
  2026-10-29 13:42 ` [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling Peng Fan (OSS)
@ 2026-10-29 14:50   ` Frank Li
  0 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-10-29 14:50 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

subject: devm_clk_get_optional_enabled()

Frank

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 05/11] gpio: vf610: drop unneeded header
  2026-10-29 13:42 ` [PATCH 05/11] gpio: vf610: drop unneeded header Peng Fan (OSS)
@ 2026-10-29 14:51   ` Frank Li
  0 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-10-29 14:51 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 09:42:29PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Remove the unused pinctrl consumer header since the driver doesn't use
> any pinctrl consumer functions.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/gpio/gpio-vf610.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
> index fda3633ee2b3..4c46342bc66c 100644
> --- a/drivers/gpio/gpio-vf610.c
> +++ b/drivers/gpio/gpio-vf610.c
> @@ -16,7 +16,6 @@
>  #include <linux/io.h>
>  #include <linux/ioport.h>
>  #include <linux/irq.h>
> -#include <linux/pinctrl/consumer.h>
>  #include <linux/platform_device.h>
>  #include <linux/property.h>
>
>
> --
> 2.51.0
>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 06/11] gpio: vf610: drop unnecessary wrappers
  2026-10-29 13:42 ` [PATCH 06/11] gpio: vf610: drop unnecessary wrappers Peng Fan (OSS)
  2026-10-29 14:45   ` Daniel Baluta
@ 2026-10-29 14:53   ` Frank Li
  1 sibling, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-10-29 14:53 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Linus Walleij, Bartosz Golaszewski, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Dong Aisheng,
	Jacky Bai, Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Bartosz Golaszewski, linux-gpio, devicetree,
	linux-kernel, imx, linux-arm-kernel, Peng Fan

On Thu, Oct 29, 2026 at 09:42:30PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Remove trivial wrapper functions vf610_gpio_writel() and
> vf610_gpio_readl() that just called the relaxed versions directly.
> Replace their usage with direct calls to writel_relaxed() and
> readl_relaxed().
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---

Some time use simple wrapers is for adding debug message for each
register read and write when debugs.

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/gpio/gpio-vf610.c | 26 ++++++++------------------
>  1 file changed, 8 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
> index 4c46342bc66c..f6712bb45841 100644
> --- a/drivers/gpio/gpio-vf610.c
> +++ b/drivers/gpio/gpio-vf610.c
> @@ -82,16 +82,6 @@ static const struct of_device_id vf610_gpio_dt_ids[] = {
>  };
>  MODULE_DEVICE_TABLE(of, vf610_gpio_dt_ids);
>
> -static inline void vf610_gpio_writel(u32 val, void __iomem *reg)
> -{
> -	writel_relaxed(val, reg);
> -}
> -
> -static inline u32 vf610_gpio_readl(void __iomem *reg)
> -{
> -	return readl_relaxed(reg);
> -}
> -
>  static void vf610_gpio_irq_handler(struct irq_desc *desc)
>  {
>  	struct vf610_gpio_port *port =
> @@ -102,10 +92,10 @@ static void vf610_gpio_irq_handler(struct irq_desc *desc)
>
>  	chained_irq_enter(chip, desc);
>
> -	irq_isfr = vf610_gpio_readl(port->base + PORT_ISFR);
> +	irq_isfr = readl_relaxed(port->base + PORT_ISFR);
>
>  	for_each_set_bit(pin, &irq_isfr, VF610_GPIO_PER_PORT) {
> -		vf610_gpio_writel(BIT(pin), port->base + PORT_ISFR);
> +		writel_relaxed(BIT(pin), port->base + PORT_ISFR);
>
>  		generic_handle_domain_irq(port->chip.gc.irq.domain, pin);
>  	}
> @@ -119,7 +109,7 @@ static void vf610_gpio_irq_ack(struct irq_data *d)
>  		gpiochip_get_data(irq_data_get_irq_chip_data(d));
>  	int gpio = d->hwirq;
>
> -	vf610_gpio_writel(BIT(gpio), port->base + PORT_ISFR);
> +	writel_relaxed(BIT(gpio), port->base + PORT_ISFR);
>  }
>
>  static int vf610_gpio_irq_set_type(struct irq_data *d, u32 type)
> @@ -165,7 +155,7 @@ static void vf610_gpio_irq_mask(struct irq_data *d)
>  	irq_hw_number_t gpio_num = irqd_to_hwirq(d);
>  	void __iomem *pcr_base = port->base + PORT_PCR(gpio_num);
>
> -	vf610_gpio_writel(0, pcr_base);
> +	writel_relaxed(0, pcr_base);
>  	gpiochip_disable_irq(gc, gpio_num);
>  }
>
> @@ -177,8 +167,8 @@ static void vf610_gpio_irq_unmask(struct irq_data *d)
>  	void __iomem *pcr_base = port->base + PORT_PCR(gpio_num);
>
>  	gpiochip_enable_irq(gc, gpio_num);
> -	vf610_gpio_writel(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET,
> -			  pcr_base);
> +	writel_relaxed(port->irqc[gpio_num] << PORT_PCR_IRQC_OFFSET,
> +		       pcr_base);
>  }
>
>  static int vf610_gpio_irq_set_wake(struct irq_data *d, u32 enable)
> @@ -290,10 +280,10 @@ static int vf610_gpio_probe(struct platform_device *pdev)
>
>  	/* Mask all GPIO interrupts */
>  	for (i = 0; i < gc->ngpio; i++)
> -		vf610_gpio_writel(0, port->base + PORT_PCR(i));
> +		writel_relaxed(0, port->base + PORT_PCR(i));
>
>  	/* Clear the interrupt status register for all GPIO's */
> -	vf610_gpio_writel(~0, port->base + PORT_ISFR);
> +	writel_relaxed(~0, port->base + PORT_ISFR);
>
>  	girq = &gc->irq;
>  	gpio_irq_chip_set_chip(girq, &vf610_irqchip);
>
> --
> 2.51.0
>
>

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-10-29 14:53 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29 13:42 [PATCH 00/11] gpio: vf610: fix clocks and misc cleanup Peng Fan (OSS)
2026-10-29 13:42 ` [PATCH 01/11] dt-bindings: gpio: vf610: fix clock requirements per SoC Peng Fan (OSS)
2026-10-29 14:30   ` Frank Li
2026-10-29 13:42 ` [PATCH 02/11] gpio: vf610: propagate return value to callers Peng Fan (OSS)
2026-10-29 13:57   ` sashiko-bot
2026-10-29 13:42 ` [PATCH 03/11] gpio: vf610: simplify with irq_set_irq_wake Peng Fan (OSS)
2026-10-29 14:46   ` Daniel Baluta
2026-10-29 14:46   ` Frank Li
2026-10-29 13:42 ` [PATCH 04/11] gpio: vf610: use devm_clk_get_optional_enabled for clock handling Peng Fan (OSS)
2026-10-29 14:50   ` Frank Li
2026-10-29 13:42 ` [PATCH 05/11] gpio: vf610: drop unneeded header Peng Fan (OSS)
2026-10-29 14:51   ` Frank Li
2026-10-29 13:42 ` [PATCH 06/11] gpio: vf610: drop unnecessary wrappers Peng Fan (OSS)
2026-10-29 14:45   ` Daniel Baluta
2026-10-29 14:53   ` Frank Li
2026-10-29 13:42 ` [PATCH 07/11] arm64: dts: imx8ulp: fix gpio clocks Peng Fan (OSS)
2026-10-29 13:42 ` [PATCH 08/11] arm64: dts: imx93: " Peng Fan (OSS)
2026-10-29 13:42 ` [PATCH 09/11] arm64: dts: imx95: " Peng Fan (OSS)
2026-10-29 13:42 ` [PATCH 10/11] arm64: dts: imx952: " Peng Fan (OSS)
2026-10-29 13:42 ` [PATCH 11/11] arm64: dts: imx94: add clocks for gpio controller Peng Fan (OSS)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox