Re: [PATCH v3 2/5] net: hpe: Add GXP UMAC MDIO
From: Andrew Lunn
Date: Wed Aug 16 2023 - 21:20:51 EST
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