linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver
@ 2025-05-19  6:03 Haibo Chen
  2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Haibo Chen @ 2025-05-19  6:03 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree, imx, linux-arm-kernel, linux-kernel, linux-gpio,
	Haibo Chen

Not all GPIO ports have 32 pads, so add 'ngpios' property to specify
the number. This can save some memory when alloc bitmap for GPIO,
besides GPIO tools like gpioinfo will show the correct information.

Some GPIO ports even more special, e.g. GPIO7 on imx94, it only support
IO0~IO9 and IO16~IO27, so add 'gpio-reserved-ranges' property.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
Changes in v2:
- No changes for PATCH1.
- Add PATCH2 in this verson to avoid dt-binding check.
- Link to v1: https://lore.kernel.org/r/20250516-gpio-dts-v1-1-a9c3505f54c5@nxp.com

---
Haibo Chen (2):
      ARM: dts: add ngpios for vf610 compatible gpio controllers
      dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges

 Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
 arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi                 | 4 ++++
 arch/arm/boot/dts/nxp/vf/vfxxx.dtsi                    | 5 +++++
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi             | 3 +++
 arch/arm64/boot/dts/freescale/imx93.dtsi               | 4 ++++
 arch/arm64/boot/dts/freescale/imx94.dtsi               | 7 +++++++
 arch/arm64/boot/dts/freescale/imx95.dtsi               | 5 +++++
 7 files changed, 34 insertions(+)
---
base-commit: 484803582c77061b470ac64a634f25f89715be3f
change-id: 20250516-gpio-dts-408311b633c4

Best regards,
-- 
Haibo Chen <haibo.chen@nxp.com>



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

* [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers
  2025-05-19  6:03 [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Haibo Chen
@ 2025-05-19  6:03 ` Haibo Chen
  2025-05-19 13:06   ` Peng Fan
  2025-05-19 16:54   ` Frank Li
  2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
  2025-05-20 21:57 ` [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Linus Walleij
  2 siblings, 2 replies; 13+ messages in thread
From: Haibo Chen @ 2025-05-19  6:03 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree, imx, linux-arm-kernel, linux-kernel, linux-gpio,
	Haibo Chen

After commit da5dd31efd24 ("gpio: vf610: Switch to gpio-mmio"), vf610
gpio driver no more use the static number 32 for gc->ngpio, user has a
chance to config it through device tree for each port.

And some gpio controllers did have less pads. So add 'ngpios' here,
this can save some memory when request bitmap, and also show user
more accurate information when use gpio tools.

Besides, some gpio controllers have hole in the gpio ranges, so use
'gpio-reserved-ranges' to cover that, then the gpioinfo tool show the
correct result.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi     | 4 ++++
 arch/arm/boot/dts/nxp/vf/vfxxx.dtsi        | 5 +++++
 arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 3 +++
 arch/arm64/boot/dts/freescale/imx93.dtsi   | 4 ++++
 arch/arm64/boot/dts/freescale/imx94.dtsi   | 7 +++++++
 arch/arm64/boot/dts/freescale/imx95.dtsi   | 5 +++++
 6 files changed, 28 insertions(+)

diff --git a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
index 3c6ef7bfba60986b797bb01b843830d364c96d45..880b9a4f32b0846a773dbf9ad30715c84ac2fda6 100644
--- a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
@@ -399,6 +399,7 @@ gpio_ptc: gpio@40ae0000 {
 				 <&pcc3 IMX7ULP_CLK_PCTLC>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc1 0 0 20>;
+			ngpios = <20>;
 		};
 
 		gpio_ptd: gpio@40af0000 {
@@ -413,6 +414,7 @@ gpio_ptd: gpio@40af0000 {
 				 <&pcc3 IMX7ULP_CLK_PCTLD>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc1 0 32 12>;
+			ngpios = <12>;
 		};
 
 		gpio_pte: gpio@40b00000 {
@@ -427,6 +429,7 @@ gpio_pte: gpio@40b00000 {
 				 <&pcc3 IMX7ULP_CLK_PCTLE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc1 0 64 16>;
+			ngpios = <16>;
 		};
 
 		gpio_ptf: gpio@40b10000 {
@@ -441,6 +444,7 @@ gpio_ptf: gpio@40b10000 {
 				 <&pcc3 IMX7ULP_CLK_PCTLF>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc1 0 96 20>;
+			ngpios = <20>;
 		};
 	};
 
diff --git a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
index 597f20be82f1ee044e14bfaf3bd05cff37a8ad39..a275821c35d41e97eb2139a081ef5765d07672aa 100644
--- a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
+++ b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
@@ -318,6 +318,7 @@ gpio0: gpio@40049000 {
 				interrupt-controller;
 				#interrupt-cells = <2>;
 				gpio-ranges = <&iomuxc 0 0 32>;
+				ngpios = <32>;
 			};
 
 			gpio1: gpio@4004a000 {
@@ -329,6 +330,7 @@ gpio1: gpio@4004a000 {
 				interrupt-controller;
 				#interrupt-cells = <2>;
 				gpio-ranges = <&iomuxc 0 32 32>;
+				ngpios = <32>;
 			};
 
 			gpio2: gpio@4004b000 {
@@ -340,6 +342,7 @@ gpio2: gpio@4004b000 {
 				interrupt-controller;
 				#interrupt-cells = <2>;
 				gpio-ranges = <&iomuxc 0 64 32>;
+				ngpios = <32>;
 			};
 
 			gpio3: gpio@4004c000 {
@@ -351,6 +354,7 @@ gpio3: gpio@4004c000 {
 				interrupt-controller;
 				#interrupt-cells = <2>;
 				gpio-ranges = <&iomuxc 0 96 32>;
+				ngpios = <32>;
 			};
 
 			gpio4: gpio@4004d000 {
@@ -362,6 +366,7 @@ gpio4: gpio@4004d000 {
 				interrupt-controller;
 				#interrupt-cells = <2>;
 				gpio-ranges = <&iomuxc 0 128 7>;
+				ngpios = <7>;
 			};
 
 			anatop: anatop@40050000 {
diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
index 2562a35286c208869d11d7fb970ac84638f45088..13b01f3aa2a4950c37e72e04f6bfb5995dc19178 100644
--- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
@@ -686,6 +686,7 @@ gpioe: gpio@2d000000 {
 					 <&pcc4 IMX8ULP_CLK_PCTLE>;
 				clock-names = "gpio", "port";
 				gpio-ranges = <&iomuxc1 0 32 24>;
+				ngpios = <24>;
 		};
 
 		gpiof: gpio@2d010000 {
@@ -701,6 +702,7 @@ gpiof: gpio@2d010000 {
 					 <&pcc4 IMX8ULP_CLK_PCTLF>;
 				clock-names = "gpio", "port";
 				gpio-ranges = <&iomuxc1 0 64 32>;
+				ngpios = <32>;
 		};
 
 		per_bridge5: bus@2d800000 {
@@ -855,6 +857,7 @@ gpiod: gpio@2e200000 {
 				 <&pcc5 IMX8ULP_CLK_RGPIOD>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc1 0 0 24>;
+			ngpios = <24>;
 		};
 	};
 };
diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi b/arch/arm64/boot/dts/freescale/imx93.dtsi
index 64cd0776b43d38219fee312baadd4665674a141e..52be83a168d9ee6452a63039c89169d49b63eb60 100644
--- a/arch/arm64/boot/dts/freescale/imx93.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
@@ -1197,6 +1197,7 @@ gpio2: gpio@43810000 {
 				 <&clk IMX93_CLK_GPIO2_GATE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 4 30>;
+			ngpios = <30>;
 		};
 
 		gpio3: gpio@43820000 {
@@ -1213,6 +1214,7 @@ gpio3: gpio@43820000 {
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8 66 18>,
 				      <&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
+			ngpios = <32>;
 		};
 
 		gpio4: gpio@43830000 {
@@ -1228,6 +1230,7 @@ gpio4: gpio@43830000 {
 				 <&clk IMX93_CLK_GPIO4_GATE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
+			ngpios = <30>;
 		};
 
 		gpio1: gpio@47400000 {
@@ -1243,6 +1246,7 @@ gpio1: gpio@47400000 {
 				 <&clk IMX93_CLK_GPIO1_GATE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 92 16>;
+			ngpios = <16>;
 		};
 
 		ocotp: efuse@47510000 {
diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi b/arch/arm64/boot/dts/freescale/imx94.dtsi
index 3661ea48d7d2994df7b02084e9681beb303aa133..b8ffc428e95be1938bf5e73316b4163acaa04701 100644
--- a/arch/arm64/boot/dts/freescale/imx94.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
@@ -785,6 +785,7 @@ gpio2: gpio@43810000 {
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 4 32>;
+			ngpios = <32>;
 		};
 
 		gpio3: gpio@43820000 {
@@ -797,6 +798,7 @@ gpio3: gpio@43820000 {
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 36 26>;
+			ngpios = <26>;
 		};
 
 		gpio4: gpio@43840000 {
@@ -810,6 +812,7 @@ gpio4: gpio@43840000 {
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
 				      <&scmi_iomuxc 8 140 12>, <&scmi_iomuxc 20 164 12>;
+			ngpios = <32>;
 		};
 
 		gpio5: gpio@43850000 {
@@ -822,6 +825,7 @@ gpio5: gpio@43850000 {
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 108 32>;
+			ngpios = <32>;
 		};
 
 		gpio6: gpio@43860000 {
@@ -834,6 +838,7 @@ gpio6: gpio@43860000 {
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 66 32>;
+			ngpios = <32>;
 		};
 
 		gpio7: gpio@43870000 {
@@ -846,6 +851,8 @@ gpio7: gpio@43870000 {
 			#gpio-cells = <2>;
 			gpio-controller;
 			gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152 12>;
+			gpio-reserved-ranges = <10 6>;
+			ngpios = <28>;
 		};
 
 		aips1: bus@44000000 {
diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi
index 632631a2911224cadc16a943cdb467e091e43384..a2f4fcffcde59849bafcedced3ff317ca6c7cf78 100644
--- a/arch/arm64/boot/dts/freescale/imx95.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
@@ -1152,6 +1152,7 @@ gpio2: gpio@43810000 {
 				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&scmi_iomuxc 0 4 32>;
+			ngpios = <32>;
 		};
 
 		gpio3: gpio@43820000 {
@@ -1168,6 +1169,7 @@ gpio3: gpio@43820000 {
 			clock-names = "gpio", "port";
 			gpio-ranges = <&scmi_iomuxc 0 104 8>, <&scmi_iomuxc 8 74 18>,
 				      <&scmi_iomuxc 26 42 2>, <&scmi_iomuxc 28 0 4>;
+			ngpios = <32>;
 		};
 
 		gpio4: gpio@43840000 {
@@ -1183,6 +1185,7 @@ gpio4: gpio@43840000 {
 				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&scmi_iomuxc 0 46 28>, <&scmi_iomuxc 28 44 2>;
+			ngpios = <30>;
 		};
 
 		gpio5: gpio@43850000 {
@@ -1198,6 +1201,7 @@ gpio5: gpio@43850000 {
 				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&scmi_iomuxc 0 92 12>, <&scmi_iomuxc 12 36 6>;
+			ngpios = <18>;
 		};
 
 		aips1: bus@44000000 {
@@ -1508,6 +1512,7 @@ gpio1: gpio@47400000 {
 				 <&scmi_clk IMX95_CLK_M33>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&scmi_iomuxc 0 112 16>;
+			ngpios = <16>;
 			status = "disabled";
 		};
 

-- 
2.34.1



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

* [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19  6:03 [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Haibo Chen
  2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
@ 2025-05-19  6:03 ` Haibo Chen
  2025-05-19 14:35   ` Stefan Wahren
                     ` (2 more replies)
  2025-05-20 21:57 ` [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Linus Walleij
  2 siblings, 3 replies; 13+ messages in thread
From: Haibo Chen @ 2025-05-19  6:03 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree, imx, linux-arm-kernel, linux-kernel, linux-gpio,
	Haibo Chen

Add optional ngpios and gpio-reserved-ranges property

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c49417bbdd82f2c45756 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -70,6 +70,12 @@ properties:
     minItems: 1
     maxItems: 4
 
+  gpio-reserved-ranges: true
+
+  ngpios:
+    minimum: 1
+    maximum: 32
+
 patternProperties:
   "^.+-hog(-[0-9]+)?$":
     type: object

-- 
2.34.1



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

* RE: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers
  2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
@ 2025-05-19 13:06   ` Peng Fan
  2025-05-20  1:55     ` Bough Chen
  2025-05-19 16:54   ` Frank Li
  1 sibling, 1 reply; 13+ messages in thread
From: Peng Fan @ 2025-05-19 13:06 UTC (permalink / raw)
  To: Bough Chen, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,
	Bough Chen

> Subject: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible
> gpio controllers
> 
> After commit da5dd31efd24 ("gpio: vf610: Switch to gpio-mmio"),
> vf610 gpio driver no more use the static number 32 for gc->ngpio, user
> has a chance to config it through device tree for each port.
> 
> And some gpio controllers did have less pads. So add 'ngpios' here, this
> can save some memory when request bitmap, and also show user
> more accurate information when use gpio tools.
> 
> Besides, some gpio controllers have hole in the gpio ranges, so use
> 'gpio-reserved-ranges' to cover that, then the gpioinfo tool show the
> correct result.
> 
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
>  arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi     | 4 ++++
>  arch/arm/boot/dts/nxp/vf/vfxxx.dtsi        | 5 +++++
>  arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 3 +++
>  arch/arm64/boot/dts/freescale/imx93.dtsi   | 4 ++++
>  arch/arm64/boot/dts/freescale/imx94.dtsi   | 7 +++++++
>  arch/arm64/boot/dts/freescale/imx95.dtsi   | 5 +++++

arm64 and arm should be in separated patch.

Regards,
Peng.

>  6 files changed, 28 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> index
> 3c6ef7bfba60986b797bb01b843830d364c96d45..880b9a4f32b0846a
> 773dbf9ad30715c84ac2fda6 100644
> --- a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> +++ b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> @@ -399,6 +399,7 @@ gpio_ptc: gpio@40ae0000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLC>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 0 20>;
> +			ngpios = <20>;
>  		};
> 
>  		gpio_ptd: gpio@40af0000 {
> @@ -413,6 +414,7 @@ gpio_ptd: gpio@40af0000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLD>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 32 12>;
> +			ngpios = <12>;
>  		};
> 
>  		gpio_pte: gpio@40b00000 {
> @@ -427,6 +429,7 @@ gpio_pte: gpio@40b00000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 64 16>;
> +			ngpios = <16>;
>  		};
> 
>  		gpio_ptf: gpio@40b10000 {
> @@ -441,6 +444,7 @@ gpio_ptf: gpio@40b10000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLF>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 96 20>;
> +			ngpios = <20>;
>  		};
>  	};
> 
> diff --git a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> index
> 597f20be82f1ee044e14bfaf3bd05cff37a8ad39..a275821c35d41e97eb
> 2139a081ef5765d07672aa 100644
> --- a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> +++ b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> @@ -318,6 +318,7 @@ gpio0: gpio@40049000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 0 32>;
> +				ngpios = <32>;
>  			};
> 
>  			gpio1: gpio@4004a000 {
> @@ -329,6 +330,7 @@ gpio1: gpio@4004a000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 32 32>;
> +				ngpios = <32>;
>  			};
> 
>  			gpio2: gpio@4004b000 {
> @@ -340,6 +342,7 @@ gpio2: gpio@4004b000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 64 32>;
> +				ngpios = <32>;
>  			};
> 
>  			gpio3: gpio@4004c000 {
> @@ -351,6 +354,7 @@ gpio3: gpio@4004c000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 96 32>;
> +				ngpios = <32>;
>  			};
> 
>  			gpio4: gpio@4004d000 {
> @@ -362,6 +366,7 @@ gpio4: gpio@4004d000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 128 7>;
> +				ngpios = <7>;
>  			};
> 
>  			anatop: anatop@40050000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> index
> 2562a35286c208869d11d7fb970ac84638f45088..13b01f3aa2a4950c
> 37e72e04f6bfb5995dc19178 100644
> --- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> @@ -686,6 +686,7 @@ gpioe: gpio@2d000000 {
>  					 <&pcc4
> IMX8ULP_CLK_PCTLE>;
>  				clock-names = "gpio", "port";
>  				gpio-ranges = <&iomuxc1 0 32 24>;
> +				ngpios = <24>;
>  		};
> 
>  		gpiof: gpio@2d010000 {
> @@ -701,6 +702,7 @@ gpiof: gpio@2d010000 {
>  					 <&pcc4
> IMX8ULP_CLK_PCTLF>;
>  				clock-names = "gpio", "port";
>  				gpio-ranges = <&iomuxc1 0 64 32>;
> +				ngpios = <32>;
>  		};
> 
>  		per_bridge5: bus@2d800000 {
> @@ -855,6 +857,7 @@ gpiod: gpio@2e200000 {
>  				 <&pcc5 IMX8ULP_CLK_RGPIOD>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 0 24>;
> +			ngpios = <24>;
>  		};
>  	};
>  };
> diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi
> b/arch/arm64/boot/dts/freescale/imx93.dtsi
> index
> 64cd0776b43d38219fee312baadd4665674a141e..52be83a168d9ee64
> 52a63039c89169d49b63eb60 100644
> --- a/arch/arm64/boot/dts/freescale/imx93.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
> @@ -1197,6 +1197,7 @@ gpio2: gpio@43810000 {
>  				 <&clk IMX93_CLK_GPIO2_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 4 30>;
> +			ngpios = <30>;
>  		};
> 
>  		gpio3: gpio@43820000 {
> @@ -1213,6 +1214,7 @@ gpio3: gpio@43820000 {
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8
> 66 18>,
>  				      <&iomuxc 26 34 2>, <&iomuxc 28
> 0 4>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio4: gpio@43830000 {
> @@ -1228,6 +1230,7 @@ gpio4: gpio@43830000 {
>  				 <&clk IMX93_CLK_GPIO4_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc
> 28 36 2>;
> +			ngpios = <30>;
>  		};
> 
>  		gpio1: gpio@47400000 {
> @@ -1243,6 +1246,7 @@ gpio1: gpio@47400000 {
>  				 <&clk IMX93_CLK_GPIO1_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 92 16>;
> +			ngpios = <16>;
>  		};
> 
>  		ocotp: efuse@47510000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi
> b/arch/arm64/boot/dts/freescale/imx94.dtsi
> index
> 3661ea48d7d2994df7b02084e9681beb303aa133..b8ffc428e95be193
> 8bf5e73316b4163acaa04701 100644
> --- a/arch/arm64/boot/dts/freescale/imx94.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
> @@ -785,6 +785,7 @@ gpio2: gpio@43810000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio3: gpio@43820000 {
> @@ -797,6 +798,7 @@ gpio3: gpio@43820000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 36 26>;
> +			ngpios = <26>;
>  		};
> 
>  		gpio4: gpio@43840000 {
> @@ -810,6 +812,7 @@ gpio4: gpio@43840000 {
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 62 4>,
> <&scmi_iomuxc 4 0 4>,
>  				      <&scmi_iomuxc 8 140 12>,
> <&scmi_iomuxc 20 164 12>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio5: gpio@43850000 {
> @@ -822,6 +825,7 @@ gpio5: gpio@43850000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 108 32>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio6: gpio@43860000 {
> @@ -834,6 +838,7 @@ gpio6: gpio@43860000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 66 32>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio7: gpio@43870000 {
> @@ -846,6 +851,8 @@ gpio7: gpio@43870000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 98 10>,
> <&scmi_iomuxc 16 152 12>;
> +			gpio-reserved-ranges = <10 6>;
> +			ngpios = <28>;
>  		};
> 
>  		aips1: bus@44000000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi
> b/arch/arm64/boot/dts/freescale/imx95.dtsi
> index
> 632631a2911224cadc16a943cdb467e091e43384..a2f4fcffcde59849b
> afcedced3ff317ca6c7cf78 100644
> --- a/arch/arm64/boot/dts/freescale/imx95.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
> @@ -1152,6 +1152,7 @@ gpio2: gpio@43810000 {
>  				 <&scmi_clk
> IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio3: gpio@43820000 {
> @@ -1168,6 +1169,7 @@ gpio3: gpio@43820000 {
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 104 8>,
> <&scmi_iomuxc 8 74 18>,
>  				      <&scmi_iomuxc 26 42 2>,
> <&scmi_iomuxc 28 0 4>;
> +			ngpios = <32>;
>  		};
> 
>  		gpio4: gpio@43840000 {
> @@ -1183,6 +1185,7 @@ gpio4: gpio@43840000 {
>  				 <&scmi_clk
> IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 46 28>,
> <&scmi_iomuxc 28 44 2>;
> +			ngpios = <30>;
>  		};
> 
>  		gpio5: gpio@43850000 {
> @@ -1198,6 +1201,7 @@ gpio5: gpio@43850000 {
>  				 <&scmi_clk
> IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 92 12>,
> <&scmi_iomuxc 12 36 6>;
> +			ngpios = <18>;
>  		};
> 
>  		aips1: bus@44000000 {
> @@ -1508,6 +1512,7 @@ gpio1: gpio@47400000 {
>  				 <&scmi_clk IMX95_CLK_M33>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 112 16>;
> +			ngpios = <16>;
>  			status = "disabled";
>  		};
> 
> 
> --
> 2.34.1
> 


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

* Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
@ 2025-05-19 14:35   ` Stefan Wahren
  2025-05-20  1:54     ` Bough Chen
  2025-05-19 15:26   ` Frank Li
  2025-05-19 16:04   ` Conor Dooley
  2 siblings, 1 reply; 13+ messages in thread
From: Stefan Wahren @ 2025-05-19 14:35 UTC (permalink / raw)
  To: Haibo Chen, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Rob Herring, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree, imx, linux-arm-kernel, linux-kernel, linux-gpio

Hi Haibo,

Am 19.05.25 um 08:03 schrieb Haibo Chen:
> Add optional ngpios and gpio-reserved-ranges property
>
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
could you please move the binding changes before the DTS changes, to 
avoid temporary DT build warnings.

Thanks
> ---
>   Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c49417bbdd82f2c45756 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -70,6 +70,12 @@ properties:
>       minItems: 1
>       maxItems: 4
>   
> +  gpio-reserved-ranges: true
> +
> +  ngpios:
> +    minimum: 1
> +    maximum: 32
> +
>   patternProperties:
>     "^.+-hog(-[0-9]+)?$":
>       type: object
>



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

* Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
  2025-05-19 14:35   ` Stefan Wahren
@ 2025-05-19 15:26   ` Frank Li
  2025-05-20  1:56     ` Bough Chen
  2025-05-19 16:04   ` Conor Dooley
  2 siblings, 1 reply; 13+ messages in thread
From: Frank Li @ 2025-05-19 15:26 UTC (permalink / raw)
  To: Haibo Chen
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski, devicetree, imx,
	linux-arm-kernel, linux-kernel, linux-gpio

On Mon, May 19, 2025 at 02:03:43PM +0800, Haibo Chen wrote:
> Add optional ngpios and gpio-reserved-ranges property

Nit: Add "." after sentense.

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

>
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
>  Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c49417bbdd82f2c45756 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -70,6 +70,12 @@ properties:
>      minItems: 1
>      maxItems: 4
>
> +  gpio-reserved-ranges: true
> +
> +  ngpios:
> +    minimum: 1
> +    maximum: 32
> +
>  patternProperties:
>    "^.+-hog(-[0-9]+)?$":
>      type: object
>
> --
> 2.34.1
>


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

* Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
  2025-05-19 14:35   ` Stefan Wahren
  2025-05-19 15:26   ` Frank Li
@ 2025-05-19 16:04   ` Conor Dooley
  2025-05-20  2:00     ` Bough Chen
  2 siblings, 1 reply; 13+ messages in thread
From: Conor Dooley @ 2025-05-19 16:04 UTC (permalink / raw)
  To: Haibo Chen
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski, devicetree, imx,
	linux-arm-kernel, linux-kernel, linux-gpio

[-- Attachment #1: Type: text/plain, Size: 1047 bytes --]

On Mon, May 19, 2025 at 02:03:43PM +0800, Haibo Chen wrote:
> Add optional ngpios and gpio-reserved-ranges property
> 
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
>  Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c49417bbdd82f2c45756 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -70,6 +70,12 @@ properties:
>      minItems: 1
>      maxItems: 4
>  
> +  gpio-reserved-ranges: true
> +
> +  ngpios:
> +    minimum: 1
> +    maximum: 32

Do these platforms have a default? I'd expect one to be added that
contains the default value from what the driver does now.

> +
>  patternProperties:
>    "^.+-hog(-[0-9]+)?$":
>      type: object
> 
> -- 
> 2.34.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers
  2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
  2025-05-19 13:06   ` Peng Fan
@ 2025-05-19 16:54   ` Frank Li
  1 sibling, 0 replies; 13+ messages in thread
From: Frank Li @ 2025-05-19 16:54 UTC (permalink / raw)
  To: Haibo Chen
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski, devicetree, imx,
	linux-arm-kernel, linux-kernel, linux-gpio

On Mon, May 19, 2025 at 02:03:42PM +0800, Haibo Chen wrote:
> After commit da5dd31efd24 ("gpio: vf610: Switch to gpio-mmio"), vf610
> gpio driver no more use the static number 32 for gc->ngpio, user has a
> chance to config it through device tree for each port.

After commit da5dd31efd24 ("gpio: vf610: Switch to gpio-mmio"), the vf610
GPIO driver no longer uses the static number 32 for gc->ngpio. This allows
users to configure the number of GPIOs per port.

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

>
> And some gpio controllers did have less pads. So add 'ngpios' here,
> this can save some memory when request bitmap, and also show user
> more accurate information when use gpio tools.
>
> Besides, some gpio controllers have hole in the gpio ranges, so use
> 'gpio-reserved-ranges' to cover that, then the gpioinfo tool show the
> correct result.
>
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
>  arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi     | 4 ++++
>  arch/arm/boot/dts/nxp/vf/vfxxx.dtsi        | 5 +++++
>  arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 3 +++
>  arch/arm64/boot/dts/freescale/imx93.dtsi   | 4 ++++
>  arch/arm64/boot/dts/freescale/imx94.dtsi   | 7 +++++++
>  arch/arm64/boot/dts/freescale/imx95.dtsi   | 5 +++++
>  6 files changed, 28 insertions(+)
>
> diff --git a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> index 3c6ef7bfba60986b797bb01b843830d364c96d45..880b9a4f32b0846a773dbf9ad30715c84ac2fda6 100644
> --- a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> +++ b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> @@ -399,6 +399,7 @@ gpio_ptc: gpio@40ae0000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLC>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 0 20>;
> +			ngpios = <20>;
>  		};
>
>  		gpio_ptd: gpio@40af0000 {
> @@ -413,6 +414,7 @@ gpio_ptd: gpio@40af0000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLD>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 32 12>;
> +			ngpios = <12>;
>  		};
>
>  		gpio_pte: gpio@40b00000 {
> @@ -427,6 +429,7 @@ gpio_pte: gpio@40b00000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 64 16>;
> +			ngpios = <16>;
>  		};
>
>  		gpio_ptf: gpio@40b10000 {
> @@ -441,6 +444,7 @@ gpio_ptf: gpio@40b10000 {
>  				 <&pcc3 IMX7ULP_CLK_PCTLF>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 96 20>;
> +			ngpios = <20>;
>  		};
>  	};
>
> diff --git a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> index 597f20be82f1ee044e14bfaf3bd05cff37a8ad39..a275821c35d41e97eb2139a081ef5765d07672aa 100644
> --- a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> +++ b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> @@ -318,6 +318,7 @@ gpio0: gpio@40049000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 0 32>;
> +				ngpios = <32>;
>  			};
>
>  			gpio1: gpio@4004a000 {
> @@ -329,6 +330,7 @@ gpio1: gpio@4004a000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 32 32>;
> +				ngpios = <32>;
>  			};
>
>  			gpio2: gpio@4004b000 {
> @@ -340,6 +342,7 @@ gpio2: gpio@4004b000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 64 32>;
> +				ngpios = <32>;
>  			};
>
>  			gpio3: gpio@4004c000 {
> @@ -351,6 +354,7 @@ gpio3: gpio@4004c000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 96 32>;
> +				ngpios = <32>;
>  			};
>
>  			gpio4: gpio@4004d000 {
> @@ -362,6 +366,7 @@ gpio4: gpio@4004d000 {
>  				interrupt-controller;
>  				#interrupt-cells = <2>;
>  				gpio-ranges = <&iomuxc 0 128 7>;
> +				ngpios = <7>;
>  			};
>
>  			anatop: anatop@40050000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> index 2562a35286c208869d11d7fb970ac84638f45088..13b01f3aa2a4950c37e72e04f6bfb5995dc19178 100644
> --- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> @@ -686,6 +686,7 @@ gpioe: gpio@2d000000 {
>  					 <&pcc4 IMX8ULP_CLK_PCTLE>;
>  				clock-names = "gpio", "port";
>  				gpio-ranges = <&iomuxc1 0 32 24>;
> +				ngpios = <24>;
>  		};
>
>  		gpiof: gpio@2d010000 {
> @@ -701,6 +702,7 @@ gpiof: gpio@2d010000 {
>  					 <&pcc4 IMX8ULP_CLK_PCTLF>;
>  				clock-names = "gpio", "port";
>  				gpio-ranges = <&iomuxc1 0 64 32>;
> +				ngpios = <32>;
>  		};
>
>  		per_bridge5: bus@2d800000 {
> @@ -855,6 +857,7 @@ gpiod: gpio@2e200000 {
>  				 <&pcc5 IMX8ULP_CLK_RGPIOD>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc1 0 0 24>;
> +			ngpios = <24>;
>  		};
>  	};
>  };
> diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi b/arch/arm64/boot/dts/freescale/imx93.dtsi
> index 64cd0776b43d38219fee312baadd4665674a141e..52be83a168d9ee6452a63039c89169d49b63eb60 100644
> --- a/arch/arm64/boot/dts/freescale/imx93.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
> @@ -1197,6 +1197,7 @@ gpio2: gpio@43810000 {
>  				 <&clk IMX93_CLK_GPIO2_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 4 30>;
> +			ngpios = <30>;
>  		};
>
>  		gpio3: gpio@43820000 {
> @@ -1213,6 +1214,7 @@ gpio3: gpio@43820000 {
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8 66 18>,
>  				      <&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
> +			ngpios = <32>;
>  		};
>
>  		gpio4: gpio@43830000 {
> @@ -1228,6 +1230,7 @@ gpio4: gpio@43830000 {
>  				 <&clk IMX93_CLK_GPIO4_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
> +			ngpios = <30>;
>  		};
>
>  		gpio1: gpio@47400000 {
> @@ -1243,6 +1246,7 @@ gpio1: gpio@47400000 {
>  				 <&clk IMX93_CLK_GPIO1_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 92 16>;
> +			ngpios = <16>;
>  		};
>
>  		ocotp: efuse@47510000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi b/arch/arm64/boot/dts/freescale/imx94.dtsi
> index 3661ea48d7d2994df7b02084e9681beb303aa133..b8ffc428e95be1938bf5e73316b4163acaa04701 100644
> --- a/arch/arm64/boot/dts/freescale/imx94.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
> @@ -785,6 +785,7 @@ gpio2: gpio@43810000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> +			ngpios = <32>;
>  		};
>
>  		gpio3: gpio@43820000 {
> @@ -797,6 +798,7 @@ gpio3: gpio@43820000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 36 26>;
> +			ngpios = <26>;
>  		};
>
>  		gpio4: gpio@43840000 {
> @@ -810,6 +812,7 @@ gpio4: gpio@43840000 {
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
>  				      <&scmi_iomuxc 8 140 12>, <&scmi_iomuxc 20 164 12>;
> +			ngpios = <32>;
>  		};
>
>  		gpio5: gpio@43850000 {
> @@ -822,6 +825,7 @@ gpio5: gpio@43850000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 108 32>;
> +			ngpios = <32>;
>  		};
>
>  		gpio6: gpio@43860000 {
> @@ -834,6 +838,7 @@ gpio6: gpio@43860000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 66 32>;
> +			ngpios = <32>;
>  		};
>
>  		gpio7: gpio@43870000 {
> @@ -846,6 +851,8 @@ gpio7: gpio@43870000 {
>  			#gpio-cells = <2>;
>  			gpio-controller;
>  			gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152 12>;
> +			gpio-reserved-ranges = <10 6>;
> +			ngpios = <28>;
>  		};
>
>  		aips1: bus@44000000 {
> diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi b/arch/arm64/boot/dts/freescale/imx95.dtsi
> index 632631a2911224cadc16a943cdb467e091e43384..a2f4fcffcde59849bafcedced3ff317ca6c7cf78 100644
> --- a/arch/arm64/boot/dts/freescale/imx95.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
> @@ -1152,6 +1152,7 @@ gpio2: gpio@43810000 {
>  				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> +			ngpios = <32>;
>  		};
>
>  		gpio3: gpio@43820000 {
> @@ -1168,6 +1169,7 @@ gpio3: gpio@43820000 {
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 104 8>, <&scmi_iomuxc 8 74 18>,
>  				      <&scmi_iomuxc 26 42 2>, <&scmi_iomuxc 28 0 4>;
> +			ngpios = <32>;
>  		};
>
>  		gpio4: gpio@43840000 {
> @@ -1183,6 +1185,7 @@ gpio4: gpio@43840000 {
>  				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 46 28>, <&scmi_iomuxc 28 44 2>;
> +			ngpios = <30>;
>  		};
>
>  		gpio5: gpio@43850000 {
> @@ -1198,6 +1201,7 @@ gpio5: gpio@43850000 {
>  				 <&scmi_clk IMX95_CLK_BUSWAKEUP>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 92 12>, <&scmi_iomuxc 12 36 6>;
> +			ngpios = <18>;
>  		};
>
>  		aips1: bus@44000000 {
> @@ -1508,6 +1512,7 @@ gpio1: gpio@47400000 {
>  				 <&scmi_clk IMX95_CLK_M33>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&scmi_iomuxc 0 112 16>;
> +			ngpios = <16>;
>  			status = "disabled";
>  		};
>
>
> --
> 2.34.1
>


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

* RE: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19 14:35   ` Stefan Wahren
@ 2025-05-20  1:54     ` Bough Chen
  0 siblings, 0 replies; 13+ messages in thread
From: Bough Chen @ 2025-05-20  1:54 UTC (permalink / raw)
  To: Stefan Wahren, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Rob Herring, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org

> -----Original Message-----
> From: Stefan Wahren <wahrenst@gmx.net>
> Sent: 2025年5月19日 22:35
> To: Bough Chen <haibo.chen@nxp.com>; Krzysztof Kozlowski
> <krzk+dt@kernel.org>; Conor Dooley <conor+dt@kernel.org>; Shawn Guo
> <shawnguo@kernel.org>; Rob Herring <robh@kernel.org>; Sascha Hauer
> <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Stefan
> Agner <stefan@agner.ch>; Linus Walleij <linus.walleij@linaro.org>; Bartosz
> Golaszewski <brgl@bgdev.pl>
> Cc: devicetree@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> linux-gpio@vger.kernel.org
> Subject: Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and
> gpio-reserved-ranges
> 
> Hi Haibo,
> 
> Am 19.05.25 um 08:03 schrieb Haibo Chen:
> > Add optional ngpios and gpio-reserved-ranges property
> >
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> could you please move the binding changes before the DTS changes, to avoid
> temporary DT build warnings.

Okay, thanks for this suggestion.

Regards
Haibo Chen
> 
> Thanks
> > ---
> >   Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
> >   1 file changed, 6 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > index
> >
> 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c494
> 17bb
> > dd82f2c45756 100644
> > --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > @@ -70,6 +70,12 @@ properties:
> >       minItems: 1
> >       maxItems: 4
> >
> > +  gpio-reserved-ranges: true
> > +
> > +  ngpios:
> > +    minimum: 1
> > +    maximum: 32
> > +
> >   patternProperties:
> >     "^.+-hog(-[0-9]+)?$":
> >       type: object
> >


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

* RE: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers
  2025-05-19 13:06   ` Peng Fan
@ 2025-05-20  1:55     ` Bough Chen
  0 siblings, 0 replies; 13+ messages in thread
From: Bough Chen @ 2025-05-20  1:55 UTC (permalink / raw)
  To: Peng Fan, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski
  Cc: devicetree@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org

> -----Original Message-----
> From: Peng Fan <peng.fan@nxp.com>
> Sent: 2025年5月19日 21:06
> To: Bough Chen <haibo.chen@nxp.com>; Rob Herring <robh@kernel.org>;
> Krzysztof Kozlowski <krzk+dt@kernel.org>; Conor Dooley
> <conor+dt@kernel.org>; Shawn Guo <shawnguo@kernel.org>; Sascha Hauer
> <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Stefan
> Agner <stefan@agner.ch>; Linus Walleij <linus.walleij@linaro.org>; Bartosz
> Golaszewski <brgl@bgdev.pl>
> Cc: devicetree@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> linux-gpio@vger.kernel.org; Bough Chen <haibo.chen@nxp.com>
> Subject: RE: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio
> controllers
> 
> > Subject: [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio
> > controllers
> >
> > After commit da5dd31efd24 ("gpio: vf610: Switch to gpio-mmio"),
> > vf610 gpio driver no more use the static number 32 for gc->ngpio, user
> > has a chance to config it through device tree for each port.
> >
> > And some gpio controllers did have less pads. So add 'ngpios' here,
> > this can save some memory when request bitmap, and also show user more
> > accurate information when use gpio tools.
> >
> > Besides, some gpio controllers have hole in the gpio ranges, so use
> > 'gpio-reserved-ranges' to cover that, then the gpioinfo tool show the
> > correct result.
> >
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> > ---
> >  arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi     | 4 ++++
> >  arch/arm/boot/dts/nxp/vf/vfxxx.dtsi        | 5 +++++
> >  arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 3 +++
> >  arch/arm64/boot/dts/freescale/imx93.dtsi   | 4 ++++
> >  arch/arm64/boot/dts/freescale/imx94.dtsi   | 7 +++++++
> >  arch/arm64/boot/dts/freescale/imx95.dtsi   | 5 +++++
> 
> arm64 and arm should be in separated patch.

Okay, thanks!

Regards
Haibo Chen
> 
> Regards,
> Peng.
> 
> >  6 files changed, 28 insertions(+)
> >
> > diff --git a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> > b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> > index
> > 3c6ef7bfba60986b797bb01b843830d364c96d45..880b9a4f32b0846a
> > 773dbf9ad30715c84ac2fda6 100644
> > --- a/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> > +++ b/arch/arm/boot/dts/nxp/imx/imx7ulp.dtsi
> > @@ -399,6 +399,7 @@ gpio_ptc: gpio@40ae0000 {
> >  				 <&pcc3 IMX7ULP_CLK_PCTLC>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc1 0 0 20>;
> > +			ngpios = <20>;
> >  		};
> >
> >  		gpio_ptd: gpio@40af0000 {
> > @@ -413,6 +414,7 @@ gpio_ptd: gpio@40af0000 {
> >  				 <&pcc3 IMX7ULP_CLK_PCTLD>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc1 0 32 12>;
> > +			ngpios = <12>;
> >  		};
> >
> >  		gpio_pte: gpio@40b00000 {
> > @@ -427,6 +429,7 @@ gpio_pte: gpio@40b00000 {
> >  				 <&pcc3 IMX7ULP_CLK_PCTLE>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc1 0 64 16>;
> > +			ngpios = <16>;
> >  		};
> >
> >  		gpio_ptf: gpio@40b10000 {
> > @@ -441,6 +444,7 @@ gpio_ptf: gpio@40b10000 {
> >  				 <&pcc3 IMX7ULP_CLK_PCTLF>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc1 0 96 20>;
> > +			ngpios = <20>;
> >  		};
> >  	};
> >
> > diff --git a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> > b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> > index
> > 597f20be82f1ee044e14bfaf3bd05cff37a8ad39..a275821c35d41e97eb
> > 2139a081ef5765d07672aa 100644
> > --- a/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> > +++ b/arch/arm/boot/dts/nxp/vf/vfxxx.dtsi
> > @@ -318,6 +318,7 @@ gpio0: gpio@40049000 {
> >  				interrupt-controller;
> >  				#interrupt-cells = <2>;
> >  				gpio-ranges = <&iomuxc 0 0 32>;
> > +				ngpios = <32>;
> >  			};
> >
> >  			gpio1: gpio@4004a000 {
> > @@ -329,6 +330,7 @@ gpio1: gpio@4004a000 {
> >  				interrupt-controller;
> >  				#interrupt-cells = <2>;
> >  				gpio-ranges = <&iomuxc 0 32 32>;
> > +				ngpios = <32>;
> >  			};
> >
> >  			gpio2: gpio@4004b000 {
> > @@ -340,6 +342,7 @@ gpio2: gpio@4004b000 {
> >  				interrupt-controller;
> >  				#interrupt-cells = <2>;
> >  				gpio-ranges = <&iomuxc 0 64 32>;
> > +				ngpios = <32>;
> >  			};
> >
> >  			gpio3: gpio@4004c000 {
> > @@ -351,6 +354,7 @@ gpio3: gpio@4004c000 {
> >  				interrupt-controller;
> >  				#interrupt-cells = <2>;
> >  				gpio-ranges = <&iomuxc 0 96 32>;
> > +				ngpios = <32>;
> >  			};
> >
> >  			gpio4: gpio@4004d000 {
> > @@ -362,6 +366,7 @@ gpio4: gpio@4004d000 {
> >  				interrupt-controller;
> >  				#interrupt-cells = <2>;
> >  				gpio-ranges = <&iomuxc 0 128 7>;
> > +				ngpios = <7>;
> >  			};
> >
> >  			anatop: anatop@40050000 {
> > diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> > b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> > index
> > 2562a35286c208869d11d7fb970ac84638f45088..13b01f3aa2a4950c
> > 37e72e04f6bfb5995dc19178 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
> > @@ -686,6 +686,7 @@ gpioe: gpio@2d000000 {
> >  					 <&pcc4
> > IMX8ULP_CLK_PCTLE>;
> >  				clock-names = "gpio", "port";
> >  				gpio-ranges = <&iomuxc1 0 32 24>;
> > +				ngpios = <24>;
> >  		};
> >
> >  		gpiof: gpio@2d010000 {
> > @@ -701,6 +702,7 @@ gpiof: gpio@2d010000 {
> >  					 <&pcc4
> > IMX8ULP_CLK_PCTLF>;
> >  				clock-names = "gpio", "port";
> >  				gpio-ranges = <&iomuxc1 0 64 32>;
> > +				ngpios = <32>;
> >  		};
> >
> >  		per_bridge5: bus@2d800000 {
> > @@ -855,6 +857,7 @@ gpiod: gpio@2e200000 {
> >  				 <&pcc5 IMX8ULP_CLK_RGPIOD>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc1 0 0 24>;
> > +			ngpios = <24>;
> >  		};
> >  	};
> >  };
> > diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi
> > b/arch/arm64/boot/dts/freescale/imx93.dtsi
> > index
> > 64cd0776b43d38219fee312baadd4665674a141e..52be83a168d9ee64
> > 52a63039c89169d49b63eb60 100644
> > --- a/arch/arm64/boot/dts/freescale/imx93.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
> > @@ -1197,6 +1197,7 @@ gpio2: gpio@43810000 {
> >  				 <&clk IMX93_CLK_GPIO2_GATE>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc 0 4 30>;
> > +			ngpios = <30>;
> >  		};
> >
> >  		gpio3: gpio@43820000 {
> > @@ -1213,6 +1214,7 @@ gpio3: gpio@43820000 {
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8
> > 66 18>,
> >  				      <&iomuxc 26 34 2>, <&iomuxc 28
> > 0 4>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio4: gpio@43830000 {
> > @@ -1228,6 +1230,7 @@ gpio4: gpio@43830000 {
> >  				 <&clk IMX93_CLK_GPIO4_GATE>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc
> > 28 36 2>;
> > +			ngpios = <30>;
> >  		};
> >
> >  		gpio1: gpio@47400000 {
> > @@ -1243,6 +1246,7 @@ gpio1: gpio@47400000 {
> >  				 <&clk IMX93_CLK_GPIO1_GATE>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&iomuxc 0 92 16>;
> > +			ngpios = <16>;
> >  		};
> >
> >  		ocotp: efuse@47510000 {
> > diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi
> > b/arch/arm64/boot/dts/freescale/imx94.dtsi
> > index
> > 3661ea48d7d2994df7b02084e9681beb303aa133..b8ffc428e95be193
> > 8bf5e73316b4163acaa04701 100644
> > --- a/arch/arm64/boot/dts/freescale/imx94.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
> > @@ -785,6 +785,7 @@ gpio2: gpio@43810000 {
> >  			#gpio-cells = <2>;
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio3: gpio@43820000 {
> > @@ -797,6 +798,7 @@ gpio3: gpio@43820000 {
> >  			#gpio-cells = <2>;
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 36 26>;
> > +			ngpios = <26>;
> >  		};
> >
> >  		gpio4: gpio@43840000 {
> > @@ -810,6 +812,7 @@ gpio4: gpio@43840000 {
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
> >  				      <&scmi_iomuxc 8 140 12>,
> > <&scmi_iomuxc 20 164 12>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio5: gpio@43850000 {
> > @@ -822,6 +825,7 @@ gpio5: gpio@43850000 {
> >  			#gpio-cells = <2>;
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 108 32>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio6: gpio@43860000 {
> > @@ -834,6 +838,7 @@ gpio6: gpio@43860000 {
> >  			#gpio-cells = <2>;
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 66 32>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio7: gpio@43870000 {
> > @@ -846,6 +851,8 @@ gpio7: gpio@43870000 {
> >  			#gpio-cells = <2>;
> >  			gpio-controller;
> >  			gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152
> 12>;
> > +			gpio-reserved-ranges = <10 6>;
> > +			ngpios = <28>;
> >  		};
> >
> >  		aips1: bus@44000000 {
> > diff --git a/arch/arm64/boot/dts/freescale/imx95.dtsi
> > b/arch/arm64/boot/dts/freescale/imx95.dtsi
> > index
> > 632631a2911224cadc16a943cdb467e091e43384..a2f4fcffcde59849b
> > afcedced3ff317ca6c7cf78 100644
> > --- a/arch/arm64/boot/dts/freescale/imx95.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx95.dtsi
> > @@ -1152,6 +1152,7 @@ gpio2: gpio@43810000 {
> >  				 <&scmi_clk
> > IMX95_CLK_BUSWAKEUP>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&scmi_iomuxc 0 4 32>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio3: gpio@43820000 {
> > @@ -1168,6 +1169,7 @@ gpio3: gpio@43820000 {
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&scmi_iomuxc 0 104 8>, <&scmi_iomuxc 8 74
> 18>,
> >  				      <&scmi_iomuxc 26 42 2>,
> > <&scmi_iomuxc 28 0 4>;
> > +			ngpios = <32>;
> >  		};
> >
> >  		gpio4: gpio@43840000 {
> > @@ -1183,6 +1185,7 @@ gpio4: gpio@43840000 {
> >  				 <&scmi_clk
> > IMX95_CLK_BUSWAKEUP>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&scmi_iomuxc 0 46 28>, <&scmi_iomuxc 28 44
> 2>;
> > +			ngpios = <30>;
> >  		};
> >
> >  		gpio5: gpio@43850000 {
> > @@ -1198,6 +1201,7 @@ gpio5: gpio@43850000 {
> >  				 <&scmi_clk
> > IMX95_CLK_BUSWAKEUP>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&scmi_iomuxc 0 92 12>, <&scmi_iomuxc 12 36
> 6>;
> > +			ngpios = <18>;
> >  		};
> >
> >  		aips1: bus@44000000 {
> > @@ -1508,6 +1512,7 @@ gpio1: gpio@47400000 {
> >  				 <&scmi_clk IMX95_CLK_M33>;
> >  			clock-names = "gpio", "port";
> >  			gpio-ranges = <&scmi_iomuxc 0 112 16>;
> > +			ngpios = <16>;
> >  			status = "disabled";
> >  		};
> >
> >
> > --
> > 2.34.1
> >


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

* RE: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19 15:26   ` Frank Li
@ 2025-05-20  1:56     ` Bough Chen
  0 siblings, 0 replies; 13+ messages in thread
From: Bough Chen @ 2025-05-20  1:56 UTC (permalink / raw)
  To: Frank Li
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski,
	devicetree@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org

> -----Original Message-----
> From: Frank Li <frank.li@nxp.com>
> Sent: 2025年5月19日 23:27
> To: Bough Chen <haibo.chen@nxp.com>
> Cc: Rob Herring <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>;
> Conor Dooley <conor+dt@kernel.org>; Shawn Guo <shawnguo@kernel.org>;
> Sascha Hauer <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Stefan
> Agner <stefan@agner.ch>; Linus Walleij <linus.walleij@linaro.org>; Bartosz
> Golaszewski <brgl@bgdev.pl>; devicetree@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> linux-gpio@vger.kernel.org
> Subject: Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and
> gpio-reserved-ranges
> 
> On Mon, May 19, 2025 at 02:03:43PM +0800, Haibo Chen wrote:
> > Add optional ngpios and gpio-reserved-ranges property
> 
> Nit: Add "." after sentense.

Okay, thanks

Regards
Haibo Chen
> 
> Reviewed-by: Frank Li <Frank.Li@nxp.com>
> 
> >
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> > ---
> >  Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > index
> 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c494
> 17bbdd82f2c45756 100644
> > --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > @@ -70,6 +70,12 @@ properties:
> >      minItems: 1
> >      maxItems: 4
> >
> > +  gpio-reserved-ranges: true
> > +
> > +  ngpios:
> > +    minimum: 1
> > +    maximum: 32
> > +
> >  patternProperties:
> >    "^.+-hog(-[0-9]+)?$":
> >      type: object
> >
> > --
> > 2.34.1
> >

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

* RE: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
  2025-05-19 16:04   ` Conor Dooley
@ 2025-05-20  2:00     ` Bough Chen
  0 siblings, 0 replies; 13+ messages in thread
From: Bough Chen @ 2025-05-20  2:00 UTC (permalink / raw)
  To: Conor Dooley
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Linus Walleij, Bartosz Golaszewski,
	devicetree@vger.kernel.org, imx@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org

> -----Original Message-----
> From: Conor Dooley <conor@kernel.org>
> Sent: 2025年5月20日 0:04
> To: Bough Chen <haibo.chen@nxp.com>
> Cc: Rob Herring <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>;
> Conor Dooley <conor+dt@kernel.org>; Shawn Guo <shawnguo@kernel.org>;
> Sascha Hauer <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; Stefan
> Agner <stefan@agner.ch>; Linus Walleij <linus.walleij@linaro.org>; Bartosz
> Golaszewski <brgl@bgdev.pl>; devicetree@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> linux-gpio@vger.kernel.org
> Subject: Re: [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and
> gpio-reserved-ranges
> 
> On Mon, May 19, 2025 at 02:03:43PM +0800, Haibo Chen wrote:
> > Add optional ngpios and gpio-reserved-ranges property
> >
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> > ---
> >  Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > index
> >
> 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..5b98228466c6414be681c494
> 17bb
> > dd82f2c45756 100644
> > --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > @@ -70,6 +70,12 @@ properties:
> >      minItems: 1
> >      maxItems: 4
> >
> > +  gpio-reserved-ranges: true
> > +
> > +  ngpios:
> > +    minimum: 1
> > +    maximum: 32
> 
> Do these platforms have a default? I'd expect one to be added that contains the
> default value from what the driver does now.

Okay, the default value should be 32, I will add that.

By the way, If add the default value, for the gpio port which contain 32 pads, seems no need to add ngpios in dts, I will change accordingly.

Regards
Haibo Chen
> 
> > +
> >  patternProperties:
> >    "^.+-hog(-[0-9]+)?$":
> >      type: object
> >
> > --
> > 2.34.1
> >

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

* Re: [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver
  2025-05-19  6:03 [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Haibo Chen
  2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
  2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
@ 2025-05-20 21:57 ` Linus Walleij
  2 siblings, 0 replies; 13+ messages in thread
From: Linus Walleij @ 2025-05-20 21:57 UTC (permalink / raw)
  To: Haibo Chen
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Bartosz Golaszewski, devicetree, imx,
	linux-arm-kernel, linux-kernel, linux-gpio

On Mon, May 19, 2025 at 8:01 AM Haibo Chen <haibo.chen@nxp.com> wrote:

> Not all GPIO ports have 32 pads, so add 'ngpios' property to specify
> the number. This can save some memory when alloc bitmap for GPIO,
> besides GPIO tools like gpioinfo will show the correct information.
>
> Some GPIO ports even more special, e.g. GPIO7 on imx94, it only support
> IO0~IO9 and IO16~IO27, so add 'gpio-reserved-ranges' property.
>
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>

The series:
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij


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

end of thread, other threads:[~2025-05-20 22:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-19  6:03 [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Haibo Chen
2025-05-19  6:03 ` [PATCH v2 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers Haibo Chen
2025-05-19 13:06   ` Peng Fan
2025-05-20  1:55     ` Bough Chen
2025-05-19 16:54   ` Frank Li
2025-05-19  6:03 ` [PATCH v2 2/2] dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges Haibo Chen
2025-05-19 14:35   ` Stefan Wahren
2025-05-20  1:54     ` Bough Chen
2025-05-19 15:26   ` Frank Li
2025-05-20  1:56     ` Bough Chen
2025-05-19 16:04   ` Conor Dooley
2025-05-20  2:00     ` Bough Chen
2025-05-20 21:57 ` [PATCH v2 0/2] Add 'ngpios' and 'gpio-reserved-ranges' for vf610-gpio driver Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).