Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Li <Frank.li@nxp.com>
To: Haibo 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 1/2] ARM: dts: add ngpios for vf610 compatible gpio controllers
Date: Mon, 19 May 2025 12:54:01 -0400	[thread overview]
Message-ID: <aCtiKXJNRUGTMEE0@lizhi-Precision-Tower-5810> (raw)
In-Reply-To: <20250519-gpio-dts-v2-1-b9e77173e9c5@nxp.com>

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
>


  parent reply	other threads:[~2025-05-19 17:37 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aCtiKXJNRUGTMEE0@lizhi-Precision-Tower-5810 \
    --to=frank.li@nxp.com \
    --cc=brgl@bgdev.pl \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=haibo.chen@nxp.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=krzk+dt@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=stefan@agner.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox