* [PATCH v2] support i.MX93 truly available GPIO pins
@ 2024-01-15 13:16 Hector Palacios
2024-01-15 13:16 ` [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property Hector Palacios
2024-01-15 13:16 ` [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port Hector Palacios
0 siblings, 2 replies; 7+ messages in thread
From: Hector Palacios @ 2024-01-15 13:16 UTC (permalink / raw)
To: linus.walleij, brgl, robh+dt
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen,
alexander.stein, hector.palacios
All four GPIO ports of i.MX93 SoC show 32 pins available, but
not every port has 32 pins.
Add support on the GPIO driver to 'ngpios' property and set
the truly available pins on the SoC device tree.
v2
* Add 'ngpios' property to DT binding for proper validation
Hector Palacios (2):
gpio: vf610: add support to DT 'ngpios' property
arm64: dts: imx93: specify available 'ngpios' per GPIO port
Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
arch/arm64/boot/dts/freescale/imx93.dtsi | 4 ++++
drivers/gpio/gpio-vf610.c | 7 ++++++-
3 files changed, 16 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property
2024-01-15 13:16 [PATCH v2] support i.MX93 truly available GPIO pins Hector Palacios
@ 2024-01-15 13:16 ` Hector Palacios
2024-01-15 21:10 ` Krzysztof Kozlowski
2024-01-15 13:16 ` [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port Hector Palacios
1 sibling, 1 reply; 7+ messages in thread
From: Hector Palacios @ 2024-01-15 13:16 UTC (permalink / raw)
To: linus.walleij, brgl, robh+dt
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen,
alexander.stein, hector.palacios
Default to hardcoded VF610_GPIO_PER_PORT (32 pins) but allow optional
generic 'ngpios' property to be specified from the device tree.
Signed-off-by: Hector Palacios <hector.palacios@digi.com>
---
Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
drivers/gpio/gpio-vf610.c | 7 ++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index a27f92950257..ba4ebdbc5546 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -65,6 +65,12 @@ properties:
minItems: 1
maxItems: 4
+ ngpios:
+ description: The number of GPIO pins of the port
+ minimum: 1
+ maximum: 32
+ default: 32
+
patternProperties:
"^.+-hog(-[0-9]+)?$":
type: object
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index 07e5e6323e86..4abdf75e9a0a 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -276,6 +276,7 @@ static int vf610_gpio_probe(struct platform_device *pdev)
struct vf610_gpio_port *port;
struct gpio_chip *gc;
struct gpio_irq_chip *girq;
+ u32 ngpios;
int i;
int ret;
bool dual_base;
@@ -353,7 +354,11 @@ static int vf610_gpio_probe(struct platform_device *pdev)
gc = &port->gc;
gc->parent = dev;
gc->label = dev_name(dev);
- gc->ngpio = VF610_GPIO_PER_PORT;
+ ret = device_property_read_u32(dev, "ngpios", &ngpios);
+ if (ret || ngpios > VF610_GPIO_PER_PORT)
+ gc->ngpio = VF610_GPIO_PER_PORT;
+ else
+ gc->ngpio = (u16)ngpios;
gc->base = -1;
gc->request = gpiochip_generic_request;
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port
2024-01-15 13:16 [PATCH v2] support i.MX93 truly available GPIO pins Hector Palacios
2024-01-15 13:16 ` [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property Hector Palacios
@ 2024-01-15 13:16 ` Hector Palacios
2024-01-15 13:30 ` Alexander Stein
1 sibling, 1 reply; 7+ messages in thread
From: Hector Palacios @ 2024-01-15 13:16 UTC (permalink / raw)
To: linus.walleij, brgl, robh+dt
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen,
alexander.stein, hector.palacios
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(+)
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 {
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port
2024-01-15 13:16 ` [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port Hector Palacios
@ 2024-01-15 13:30 ` Alexander Stein
2024-01-15 15:41 ` Hector Palacios
0 siblings, 1 reply; 7+ messages in thread
From: Alexander Stein @ 2024-01-15 13:30 UTC (permalink / raw)
To: linus.walleij, brgl, robh+dt, Hector Palacios
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen,
hector.palacios
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 {
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port
2024-01-15 13:30 ` Alexander Stein
@ 2024-01-15 15:41 ` Hector Palacios
2024-01-16 2:59 ` Bough Chen
0 siblings, 1 reply; 7+ messages in thread
From: Hector Palacios @ 2024-01-15 15:41 UTC (permalink / raw)
To: Alexander Stein, linus.walleij, brgl, robh+dt
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen
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
--
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 {
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property
2024-01-15 13:16 ` [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property Hector Palacios
@ 2024-01-15 21:10 ` Krzysztof Kozlowski
0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-01-15 21:10 UTC (permalink / raw)
To: Hector Palacios, linus.walleij, brgl, robh+dt
Cc: stefan, linux-gpio, devicetree, peng.fan, haibo.chen,
alexander.stein
On 15/01/2024 14:16, Hector Palacios wrote:
> Default to hardcoded VF610_GPIO_PER_PORT (32 pins) but allow optional
> generic 'ngpios' property to be specified from the device tree.
You need to explain why.
Subject:
Please use subject prefixes matching the subsystem. You can get them for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching.
>
> Signed-off-by: Hector Palacios <hector.palacios@digi.com>
> ---
> Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 6 ++++++
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC (and consider --no-git-fallback argument). It might
happen, that command when run on an older kernel, gives you outdated
entries. Therefore please be sure you base your patches on recent Linux
kernel.
Please run scripts/checkpatch.pl and fix reported warnings. Some
warnings can be ignored, but the code here looks like it needs a fix.
Feel free to get in touch if the warning is not clear.
Bindings are always separate...
> drivers/gpio/gpio-vf610.c | 7 ++++++-
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index a27f92950257..ba4ebdbc5546 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -65,6 +65,12 @@ properties:
> minItems: 1
> maxItems: 4
>
> + ngpios:
> + description: The number of GPIO pins of the port
Skip description, this is a generic property.
> + minimum: 1
> + maximum: 32
> + default: 32
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port
2024-01-15 15:41 ` Hector Palacios
@ 2024-01-16 2:59 ` Bough Chen
0 siblings, 0 replies; 7+ messages in thread
From: Bough Chen @ 2024-01-16 2:59 UTC (permalink / raw)
To: Hector Palacios, Alexander Stein, 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
> -----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 {
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-01-16 2:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-15 13:16 [PATCH v2] support i.MX93 truly available GPIO pins Hector Palacios
2024-01-15 13:16 ` [PATCH v2 1/2] gpio: vf610: add support to DT 'ngpios' property Hector Palacios
2024-01-15 21:10 ` Krzysztof Kozlowski
2024-01-15 13:16 ` [PATCH v2 2/2] arm64: dts: imx93: specify available 'ngpios' per GPIO port Hector Palacios
2024-01-15 13:30 ` Alexander Stein
2024-01-15 15:41 ` Hector Palacios
2024-01-16 2:59 ` Bough Chen
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).