On Wed, Aug 16, 2023 at 04:52:17PM -0500, nick.hawkins@xxxxxxx wrote: > From: Nick Hawkins <nick.hawkins@xxxxxxx> > > The GXP contains two Universal 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 I think that is a typo. 100BaseX does not exist, the nearest is 100BaseFX. > +config GXP_UMAC_MDIO > + tristate "GXP UMAC mdio support" > + depends on ARCH_HPE || COMPILE_TEST > + depends on OF_MDIO && HAS_IOMEM > + depends on MDIO_DEVRES > + help > + Say y here to support the GXP UMAC MDIO bus. 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 Same here. > --- a/drivers/net/mdio/Makefile > +++ b/drivers/net/mdio/Makefile > @@ -11,6 +11,7 @@ obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o > obj-$(CONFIG_MDIO_BITBANG) += mdio-bitbang.o > obj-$(CONFIG_MDIO_CAVIUM) += mdio-cavium.o > obj-$(CONFIG_MDIO_GPIO) += mdio-gpio.o > +obj-$(CONFIG_GXP_UMAC_MDIO) += mdio-gxp-umac.o > obj-$(CONFIG_MDIO_HISI_FEMAC) += mdio-hisi-femac.o Don't you think this looks out of place. The only one not CONFIG_MDIO ? > +static int umac_mdio_write(struct mii_bus *bus, int phy_id, int reg, u16 value) > +{ > + struct umac_mdio_priv *umac_mdio = bus->priv; > + unsigned int status; > + int ret; > + > + writel(value, umac_mdio->base + UMAC_MII_DATA); ... > + if (ret) > + dev_err(bus->parent, "mdio read time out\n"); cut/paste error. Andrew --- pw-bot: cr