diff mbox series

[v2,2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port

Message ID 20240115131605.395691-3-hector.palacios@digi.com
State New
Headers show
Series [v2,1/2] gpio: vf610: add support to DT 'ngpios' property | expand

Commit Message

Hector Palacios Jan. 15, 2024, 1:16 p.m. UTC
According to NXP HRM for i.MX93, the following GPIO pins are available:
- GPIO1: 16 pins (0..15)
- GPIO2: 30 pins (0..29)
- GPIO3: 32 pins (0..31)
- GPIO4: 30 pins (0..29)

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
---
 arch/arm64/boot/dts/freescale/imx93.dtsi | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Alexander Stein Jan. 15, 2024, 1:30 p.m. UTC | #1
Hi Hector,

thanks for the patch.

Am Montag, 15. Januar 2024, 14:16:05 CET schrieb Hector Palacios:
> According to NXP HRM for i.MX93, the following GPIO pins are available:
> - GPIO1: 16 pins (0..15)

Mh, RM Rev4 (12/2023) says:
>  Bit[31:17] should be Reserved for GPIO1

So GPIO1 has the range 0..16

> - GPIO2: 30 pins (0..29)
> - GPIO3: 32 pins (0..31)
> - GPIO4: 30 pins (0..29)

RM Rev4 (12/2023) says:
> Bit[31:28] should be Reserved for GPIO4

So GPIO4 would be the range 0..27

Where did you get your numbers from?

Best regards,
Alexander

> 
> Signed-off-by: Hector Palacios <hector.palacios@digi.com>
> ---
>  arch/arm64/boot/dts/freescale/imx93.dtsi | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi
> b/arch/arm64/boot/dts/freescale/imx93.dtsi index 34c0540276d1..7eb2cab7c749
> 100644
> --- a/arch/arm64/boot/dts/freescale/imx93.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
> @@ -970,6 +970,7 @@ gpio2: gpio@43810000 {
>  				 <&clk IMX93_CLK_GPIO2_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 4 30>;
> +			ngpios = <30>;
>  		};
> 
>  		gpio3: gpio@43820000 {
> @@ -986,6 +987,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 {
> @@ -1001,6 +1003,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 {
> @@ -1016,6 +1019,7 @@ gpio1: gpio@47400000 {
>  				 <&clk IMX93_CLK_GPIO1_GATE>;
>  			clock-names = "gpio", "port";
>  			gpio-ranges = <&iomuxc 0 92 16>;
> +			ngpios = <16>;
>  		};
> 
>  		ocotp: efuse@47510000 {
Hector Palacios Jan. 15, 2024, 3:41 p.m. UTC | #2
Hi Alexander,

On 1/15/24 14:30, Alexander Stein wrote:
> Hi Hector,
> 
> thanks for the patch.
> 
> Am Montag, 15. Januar 2024, 14:16:05 CET schrieb Hector Palacios:
>> According to NXP HRM for i.MX93, the following GPIO pins are available:
>> - GPIO1: 16 pins (0..15)
> 
> Mh, RM Rev4 (12/2023) says:
>>   Bit[31:17] should be Reserved for GPIO1
> 
> So GPIO1 has the range 0..16
> 
>> - GPIO2: 30 pins (0..29)
>> - GPIO3: 32 pins (0..31)
>> - GPIO4: 30 pins (0..29)
> 
> RM Rev4 (12/2023) says:
>> Bit[31:28] should be Reserved for GPIO4
> 
> So GPIO4 would be the range 0..27
> 
> Where did you get your numbers from?

I also saw what you point out about the HRM but when cross-checking with 
the IOMUXC topic (Chapter 27) to verify what pads can work as GPIO for 
each of the ports, I found you can configure pads for
- GPIO1_IO00..GPIO1_IO15
- GPIO2_IO00..GPIO2_IO29
- GPIO3_IO00..GPIO3_IO31
- GPIO4_IO00..GPIO4_IO29

which doesn't exactly match the note about the reserved bits.
I consider the IOMUXC topic more reliable but it would definitely be 
better if someone from NXP could clarify.

Regards
Bough Chen Jan. 16, 2024, 2:59 a.m. UTC | #3
> -----Original Message-----
> From: Hector Palacios <hector.palacios@digi.com>
> Sent: 2024年1月15日 23:42
> To: Alexander Stein <alexander.stein@ew.tq-group.com>;
> linus.walleij@linaro.org; brgl@bgdev.pl; robh+dt@kernel.org
> Cc: stefan@agner.ch; linux-gpio@vger.kernel.org; devicetree@vger.kernel.org;
> Peng Fan <peng.fan@nxp.com>; Bough Chen <haibo.chen@nxp.com>
> Subject: Re: [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per
> GPIO port
> 
> Hi Alexander,
> 
> On 1/15/24 14:30, Alexander Stein wrote:
> > Hi Hector,
> >
> > thanks for the patch.
> >
> > Am Montag, 15. Januar 2024, 14:16:05 CET schrieb Hector Palacios:
> >> According to NXP HRM for i.MX93, the following GPIO pins are available:
> >> - GPIO1: 16 pins (0..15)
> >
> > Mh, RM Rev4 (12/2023) says:
> >>   Bit[31:17] should be Reserved for GPIO1
> >
> > So GPIO1 has the range 0..16
> >
> >> - GPIO2: 30 pins (0..29)
> >> - GPIO3: 32 pins (0..31)
> >> - GPIO4: 30 pins (0..29)
> >
> > RM Rev4 (12/2023) says:
> >> Bit[31:28] should be Reserved for GPIO4
> >
> > So GPIO4 would be the range 0..27
> >
> > Where did you get your numbers from?
> 
> I also saw what you point out about the HRM but when cross-checking with the
> IOMUXC topic (Chapter 27) to verify what pads can work as GPIO for each of the
> ports, I found you can configure pads for
> - GPIO1_IO00..GPIO1_IO15
> - GPIO2_IO00..GPIO2_IO29
> - GPIO3_IO00..GPIO3_IO31
> - GPIO4_IO00..GPIO4_IO29
> 
> which doesn't exactly match the note about the reserved bits.
> I consider the IOMUXC topic more reliable but it would definitely be better if
> someone from NXP could clarify.

Hi All,

I just confirm with IP team, they use the IOMUX to implement RTL code. So IOMUX is reliable.
The following are correct.
 - GPIO1_IO00..GPIO1_IO15
 - GPIO2_IO00..GPIO2_IO29
 - GPIO3_IO00..GPIO3_IO31
 - GPIO4_IO00..GPIO4_IO29

I will ask the Doc team to update the reserved bits to align with the IOMUX.

Best Regards
Haibo Chen
> 
> Regards
> --
> Héctor Palacios
> 
> >
> >>
> >> Signed-off-by: Hector Palacios <hector.palacios@digi.com>
> >> ---
> >>   arch/arm64/boot/dts/freescale/imx93.dtsi | 4 ++++
> >>   1 file changed, 4 insertions(+)
> >>
> >> diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi
> >> b/arch/arm64/boot/dts/freescale/imx93.dtsi index
> >> 34c0540276d1..7eb2cab7c749
> >> 100644
> >> --- a/arch/arm64/boot/dts/freescale/imx93.dtsi
> >> +++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
> >> @@ -970,6 +970,7 @@ gpio2: gpio@43810000 {
> >>                                 <&clk IMX93_CLK_GPIO2_GATE>;
> >>                        clock-names = "gpio", "port";
> >>                        gpio-ranges = <&iomuxc 0 4 30>;
> >> +                     ngpios = <30>;
> >>                };
> >>
> >>                gpio3: gpio@43820000 { @@ -986,6 +987,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 { @@ -1001,6 +1003,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 { @@ -1016,6 +1019,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 mbox series

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi b/arch/arm64/boot/dts/freescale/imx93.dtsi
index 34c0540276d1..7eb2cab7c749 100644
--- a/arch/arm64/boot/dts/freescale/imx93.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
@@ -970,6 +970,7 @@  gpio2: gpio@43810000 {
 				 <&clk IMX93_CLK_GPIO2_GATE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 4 30>;
+			ngpios = <30>;
 		};
 
 		gpio3: gpio@43820000 {
@@ -986,6 +987,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 {
@@ -1001,6 +1003,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 {
@@ -1016,6 +1019,7 @@  gpio1: gpio@47400000 {
 				 <&clk IMX93_CLK_GPIO1_GATE>;
 			clock-names = "gpio", "port";
 			gpio-ranges = <&iomuxc 0 92 16>;
+			ngpios = <16>;
 		};
 
 		ocotp: efuse@47510000 {