[PATCH 0/3] arm: dts: sync am33xx gpio nodes with Linux 5.9-rc7

My previous "Add DM support for omap PWM backlight" series synchronized much of the am33xx device tree with Linux 5.9-rc7, except for those nodes that were not affected by that patch set. GPIO nodes were among those left out of sync.
The patch series can be cleanly applied to the HEAD of the master which at the time of release points to 7c82e12cc4 ("Merge tag 'u-boot-atmel-fixes-2021.04-a' of https://gitlab.denx.de/u-boot/custodians/u-boot-atmel") commit.
Dario Binacchi (3): arm: dts: sync am33xx gpio nodes with Linux 5.9-rc7 am33xx: board: remove GPIO platforma data dm: am33xx: drop GPIO domain clock enabling by SOC api
arch/arm/dts/am33xx-clocks.dtsi | 2 +- arch/arm/dts/am33xx-l4.dtsi | 64 +++++++++++++++++++++++ arch/arm/dts/am33xx.dtsi | 44 ---------------- arch/arm/mach-omap2/am33xx/board.c | 23 -------- arch/arm/mach-omap2/am33xx/clock_am33xx.c | 4 ++ 5 files changed, 69 insertions(+), 68 deletions(-)

Move gpio controller nodes from am33xx.dtsi to am33xx-l4.dtsi. Now both files are more similar to those found in Linux 5.9-rc7. To be fully operational as before it was also necessary to fix the am33xx-clock.dtsi file. It too is now almost the same as the Linux kernel.
Signed-off-by: Dario Binacchi dariobin@libero.it ---
arch/arm/dts/am33xx-clocks.dtsi | 2 +- arch/arm/dts/am33xx-l4.dtsi | 64 +++++++++++++++++++++++++++++++++ arch/arm/dts/am33xx.dtsi | 44 ----------------------- 3 files changed, 65 insertions(+), 45 deletions(-)
diff --git a/arch/arm/dts/am33xx-clocks.dtsi b/arch/arm/dts/am33xx-clocks.dtsi index 87c4410ee2..5640ce40c4 100644 --- a/arch/arm/dts/am33xx-clocks.dtsi +++ b/arch/arm/dts/am33xx-clocks.dtsi @@ -604,7 +604,7 @@
l4_wkup_clkctrl: l4-wkup-clkctrl@0 { compatible = "ti,clkctrl"; - reg = <0x4 0x10>, <0xb4 0x24>; + reg = <0x0 0x10>, <0xb4 0x24>; #clock-cells = <2>; };
diff --git a/arch/arm/dts/am33xx-l4.dtsi b/arch/arm/dts/am33xx-l4.dtsi index 257991e2ad..e678673317 100644 --- a/arch/arm/dts/am33xx-l4.dtsi +++ b/arch/arm/dts/am33xx-l4.dtsi @@ -148,6 +148,28 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x7000 0x1000>; + + gpio0: gpio@0 { + compatible = "ti,omap4-gpio"; + gpio-ranges = <&am33xx_pinmux 0 82 8>, + <&am33xx_pinmux 8 52 4>, + <&am33xx_pinmux 12 94 4>, + <&am33xx_pinmux 16 71 2>, + <&am33xx_pinmux 18 135 1>, + <&am33xx_pinmux 19 108 2>, + <&am33xx_pinmux 21 73 1>, + <&am33xx_pinmux 22 8 2>, + <&am33xx_pinmux 26 10 2>, + <&am33xx_pinmux 28 74 1>, + <&am33xx_pinmux 29 81 1>, + <&am33xx_pinmux 30 28 2>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x0 0x1000>; + interrupts = <96>; + }; };
target-module@9000 { /* 0x44e09000, ap 16 04.0 */ @@ -1200,6 +1222,20 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x4c000 0x1000>; + + gpio1: gpio@0 { + compatible = "ti,omap4-gpio"; + gpio-ranges = <&am33xx_pinmux 0 0 8>, + <&am33xx_pinmux 8 90 4>, + <&am33xx_pinmux 12 12 16>, + <&am33xx_pinmux 28 30 4>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x0 0x1000>; + interrupts = <98>; + }; };
target-module@50000 { /* 0x48050000, ap 34 2c.0 */ @@ -1570,6 +1606,19 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0xac000 0x1000>; + + gpio2: gpio@0 { + compatible = "ti,omap4-gpio"; + gpio-ranges = <&am33xx_pinmux 0 34 18>, + <&am33xx_pinmux 18 77 4>, + <&am33xx_pinmux 22 56 10>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x0 0x1000>; + interrupts = <32>; + }; };
target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */ @@ -1593,6 +1642,21 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0xae000 0x1000>; + + gpio3: gpio@0 { + compatible = "ti,omap4-gpio"; + gpio-ranges = <&am33xx_pinmux 0 66 5>, + <&am33xx_pinmux 5 98 2>, + <&am33xx_pinmux 7 75 2>, + <&am33xx_pinmux 13 141 1>, + <&am33xx_pinmux 14 100 8>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x0 0x1000>; + interrupts = <62>; + }; };
target-module@b0000 { /* 0x481b0000, ap 58 50.0 */ diff --git a/arch/arm/dts/am33xx.dtsi b/arch/arm/dts/am33xx.dtsi index 3e5ed00aae..ce07cec846 100644 --- a/arch/arm/dts/am33xx.dtsi +++ b/arch/arm/dts/am33xx.dtsi @@ -301,50 +301,6 @@ }; };
- gpio0: gpio@44e07000 { - compatible = "ti,omap4-gpio"; - ti,hwmods = "gpio1"; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - reg = <0x44e07000 0x1000>; - interrupts = <96>; - }; - - gpio1: gpio@4804c000 { - compatible = "ti,omap4-gpio"; - ti,hwmods = "gpio2"; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - reg = <0x4804c000 0x1000>; - interrupts = <98>; - }; - - gpio2: gpio@481ac000 { - compatible = "ti,omap4-gpio"; - ti,hwmods = "gpio3"; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - reg = <0x481ac000 0x1000>; - interrupts = <32>; - }; - - gpio3: gpio@481ae000 { - compatible = "ti,omap4-gpio"; - ti,hwmods = "gpio4"; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - reg = <0x481ae000 0x1000>; - interrupts = <62>; - }; - i2c0: i2c@44e0b000 { compatible = "ti,omap4-i2c"; #address-cells = <1>;

On 13/02/21 4:30 pm, Dario Binacchi wrote:
Move gpio controller nodes from am33xx.dtsi to am33xx-l4.dtsi. Now both files are more similar to those found in Linux 5.9-rc7. To be fully operational as before it was also necessary to fix the am33xx-clock.dtsi file. It too is now almost the same as the Linux kernel.
Signed-off-by: Dario Binacchi dariobin@libero.it
Applied PATCH 1/3 to u-boot-ti/for-rc branch.
Thanks and regards, Lokesh
arch/arm/dts/am33xx-clocks.dtsi | 2 +- arch/arm/dts/am33xx-l4.dtsi | 64 +++++++++++++++++++++++++++++++++ arch/arm/dts/am33xx.dtsi | 44 ----------------------- 3 files changed, 65 insertions(+), 45 deletions(-)
diff --git a/arch/arm/dts/am33xx-clocks.dtsi b/arch/arm/dts/am33xx-clocks.dtsi index 87c4410ee2..5640ce40c4 100644 --- a/arch/arm/dts/am33xx-clocks.dtsi +++ b/arch/arm/dts/am33xx-clocks.dtsi @@ -604,7 +604,7 @@
l4_wkup_clkctrl: l4-wkup-clkctrl@0 { compatible = "ti,clkctrl";
reg = <0x4 0x10>, <0xb4 0x24>;
};reg = <0x0 0x10>, <0xb4 0x24>; #clock-cells = <2>;
diff --git a/arch/arm/dts/am33xx-l4.dtsi b/arch/arm/dts/am33xx-l4.dtsi index 257991e2ad..e678673317 100644 --- a/arch/arm/dts/am33xx-l4.dtsi +++ b/arch/arm/dts/am33xx-l4.dtsi @@ -148,6 +148,28 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x7000 0x1000>;
gpio0: gpio@0 {
compatible = "ti,omap4-gpio";
gpio-ranges = <&am33xx_pinmux 0 82 8>,
<&am33xx_pinmux 8 52 4>,
<&am33xx_pinmux 12 94 4>,
<&am33xx_pinmux 16 71 2>,
<&am33xx_pinmux 18 135 1>,
<&am33xx_pinmux 19 108 2>,
<&am33xx_pinmux 21 73 1>,
<&am33xx_pinmux 22 8 2>,
<&am33xx_pinmux 26 10 2>,
<&am33xx_pinmux 28 74 1>,
<&am33xx_pinmux 29 81 1>,
<&am33xx_pinmux 30 28 2>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x0 0x1000>;
interrupts = <96>;
};
};
target-module@9000 { /* 0x44e09000, ap 16 04.0 */
@@ -1200,6 +1222,20 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x4c000 0x1000>;
gpio1: gpio@0 {
compatible = "ti,omap4-gpio";
gpio-ranges = <&am33xx_pinmux 0 0 8>,
<&am33xx_pinmux 8 90 4>,
<&am33xx_pinmux 12 12 16>,
<&am33xx_pinmux 28 30 4>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x0 0x1000>;
interrupts = <98>;
};
};
target-module@50000 { /* 0x48050000, ap 34 2c.0 */
@@ -1570,6 +1606,19 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0xac000 0x1000>;
gpio2: gpio@0 {
compatible = "ti,omap4-gpio";
gpio-ranges = <&am33xx_pinmux 0 34 18>,
<&am33xx_pinmux 18 77 4>,
<&am33xx_pinmux 22 56 10>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x0 0x1000>;
interrupts = <32>;
};
};
target-module@ae000 { /* 0x481ae000, ap 56 3a.0 */
@@ -1593,6 +1642,21 @@ #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0xae000 0x1000>;
gpio3: gpio@0 {
compatible = "ti,omap4-gpio";
gpio-ranges = <&am33xx_pinmux 0 66 5>,
<&am33xx_pinmux 5 98 2>,
<&am33xx_pinmux 7 75 2>,
<&am33xx_pinmux 13 141 1>,
<&am33xx_pinmux 14 100 8>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x0 0x1000>;
interrupts = <62>;
};
};
target-module@b0000 { /* 0x481b0000, ap 58 50.0 */
diff --git a/arch/arm/dts/am33xx.dtsi b/arch/arm/dts/am33xx.dtsi index 3e5ed00aae..ce07cec846 100644 --- a/arch/arm/dts/am33xx.dtsi +++ b/arch/arm/dts/am33xx.dtsi @@ -301,50 +301,6 @@ }; };
gpio0: gpio@44e07000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio1";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x44e07000 0x1000>;
interrupts = <96>;
};
gpio1: gpio@4804c000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio2";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4804c000 0x1000>;
interrupts = <98>;
};
gpio2: gpio@481ac000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio3";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x481ac000 0x1000>;
interrupts = <32>;
};
gpio3: gpio@481ae000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio4";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x481ae000 0x1000>;
interrupts = <62>;
};
- i2c0: i2c@44e0b000 { compatible = "ti,omap4-i2c"; #address-cells = <1>;

Since the board has been converted to driver model and DT is supported, GPIO platform are no more required and can be removed.
Signed-off-by: Dario Binacchi dariobin@libero.it ---
arch/arm/mach-omap2/am33xx/board.c | 23 ----------------------- 1 file changed, 23 deletions(-)
diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c index e17898d8fb..f48d4cefc4 100644 --- a/arch/arm/mach-omap2/am33xx/board.c +++ b/arch/arm/mach-omap2/am33xx/board.c @@ -126,29 +126,6 @@ U_BOOT_DRVINFOS(am33xx_i2c) = { }; #endif
-#if CONFIG_IS_ENABLED(DM_GPIO) -static const struct omap_gpio_plat am33xx_gpio[] = { - { 0, AM33XX_GPIO0_BASE }, - { 1, AM33XX_GPIO1_BASE }, - { 2, AM33XX_GPIO2_BASE }, - { 3, AM33XX_GPIO3_BASE }, -#ifdef CONFIG_AM43XX - { 4, AM33XX_GPIO4_BASE }, - { 5, AM33XX_GPIO5_BASE }, -#endif -}; - -U_BOOT_DRVINFOS(am33xx_gpios) = { - { "gpio_omap", &am33xx_gpio[0] }, - { "gpio_omap", &am33xx_gpio[1] }, - { "gpio_omap", &am33xx_gpio[2] }, - { "gpio_omap", &am33xx_gpio[3] }, -#ifdef CONFIG_AM43XX - { "gpio_omap", &am33xx_gpio[4] }, - { "gpio_omap", &am33xx_gpio[5] }, -#endif -}; -#endif #if CONFIG_IS_ENABLED(DM_SPI) && !CONFIG_IS_ENABLED(OF_CONTROL) static const struct omap3_spi_plat omap3_spi_pdata = { .regs = (struct mcspi *)AM33XX_SPI0_OFFSET,

Hi Dario,
On 13/02/21 4:30 pm, Dario Binacchi wrote:
Since the board has been converted to driver model and DT is supported, GPIO platform are no more required and can be removed.
Signed-off-by: Dario Binacchi dariobin@libero.it
Not all am335x platforms are converted to DT. Due to SPL size constraints am335x_evm_defconfig is still using plat data. This patch will break such platforms no?
Thanks and regards, Lokesh
arch/arm/mach-omap2/am33xx/board.c | 23 ----------------------- 1 file changed, 23 deletions(-)
diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c index e17898d8fb..f48d4cefc4 100644 --- a/arch/arm/mach-omap2/am33xx/board.c +++ b/arch/arm/mach-omap2/am33xx/board.c @@ -126,29 +126,6 @@ U_BOOT_DRVINFOS(am33xx_i2c) = { }; #endif
-#if CONFIG_IS_ENABLED(DM_GPIO) -static const struct omap_gpio_plat am33xx_gpio[] = {
- { 0, AM33XX_GPIO0_BASE },
- { 1, AM33XX_GPIO1_BASE },
- { 2, AM33XX_GPIO2_BASE },
- { 3, AM33XX_GPIO3_BASE },
-#ifdef CONFIG_AM43XX
- { 4, AM33XX_GPIO4_BASE },
- { 5, AM33XX_GPIO5_BASE },
-#endif -};
-U_BOOT_DRVINFOS(am33xx_gpios) = {
- { "gpio_omap", &am33xx_gpio[0] },
- { "gpio_omap", &am33xx_gpio[1] },
- { "gpio_omap", &am33xx_gpio[2] },
- { "gpio_omap", &am33xx_gpio[3] },
-#ifdef CONFIG_AM43XX
- { "gpio_omap", &am33xx_gpio[4] },
- { "gpio_omap", &am33xx_gpio[5] },
-#endif -}; -#endif #if CONFIG_IS_ENABLED(DM_SPI) && !CONFIG_IS_ENABLED(OF_CONTROL) static const struct omap3_spi_plat omap3_spi_pdata = { .regs = (struct mcspi *)AM33XX_SPI0_OFFSET,

Hi Lokesh,
Il 22/02/2021 07:08 Lokesh Vutla lokeshvutla@ti.com ha scritto:
Hi Dario,
On 13/02/21 4:30 pm, Dario Binacchi wrote:
Since the board has been converted to driver model and DT is supported, GPIO platform are no more required and can be removed.
Signed-off-by: Dario Binacchi dariobin@libero.it
Not all am335x platforms are converted to DT. Due to SPL size constraints am335x_evm_defconfig is still using plat data. This patch will break such platforms no?
I ran the commands: $ ./tools/buildman/buildman -o /tmp -P -E -W am33 $ grep -r 'OF_PLATDATA=y' /tmp/.bm-work/ | grep '.config' | wc -l 0
Is this enough to exclude the use of platform data by some configuration? I would think that am335x_evm_defconfig is not using platforma data. What am I doing wrong?
Thanks and regards, Dario
Thanks and regards, Lokesh
arch/arm/mach-omap2/am33xx/board.c | 23 ----------------------- 1 file changed, 23 deletions(-)
diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c index e17898d8fb..f48d4cefc4 100644 --- a/arch/arm/mach-omap2/am33xx/board.c +++ b/arch/arm/mach-omap2/am33xx/board.c @@ -126,29 +126,6 @@ U_BOOT_DRVINFOS(am33xx_i2c) = { }; #endif
-#if CONFIG_IS_ENABLED(DM_GPIO) -static const struct omap_gpio_plat am33xx_gpio[] = {
- { 0, AM33XX_GPIO0_BASE },
- { 1, AM33XX_GPIO1_BASE },
- { 2, AM33XX_GPIO2_BASE },
- { 3, AM33XX_GPIO3_BASE },
-#ifdef CONFIG_AM43XX
- { 4, AM33XX_GPIO4_BASE },
- { 5, AM33XX_GPIO5_BASE },
-#endif -};
-U_BOOT_DRVINFOS(am33xx_gpios) = {
- { "gpio_omap", &am33xx_gpio[0] },
- { "gpio_omap", &am33xx_gpio[1] },
- { "gpio_omap", &am33xx_gpio[2] },
- { "gpio_omap", &am33xx_gpio[3] },
-#ifdef CONFIG_AM43XX
- { "gpio_omap", &am33xx_gpio[4] },
- { "gpio_omap", &am33xx_gpio[5] },
-#endif -}; -#endif #if CONFIG_IS_ENABLED(DM_SPI) && !CONFIG_IS_ENABLED(OF_CONTROL) static const struct omap3_spi_plat omap3_spi_pdata = { .regs = (struct mcspi *)AM33XX_SPI0_OFFSET,

Enabling the domain clock is performed by the sysc interconnect target module driver during the GPIO device probing.
Signed-off-by: Dario Binacchi dariobin@libero.it
---
arch/arm/mach-omap2/am33xx/clock_am33xx.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm/mach-omap2/am33xx/clock_am33xx.c b/arch/arm/mach-omap2/am33xx/clock_am33xx.c index cf71192360..ba2279780d 100644 --- a/arch/arm/mach-omap2/am33xx/clock_am33xx.c +++ b/arch/arm/mach-omap2/am33xx/clock_am33xx.c @@ -208,7 +208,9 @@ void enable_basic_clocks(void) &cmwkup->wkl4wkclkctrl, &cmper->l3instrclkctrl, &cmper->l4hsclkctrl, +#if !CONFIG_IS_ENABLED(DM_GPIO) &cmwkup->wkgpio0clkctrl, +#endif &cmwkup->wkctrlclkctrl, &cmper->timer2clkctrl, &cmper->gpmcclkctrl, @@ -216,9 +218,11 @@ void enable_basic_clocks(void) &cmper->mmc0clkctrl, &cmper->mmc1clkctrl, &cmwkup->wkup_i2c0ctrl, +#if !CONFIG_IS_ENABLED(DM_GPIO) &cmper->gpio1clkctrl, &cmper->gpio2clkctrl, &cmper->gpio3clkctrl, +#endif &cmper->i2c1clkctrl, &cmper->cpgmac0clkctrl, &cmper->spi0clkctrl,
participants (2)
-
Dario Binacchi
-
Lokesh Vutla