[PATCH v5 10/10] net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs
From: clabbe.montjoie@gmail.com (Corentin Labbe)
Date: 2017-09-08 14:08:44
Also in:
linux-devicetree, lkml, netdev
From: clabbe.montjoie@gmail.com (Corentin Labbe)
Date: 2017-09-08 14:08:44
Also in:
linux-devicetree, lkml, netdev
On Fri, Sep 08, 2017 at 04:00:20PM +0200, Andrew Lunn wrote:
quoted
quoted
quoted
+static int mdio_mux_syscon_switch_fn(int current_child, int desired_child, + void *data) +{ + struct stmmac_priv *priv = data; + struct sunxi_priv_data *gmac = priv->plat->bsp_priv; + u32 reg, val; + int ret = 0; + bool need_reset = false; + + if (current_child ^ desired_child) { + regmap_read(gmac->regmap, SYSCON_EMAC_REG, ®); + switch (desired_child) { + case DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID: + dev_info(priv->device, "Switch mux to internal PHY"); + val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SELECT; + if (gmac->use_internal_phy) + need_reset = true; + break;This i don't get. Why do you need use_internal_phy? Isn't that implicit from DWMAC_sUN8I_MDIO_MUX_INTERNAL_ID? Is it even possible to use an external PHY on the internal MDIO bus?On my H3 box with external PHY, the MDIO mux library first select (for scan ?) the internal MDIO. Without use_internal_phy usage, this board will launch a reset to use the internal MDIO... and this reset timeout/fail.Do you know why the reset times out/fails?
Because there are nothing connected to it. I got also reset timeout on integrated MDIO when the integrated PHY is not powered.