mbox series

[00/14] arm64: dts: allwinner: Add basic Allwinner A523 support

Message ID 20241111013033.22793-1-andre.przywara@arm.com
Headers show
Series arm64: dts: allwinner: Add basic Allwinner A523 support | expand

Message

Andre Przywara Nov. 11, 2024, 1:30 a.m. UTC
Hi,

this series adds basic DT support for the Allwinner A523 SoC, plus the
Avaota-A1 router board using the T527 package variant of that SoC.[1]
Functionality-wise it relies on the pinctrl[2] and clock[3] support
series, though there is no direct code dependency series to this series
(apart from the respective binding patches in the two series').

Most of the patches add DT binding documentation for the most basic
peripherals, the vast majority of them actually being already supported,
courtesy of identical IP being used. This includes MMC and USB 2.0, so
with the above mentioned clock and pinctrl support this gives an already
somewhat usable mainline support for this new SoC family.
The watchdog is not completely compatible, but is an easy addition, so
this bit is included in here as well.

The A523 features 8 Arm Cortex-A55 cores, organised in two clusters,
clocked separately, with different OPP limits, in some kind of
little/LITTLE configuration. The GPU is a Arm Mali G57 MC01, and the chip
also features a single PCIe 2.1 lane, sharing a PHY with some USB 3.1
controller - which means only one of the two can be used.
The rest of the SoC is the usual soup of multimedia SoC IP, with eDP
support and two Gigabit Ethernet MACs among the highlights.

The main feature is patch 11/14, which adds the SoC .dtsi. This for now
is limited to the parts that are supported and could be tested. At the
moment there is no PSCI firmware, even the TF-A port from the BSP does
not seem to work for me. That's why the secondary cores have been omitted
for now, among other instances of some IP that I couldn't test yet.
I plan to add them in one of the next revisions.

The last patch adds basic support for the Avaota-A1 router board,
designed by YuzukiHD, with some boards now built by Pine64.

The mainline firmware side in general is somewhat lacking still: I have
basic U-Boot support working (including MMC and USB), although still
without DRAM support. This is for now covered by some binary blob found
in the (otherwise Open Source) Syterkit firmware, which also provides
the BSP versions of TF-A and the required (RISC-V) management core
firmware. Fortunately we have indications that DRAM support is not that
tricky, as the IP blocks are very similar to already supported, and dev
boards are on their way to the right people.

Meanwhile I would like people to have a look at those DT bits here. Please
compare them to the available user manual, and test them if you have access
to hardware.

Based on v6.12-rc1.
I pushed a branch with all the three series combined here:
https://github.com/apritzel/linux/commits/a523-v1/

Cheers,
Andre

[1] https://linux-sunxi.org/A523#Family_of_sun55iw3
[2] https://lore.kernel.org/linux-sunxi/20241111005750.13071-1-andre.przywara@arm.com/T/#t
[3] https://lore.kernel.org/linux-sunxi/20241111004722.10130-1-andre.przywara@arm.com/T/#t

Andre Przywara (14):
  dt-bindings: mmc: sunxi: Simplify compatible string listing
  dt-bindings: mmc: sunxi: add compatible strings for Allwinner A523
  dt-bindings: watchdog: sunxi: add Allwinner A523 compatible string
  watchdog: sunxi_wdt: Add support for Allwinner A523
  dt-bindings: i2c: mv64xxx: Add Allwinner A523 compatible string
  dt-bindings: irq: sun7i-nmi: document the Allwinner A523 NMI
    controller
  dt-bindings: phy: document Allwinner A523 USB-2.0 PHY
  dt-bindings: usb: sunxi-musb: add Allwinner A523 compatible string
  dt-bindings: usb: add A523 compatible string for EHCI and OCHI
  dt-bindings: rtc: sun6i: Add Allwinner A523 support
  arm64: dts: allwinner: Add Allwinner A523 .dtsi file
  dt-bindings: vendor-prefixes: Add YuzukiHD name
  dt-bindings: arm: sunxi: Add Avaota A1 board
  arm64: dts: allwinner: a523: add Avaota-A1 router support

 .../devicetree/bindings/arm/sunxi.yaml        |   5 +
 .../bindings/i2c/marvell,mv64xxx-i2c.yaml     |   1 +
 .../allwinner,sun7i-a20-sc-nmi.yaml           |   1 +
 .../bindings/mmc/allwinner,sun4i-a10-mmc.yaml |  40 +-
 .../phy/allwinner,sun50i-a64-usb-phy.yaml     |  10 +-
 .../bindings/rtc/allwinner,sun6i-a31-rtc.yaml |   4 +-
 .../usb/allwinner,sun4i-a10-musb.yaml         |   1 +
 .../devicetree/bindings/usb/generic-ehci.yaml |   1 +
 .../devicetree/bindings/usb/generic-ohci.yaml |   1 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 .../watchdog/allwinner,sun4i-a10-wdt.yaml     |   2 +
 arch/arm64/boot/dts/allwinner/Makefile        |   1 +
 .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 386 ++++++++++++++++++
 .../dts/allwinner/sun55i-t527-avaota-a1.dts   | 311 ++++++++++++++
 drivers/watchdog/sunxi_wdt.c                  |  11 +
 15 files changed, 751 insertions(+), 26 deletions(-)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
 create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts

Comments

Rob Herring Nov. 11, 2024, 3:32 p.m. UTC | #1
On Mon, 11 Nov 2024 01:30:19 +0000, Andre Przywara wrote:
> Hi,
> 
> this series adds basic DT support for the Allwinner A523 SoC, plus the
> Avaota-A1 router board using the T527 package variant of that SoC.[1]
> Functionality-wise it relies on the pinctrl[2] and clock[3] support
> series, though there is no direct code dependency series to this series
> (apart from the respective binding patches in the two series').
> 
> Most of the patches add DT binding documentation for the most basic
> peripherals, the vast majority of them actually being already supported,
> courtesy of identical IP being used. This includes MMC and USB 2.0, so
> with the above mentioned clock and pinctrl support this gives an already
> somewhat usable mainline support for this new SoC family.
> The watchdog is not completely compatible, but is an easy addition, so
> this bit is included in here as well.
> 
> The A523 features 8 Arm Cortex-A55 cores, organised in two clusters,
> clocked separately, with different OPP limits, in some kind of
> little/LITTLE configuration. The GPU is a Arm Mali G57 MC01, and the chip
> also features a single PCIe 2.1 lane, sharing a PHY with some USB 3.1
> controller - which means only one of the two can be used.
> The rest of the SoC is the usual soup of multimedia SoC IP, with eDP
> support and two Gigabit Ethernet MACs among the highlights.
> 
> The main feature is patch 11/14, which adds the SoC .dtsi. This for now
> is limited to the parts that are supported and could be tested. At the
> moment there is no PSCI firmware, even the TF-A port from the BSP does
> not seem to work for me. That's why the secondary cores have been omitted
> for now, among other instances of some IP that I couldn't test yet.
> I plan to add them in one of the next revisions.
> 
> The last patch adds basic support for the Avaota-A1 router board,
> designed by YuzukiHD, with some boards now built by Pine64.
> 
> The mainline firmware side in general is somewhat lacking still: I have
> basic U-Boot support working (including MMC and USB), although still
> without DRAM support. This is for now covered by some binary blob found
> in the (otherwise Open Source) Syterkit firmware, which also provides
> the BSP versions of TF-A and the required (RISC-V) management core
> firmware. Fortunately we have indications that DRAM support is not that
> tricky, as the IP blocks are very similar to already supported, and dev
> boards are on their way to the right people.
> 
> Meanwhile I would like people to have a look at those DT bits here. Please
> compare them to the available user manual, and test them if you have access
> to hardware.
> 
> Based on v6.12-rc1.
> I pushed a branch with all the three series combined here:
> https://github.com/apritzel/linux/commits/a523-v1/
> 
> Cheers,
> Andre
> 
> [1] https://linux-sunxi.org/A523#Family_of_sun55iw3
> [2] https://lore.kernel.org/linux-sunxi/20241111005750.13071-1-andre.przywara@arm.com/T/#t
> [3] https://lore.kernel.org/linux-sunxi/20241111004722.10130-1-andre.przywara@arm.com/T/#t
> 
> Andre Przywara (14):
>   dt-bindings: mmc: sunxi: Simplify compatible string listing
>   dt-bindings: mmc: sunxi: add compatible strings for Allwinner A523
>   dt-bindings: watchdog: sunxi: add Allwinner A523 compatible string
>   watchdog: sunxi_wdt: Add support for Allwinner A523
>   dt-bindings: i2c: mv64xxx: Add Allwinner A523 compatible string
>   dt-bindings: irq: sun7i-nmi: document the Allwinner A523 NMI
>     controller
>   dt-bindings: phy: document Allwinner A523 USB-2.0 PHY
>   dt-bindings: usb: sunxi-musb: add Allwinner A523 compatible string
>   dt-bindings: usb: add A523 compatible string for EHCI and OCHI
>   dt-bindings: rtc: sun6i: Add Allwinner A523 support
>   arm64: dts: allwinner: Add Allwinner A523 .dtsi file
>   dt-bindings: vendor-prefixes: Add YuzukiHD name
>   dt-bindings: arm: sunxi: Add Avaota A1 board
>   arm64: dts: allwinner: a523: add Avaota-A1 router support
> 
>  .../devicetree/bindings/arm/sunxi.yaml        |   5 +
>  .../bindings/i2c/marvell,mv64xxx-i2c.yaml     |   1 +
>  .../allwinner,sun7i-a20-sc-nmi.yaml           |   1 +
>  .../bindings/mmc/allwinner,sun4i-a10-mmc.yaml |  40 +-
>  .../phy/allwinner,sun50i-a64-usb-phy.yaml     |  10 +-
>  .../bindings/rtc/allwinner,sun6i-a31-rtc.yaml |   4 +-
>  .../usb/allwinner,sun4i-a10-musb.yaml         |   1 +
>  .../devicetree/bindings/usb/generic-ehci.yaml |   1 +
>  .../devicetree/bindings/usb/generic-ohci.yaml |   1 +
>  .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
>  .../watchdog/allwinner,sun4i-a10-wdt.yaml     |   2 +
>  arch/arm64/boot/dts/allwinner/Makefile        |   1 +
>  .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 386 ++++++++++++++++++
>  .../dts/allwinner/sun55i-t527-avaota-a1.dts   | 311 ++++++++++++++
>  drivers/watchdog/sunxi_wdt.c                  |  11 +
>  15 files changed, 751 insertions(+), 26 deletions(-)
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
>  create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts
> 
> --
> 2.46.2
> 
> 
> 


My bot found new DTB warnings on the .dts files added or changed in this
series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:

  pip3 install dtschema --upgrade


New warnings running 'make CHECK_DTBS=y allwinner/sun55i-t527-avaota-a1.dtb' for 20241111013033.22793-1-andre.przywara@arm.com:

In file included from arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts:6:
arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi:6:10: fatal error: dt-bindings/clock/sun55i-a523-ccu.h: No such file or directory
    6 | #include <dt-bindings/clock/sun55i-a523-ccu.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.dtbs:129: arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb] Error 1
make[2]: *** [scripts/Makefile.build:478: arch/arm64/boot/dts/allwinner] Error 2
make[2]: Target 'arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb' not remade because of errors.
make[1]: *** [/home/rob/proj/linux-dt-testing/Makefile:1399: allwinner/sun55i-t527-avaota-a1.dtb] Error 2
make: *** [Makefile:224: __sub-make] Error 2
make: Target 'allwinner/sun55i-t527-avaota-a1.dtb' not remade because of errors.
Andre Przywara Nov. 11, 2024, 5:42 p.m. UTC | #2
On Mon, 11 Nov 2024 09:32:53 -0600
"Rob Herring (Arm)" <robh@kernel.org> wrote:

Hi Rob,

> On Mon, 11 Nov 2024 01:30:19 +0000, Andre Przywara wrote:
> > Hi,
> > 
> > this series adds basic DT support for the Allwinner A523 SoC, plus the
> > Avaota-A1 router board using the T527 package variant of that SoC.[1]
> > Functionality-wise it relies on the pinctrl[2] and clock[3] support
> > series, though there is no direct code dependency series to this series
> > (apart from the respective binding patches in the two series').
> > 
> > Most of the patches add DT binding documentation for the most basic
> > peripherals, the vast majority of them actually being already supported,
> > courtesy of identical IP being used. This includes MMC and USB 2.0, so
> > with the above mentioned clock and pinctrl support this gives an already
> > somewhat usable mainline support for this new SoC family.
> > The watchdog is not completely compatible, but is an easy addition, so
> > this bit is included in here as well.
> > 
> > The A523 features 8 Arm Cortex-A55 cores, organised in two clusters,
> > clocked separately, with different OPP limits, in some kind of
> > little/LITTLE configuration. The GPU is a Arm Mali G57 MC01, and the chip
> > also features a single PCIe 2.1 lane, sharing a PHY with some USB 3.1
> > controller - which means only one of the two can be used.
> > The rest of the SoC is the usual soup of multimedia SoC IP, with eDP
> > support and two Gigabit Ethernet MACs among the highlights.
> > 
> > The main feature is patch 11/14, which adds the SoC .dtsi. This for now
> > is limited to the parts that are supported and could be tested. At the
> > moment there is no PSCI firmware, even the TF-A port from the BSP does
> > not seem to work for me. That's why the secondary cores have been omitted
> > for now, among other instances of some IP that I couldn't test yet.
> > I plan to add them in one of the next revisions.
> > 
> > The last patch adds basic support for the Avaota-A1 router board,
> > designed by YuzukiHD, with some boards now built by Pine64.
> > 
> > The mainline firmware side in general is somewhat lacking still: I have
> > basic U-Boot support working (including MMC and USB), although still
> > without DRAM support. This is for now covered by some binary blob found
> > in the (otherwise Open Source) Syterkit firmware, which also provides
> > the BSP versions of TF-A and the required (RISC-V) management core
> > firmware. Fortunately we have indications that DRAM support is not that
> > tricky, as the IP blocks are very similar to already supported, and dev
> > boards are on their way to the right people.
> > 
> > Meanwhile I would like people to have a look at those DT bits here. Please
> > compare them to the available user manual, and test them if you have access
> > to hardware.
> > 
> > Based on v6.12-rc1.
> > I pushed a branch with all the three series combined here:
> > https://github.com/apritzel/linux/commits/a523-v1/
> > 
> > Cheers,
> > Andre
> > 
> > [1] https://linux-sunxi.org/A523#Family_of_sun55iw3
> > [2] https://lore.kernel.org/linux-sunxi/20241111005750.13071-1-andre.przywara@arm.com/T/#t
> > [3] https://lore.kernel.org/linux-sunxi/20241111004722.10130-1-andre.przywara@arm.com/T/#t
> > 
> > Andre Przywara (14):
> >   dt-bindings: mmc: sunxi: Simplify compatible string listing
> >   dt-bindings: mmc: sunxi: add compatible strings for Allwinner A523
> >   dt-bindings: watchdog: sunxi: add Allwinner A523 compatible string
> >   watchdog: sunxi_wdt: Add support for Allwinner A523
> >   dt-bindings: i2c: mv64xxx: Add Allwinner A523 compatible string
> >   dt-bindings: irq: sun7i-nmi: document the Allwinner A523 NMI
> >     controller
> >   dt-bindings: phy: document Allwinner A523 USB-2.0 PHY
> >   dt-bindings: usb: sunxi-musb: add Allwinner A523 compatible string
> >   dt-bindings: usb: add A523 compatible string for EHCI and OCHI
> >   dt-bindings: rtc: sun6i: Add Allwinner A523 support
> >   arm64: dts: allwinner: Add Allwinner A523 .dtsi file
> >   dt-bindings: vendor-prefixes: Add YuzukiHD name
> >   dt-bindings: arm: sunxi: Add Avaota A1 board
> >   arm64: dts: allwinner: a523: add Avaota-A1 router support
> > 
> >  .../devicetree/bindings/arm/sunxi.yaml        |   5 +
> >  .../bindings/i2c/marvell,mv64xxx-i2c.yaml     |   1 +
> >  .../allwinner,sun7i-a20-sc-nmi.yaml           |   1 +
> >  .../bindings/mmc/allwinner,sun4i-a10-mmc.yaml |  40 +-
> >  .../phy/allwinner,sun50i-a64-usb-phy.yaml     |  10 +-
> >  .../bindings/rtc/allwinner,sun6i-a31-rtc.yaml |   4 +-
> >  .../usb/allwinner,sun4i-a10-musb.yaml         |   1 +
> >  .../devicetree/bindings/usb/generic-ehci.yaml |   1 +
> >  .../devicetree/bindings/usb/generic-ohci.yaml |   1 +
> >  .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
> >  .../watchdog/allwinner,sun4i-a10-wdt.yaml     |   2 +
> >  arch/arm64/boot/dts/allwinner/Makefile        |   1 +
> >  .../arm64/boot/dts/allwinner/sun55i-a523.dtsi | 386 ++++++++++++++++++
> >  .../dts/allwinner/sun55i-t527-avaota-a1.dts   | 311 ++++++++++++++
> >  drivers/watchdog/sunxi_wdt.c                  |  11 +
> >  15 files changed, 751 insertions(+), 26 deletions(-)
> >  create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
> >  create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts
> > 
> > --
> > 2.46.2
> > 
> > 
> >   
> 
> 
> My bot found new DTB warnings on the .dts files added or changed in this
> series.
> 
> Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
> are fixed by another series. Ultimately, it is up to the platform
> maintainer whether these warnings are acceptable or not. No need to reply
> unless the platform maintainer has comments.
> 
> If you already ran DT checks and didn't see these error(s), then
> make sure dt-schema is up to date:
> 
>   pip3 install dtschema --upgrade
> 
> 
> New warnings running 'make CHECK_DTBS=y allwinner/sun55i-t527-avaota-a1.dtb' for 20241111013033.22793-1-andre.przywara@arm.com:
> 
> In file included from arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts:6:
> arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi:6:10: fatal error: dt-bindings/clock/sun55i-a523-ccu.h: No such file or directory
>     6 | #include <dt-bindings/clock/sun55i-a523-ccu.h>

Argh, the headers, forgot about them! I was hoping there would only be a
complaint about the undocumented compatible strings, and I didn't want to
tie the three series together unnecessarily, to avoid a harder to handle
28-patch series.

I hope this doesn't prevent actual review by people, my github has
the combined story, in case people want to avoid the issue:
https://github.com/apritzel/linux/commits/a523-v1/

Cheers,
Andre

>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> make[3]: *** [scripts/Makefile.dtbs:129: arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb] Error 1
> make[2]: *** [scripts/Makefile.build:478: arch/arm64/boot/dts/allwinner] Error 2
> make[2]: Target 'arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dtb' not remade because of errors.
> make[1]: *** [/home/rob/proj/linux-dt-testing/Makefile:1399: allwinner/sun55i-t527-avaota-a1.dtb] Error 2
> make: *** [Makefile:224: __sub-make] Error 2
> make: Target 'allwinner/sun55i-t527-avaota-a1.dtb' not remade because of errors.
> 
> 
> 
> 
>
Conor Dooley Nov. 11, 2024, 8:34 p.m. UTC | #3
On Mon, Nov 11, 2024 at 01:30:20AM +0000, Andre Przywara wrote:
> New Allwinner SoCs only occasionally update their MMC IP, leading to many
> pairs of compatible strings, though there are sometimes a number of them
> being compatible with one particular SoC.
> 
> Collate the compatible string listing in the binding, to group those
> being compatible together. This makes the list more readable, and allows
> for easier addition of new SoC's MMC devices.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Conor Dooley Nov. 11, 2024, 8:35 p.m. UTC | #4
On Mon, Nov 11, 2024 at 01:30:21AM +0000, Andre Przywara wrote:
> The Allwinner A523 uses the same MMC IP as the D1.
> 
> Introduce the new specific compatible strings, and use them with
> fallbacks to the D1 strings.
> 
> Also it turned out that the A100 is not compatible to the H616, instead
> it is the same as the D1. For compatibility we cannot change the fallback
> chain, but any drivers are from now on supposed to match on the H616
> string directly. Mark this fallback chain as deprecated, to avoid new
> users to be added.

tbh, I think this should be split out into a fix commit of its own.

Split,
Acked-by: Conor Dooley <conor.dooley@microchip.com>