
On Wed, 19 May 2021 21:42:07 +0200 Andreas Rehn rehn.andreas86@gmail.com wrote:
Hi,
h3 and v3s have internal phys and can share the same driver. Furthermore sun8i-v3s-emac is not available, use sun8i-h3-emac instead
- add emac pins
- enable emac for licheepi-zero-dock as it provides a ethernet port
So first, this is not how we handle DT changes in U-Boot. They would need to go through the Linux tree first, then can be synced back to U-Boot. Sorry.
Looking more into the details:
Signed-off-by: Andreas Rehn rehn.andreas86@gmail.com
arch/arm/dts/sun8i-v3s-licheepi-zero-dock.dts | 11 +++++++++++ arch/arm/dts/sun8i-v3s.dtsi | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/sun8i-v3s-licheepi-zero-dock.dts b/arch/arm/dts/sun8i-v3s-licheepi-zero-dock.dts index db5cd0b857..083ac11b94 100644 --- a/arch/arm/dts/sun8i-v3s-licheepi-zero-dock.dts +++ b/arch/arm/dts/sun8i-v3s-licheepi-zero-dock.dts @@ -49,6 +49,10 @@ compatible = "licheepi,licheepi-zero-dock", "licheepi,licheepi-zero", "allwinner,sun8i-v3s";
- aliases {
ethernet0 = &emac;
- };
- leds { /* The LEDs use PG0~2 pins, which conflict with MMC1 */ status = "disabled";
@@ -94,3 +98,10 @@ voltage = <800000>; }; };
+&emac {
- allwinner,leds-active-low;
- status = "okay";
- pinctrl-names = "default";
- pinctrl-0 = <&emac_rgmii_pins>;
I don't think this is correct. If I understand correctly, the V3s does not expose any MAC pins, instead relies entirely on the internal PHY. Those pins are not muxed, so don't need any pinctrl properties.
+}; diff --git a/arch/arm/dts/sun8i-v3s.dtsi b/arch/arm/dts/sun8i-v3s.dtsi index 0c73416769..35cc4d63f7 100644 --- a/arch/arm/dts/sun8i-v3s.dtsi +++ b/arch/arm/dts/sun8i-v3s.dtsi @@ -342,6 +342,14 @@ function = "csi"; };
emac_rgmii_pins: emac-rgmii-pins {
pins = "PD0", "PD1", "PD2", "PD3", "PD4",
"PD5", "PD7", "PD8", "PD9", "PD10",
"PD12", "PD13", "PD15", "PD16", "PD17";
function = "emac";
drive-strength = <40>;
};
This is wrong (and not needed): The V3s does not expose MAC pins. If I understand correctly, the V3 and V3s share the same die, so the pin controller has those registers, but the whole port is connected nowhere.
i2c0_pins: i2c0-pins { pins = "PB6", "PB7"; function = "i2c0";
@@ -468,7 +476,7 @@ };
emac: ethernet@1c30000 {
compatible = "allwinner,sun8i-v3s-emac";
compatible = "allwinner,sun8i-h3-emac";
You can't just change the compatible string this way, the original one is there for a reason. In this case the difference is that the V3s does not support Gigabit Ethernet - because the only MAC pins connected are the internal MII ones. I believe the MAC itself could probably still handle GBit, but it can't talk to the outside in this mode.
Instead just add the v3s compatible string to the sun8i-emac driver. Assign a new type and add this new type wherever you see H3_EMAC, but not in the RGMII part.
Cheers, Andre
syscon = <&syscon>; reg = <0x01c30000 0x10000>; interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;