[0/3] sunxi: Orange Pi Zero 3 DT support

Message ID 20230731011725.7228-1-andre.przywara@arm.com
Headers
Series sunxi: Orange Pi Zero 3 DT support |

Message

Andre Przywara July 31, 2023, 1:17 a.m. UTC
  Hi,

Orange Pi recently released the Orange Pi Zero 3 board, which is some
updated version of their former Zero 2 development board. Some component
changes (Motorcomm PHY instead of Realtek, different PMIC), some board
layout changes, and it ships with up to 4GB of DRAM now. The SoC is now
labelled H618 instead of H616, which apparently is the same, just with
more L2 cache.

Split the existing OPi Zero2 DT, to allow sharing most DT nodes, then
add the binding documentation and DT for the new board.

Linux v6.5-rc boots out of the box (the PMIC driver just made it in),
and most things work: UART, PSCI, GPIO, SPI flash, SD card, USB.
Ethernet is almost working, I get an IP address via DHCP, but no further
packets come through. Might be either a problem with the new Motorcomm
PHY driver, or some missing delay settings, I have to investigate, any
help or advice welcome.
Also let me know if the DT split is a good idea or not, happy to roll
that back if requested.

Cheers,
Andre

Andre Przywara (3):
  arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
  dt-bindings: arm: sunxi: document Orange Pi Zero 3 board name
  arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support

 .../devicetree/bindings/arm/sunxi.yaml        |   5 +
 arch/arm64/boot/dts/allwinner/Makefile        |   1 +
 .../allwinner/sun50i-h616-orangepi-zero2.dts  | 119 +---------------
 .../allwinner/sun50i-h616-orangepi-zerox.dtsi | 131 ++++++++++++++++++
 .../allwinner/sun50i-h618-orangepi-zero3.dts  |  86 ++++++++++++
 5 files changed, 224 insertions(+), 118 deletions(-)
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zerox.dtsi
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
  

Comments

Jernej Škrabec Aug. 3, 2023, 9:07 p.m. UTC | #1
Dne ponedeljek, 31. julij 2023 ob 03:17:22 CEST je Andre Przywara napisal(a):
> Hi,
> 
> Orange Pi recently released the Orange Pi Zero 3 board, which is some
> updated version of their former Zero 2 development board. Some component
> changes (Motorcomm PHY instead of Realtek, different PMIC), some board
> layout changes, and it ships with up to 4GB of DRAM now. The SoC is now
> labelled H618 instead of H616, which apparently is the same, just with
> more L2 cache.
> 
> Split the existing OPi Zero2 DT, to allow sharing most DT nodes, then
> add the binding documentation and DT for the new board.
> 
> Linux v6.5-rc boots out of the box (the PMIC driver just made it in),
> and most things work: UART, PSCI, GPIO, SPI flash, SD card, USB.
> Ethernet is almost working, I get an IP address via DHCP, but no further
> packets come through. Might be either a problem with the new Motorcomm
> PHY driver, or some missing delay settings, I have to investigate, any
> help or advice welcome.

When I worked with Motorcomm PHYs, I had to add 

motorcomm,clk-out-frequency-hz = <125000000>;

and usual reset gpio related properties. Have you tried that? In any case, 
it's not 100% reliable, but I don't know why.

Best regards,
Jernej

> Also let me know if the DT split is a good idea or not, happy to roll
> that back if requested.
> 
> Cheers,
> Andre
> 
> Andre Przywara (3):
>   arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
>   dt-bindings: arm: sunxi: document Orange Pi Zero 3 board name
>   arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support
> 
>  .../devicetree/bindings/arm/sunxi.yaml        |   5 +
>  arch/arm64/boot/dts/allwinner/Makefile        |   1 +
>  .../allwinner/sun50i-h616-orangepi-zero2.dts  | 119 +---------------
>  .../allwinner/sun50i-h616-orangepi-zerox.dtsi | 131 ++++++++++++++++++
>  .../allwinner/sun50i-h618-orangepi-zero3.dts  |  86 ++++++++++++
>  5 files changed, 224 insertions(+), 118 deletions(-)
>  create mode 100644
> arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zerox.dtsi create mode
> 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
  
Andre Przywara Aug. 4, 2023, 11:48 a.m. UTC | #2
On Thu, 03 Aug 2023 23:07:55 +0200
Jernej Škrabec <jernej.skrabec@gmail.com> wrote:

Hi Jernej,

> Dne ponedeljek, 31. julij 2023 ob 03:17:22 CEST je Andre Przywara napisal(a):
> > Hi,
> > 
> > Orange Pi recently released the Orange Pi Zero 3 board, which is some
> > updated version of their former Zero 2 development board. Some component
> > changes (Motorcomm PHY instead of Realtek, different PMIC), some board
> > layout changes, and it ships with up to 4GB of DRAM now. The SoC is now
> > labelled H618 instead of H616, which apparently is the same, just with
> > more L2 cache.
> > 
> > Split the existing OPi Zero2 DT, to allow sharing most DT nodes, then
> > add the binding documentation and DT for the new board.
> > 
> > Linux v6.5-rc boots out of the box (the PMIC driver just made it in),
> > and most things work: UART, PSCI, GPIO, SPI flash, SD card, USB.
> > Ethernet is almost working, I get an IP address via DHCP, but no further
> > packets come through. Might be either a problem with the new Motorcomm
> > PHY driver, or some missing delay settings, I have to investigate, any
> > help or advice welcome.  
> 
> When I worked with Motorcomm PHYs, I had to add 
> 
> motorcomm,clk-out-frequency-hz = <125000000>;

Ah, good point. Looking at the Linux driver code, that seems almost
mandatory, otherwise the PHY clock is not activated(?).
So that helped, I managed to SSH into my laptop, but it still hangs then.

Just for the sake of completeness, I also tried the other properties that
other boards use: As expected, motorcomm,keep-pll-enabled didn't help, as
the clock line just goes to the MAC pin, and is not used otherwise.
And also motorcomm,auto-sleep-disabled didn't improve stability. At least
not with the current settings, maybe it's needed later on.

> and usual reset gpio related properties. Have you tried that? In any case, 
> it's not 100% reliable, but I don't know why.

The reset pin is hardwired via a simple RC circuit, so there is no GPIO,
and thus the delay parameters don't do anything, I suppose.

But as it's better now with the clk-out property, so I will definitely add
that.
Reports from others (Piotr) seem to suggest that Ethernet is working for
them, so I need to compare notes.

Thanks,
Andre

> 
> Best regards,
> Jernej
> 
> > Also let me know if the DT split is a good idea or not, happy to roll
> > that back if requested.
> > 
> > Cheers,
> > Andre
> > 
> > Andre Przywara (3):
> >   arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
> >   dt-bindings: arm: sunxi: document Orange Pi Zero 3 board name
> >   arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support
> > 
> >  .../devicetree/bindings/arm/sunxi.yaml        |   5 +
> >  arch/arm64/boot/dts/allwinner/Makefile        |   1 +
> >  .../allwinner/sun50i-h616-orangepi-zero2.dts  | 119 +---------------
> >  .../allwinner/sun50i-h616-orangepi-zerox.dtsi | 131 ++++++++++++++++++
> >  .../allwinner/sun50i-h618-orangepi-zero3.dts  |  86 ++++++++++++
> >  5 files changed, 224 insertions(+), 118 deletions(-)
> >  create mode 100644
> > arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zerox.dtsi create mode
> > 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts  
> 
> 
> 
> 
>