[PATCH v4 2/2] arm64: dts: imx8dxl: Add SolidRun SoM and HummingBoard
Vladimir Oltean
vladimir.oltean at nxp.com
Mon May 11 05:50:53 PDT 2026
On Mon, May 11, 2026 at 12:30:35PM +0000, Josua Mayer wrote:
> I had the reverse understanding, the switch port specifies rgmii-id,
> and the cpu port specifies "rgmii".
>
> The switch port has mode rgmii-id, indicating that someone should add delays.
Yes, but my understanding is that it is out of scope for the phy-mode = "rgmii-id"
to decide who. It just means that there are no PCB delays.
> It is a fixed link without PHY, so switch must add the delays.
This is an obsolete interpretation of phy-mode. sja1105_parse_rgmii_delays()
explains that in the new interpretation, 'rgmii' or 'rgmii-id' doesn't
indicate anything. The switch inserts the delays because of the
"rx-internal-delay-ps" and "tx-internal-delay-ps" properties.
> From the cpu (eqos) perspcetive it is also a fixed link without phy,
> so I specify rgmii indicating nobody should add delays.
>
> Is this correct?
My understanding may be wrong, but I directly quote:
- If the PCB does not add these delays via extra long traces,
'rgmii-id' should be used. Here, 'id' refers to 'internal delay',
where either the MAC or PHY adds the delay.
- When the PCB does not implement the delays, the MAC or PHY must.
As such, this is software configuration, and so not described in
Device Tree.
> >
> >> + pinctrl-0 = <&eqos_pins>;
> >> + pinctrl-names = "default";
> >> + status = "okay";
> >> +
> >> + fixed-link {
> >> + full-duplex;
> >> + speed = <1000>;
> >> + };
> >> +};
> >> +
> >> +&lpspi0 {
> >> + cs-gpios = <&lsio_gpio1 8 GPIO_ACTIVE_LOW>, <&lsio_gpio1 7 GPIO_ACTIVE_LOW>;
> >> + pinctrl-0 = <&lpspi0_pins>, <&switch_pins>;
> >> + pinctrl-names = "default";
> >> + status = "okay";
> >> +
> >> + ethernet-switch at 0 {
> >> + compatible = "nxp,sja1110a";
> >> + reg = <0>;
> >> + reset-gpios = <&lsio_gpio4 3 GPIO_ACTIVE_LOW>;
> >> + spi-max-frequency = <4000000>;
> >> +
> >> + ethernet-ports {
> >> + #address-cells = <1>;
> >> + #size-cells = <0>;
> >> +
> >> + /* 100Base-TX on connector J26 */
> >> + port at 1 {
> > Some people might prefer seeing ethernet-port at N instead of port at N, to
> > fully avoid confusion with dtschema/schemas/graph.yaml (although, the
> > container node being ethernet-ports now, the confusion should be
> > avoidable).
> >
> > Also, if you ever perform device tree fixups from the bootloader (like
> > for setting status = "disabled" to status = "okay" for the ports that go
> > to addon boards), please never hardcode fixup paths,
>
> I was expecting device-tree overlays to be used, in which case aliases
> are not needed.
Ok, what do you need for device tree overlays to reference these nodes?
Don't you need a label for them to appear in /__symbols__? Or do you
reference by "&{/absolute/path}" (still bad)?
> > but always use eth
> > aliases to get to them.
> However if it is okay to add eth[0-9]+ aliases also for switch ports, I'll add them.
Absolutely ok.
> > This is in case the port node names ever change,
> > to avoid bootloader regressions.
> Good point!
I don't think there's any downside to adding aliases, so please do, in
case anyone needs them, they should be there.
More information about the linux-arm-kernel
mailing list