On Mon, Jul 10, 2023 at 2:33 PM Hawkins, Nick <nick.hawkins@xxxxxxx> wrote: > > Greetings Rob and Krzysztof, > > I am attempting to describe the HPE GXP BMCs networking interfaces for > the device tree. > > Here are the details: The GXP contains two Ethernet MACs that can be > connected externally to several physical devices. From an external > interface perspective the BMC provides two SERDES interface connections > capable of either SGMII or 1000Base-X operation. The BMC also provides > a RMII interface for sideband connections to external Ethernet controllers. > > The primary MAC (umac0) can be mapped to either SGMII/1000-BaseX > SERDES interface. The secondary MAC (umac1) can be mapped to only > the second SGMII/1000-Base X Serdes interface or it can be mapped for > RMII sideband. > > The MDIO(mdio0) interface from the primary MAC (umac0) is used for > external PHY status and configuration. The MDIO(mdio1) interface from > the secondary MAC (umac1) is routed to the SGMII/100Base-X IP blocks > on the two SERDES interface connections. > > I cannot find any examples of something currently like this in linux and > I am looking for suggestions. What is your question? Do I know of hardware like this? No. Maybe ask networking folks. > Below is this previous attempt that was used to describe this architecture: > > mdio0: mdio@4080 { > compatible = "hpe,gxp-umac-mdio"; > reg = <0x4080 0x10>; > #address-cells = <1>; > #size-cells = <0>; > ext_phy0: ethernt-phy@0 { > compatible = "marvell,88e1415","ethernet-phy-ieee802.3-c22"; > phy-mode = "sgmii"; > reg = <0>; > }; > }; > > mdio1: mdio@5080 { > compatible = "hpe,gxp-umac-mdio"; > reg = <0x5080 0x10>; > #address-cells = <1>; > #size-cells = <0>; > int_phy0: ethernt-phy@0 { > compatible = "ethernet-phy-ieee802.3-c22"; > phy-mode = "gmii"; > reg = <0>; > }; > > int_phy1: ethernt-phy@1 { > compatible = "ethernet-phy-ieee802.3-c22"; > phy-mode = "gmii"; > reg = <1>; > }; > }; > > umac0: umac@4000 { > compatible = "hpe, gxp-umac"; > reg = <0x4000 0x80>; > interrupts = <10>; > interrupt-parent = <&vic0>; > mac-address = [94 18 82 16 04 d8]; > phy-handle = <&ext_phy0>; > int-phy-handle = <&int_phy0>; This is the only thing that stands out to me. Are both phys usable on a given system? If not, then you shouldn't need to describe both. Otherwise, we could allow 'phy-handle' to take more than 1 entry if we don't already. Then you can define which entry is which interface. Rob