Message ID | 1545083090-31529-1-git-send-email-Bryan.Whitehead@microchip.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [v1,net] lan743x: Expand phy search for LAN7431 | expand |
On Mon, Dec 17, 2018 at 04:44:50PM -0500, Bryan Whitehead wrote: > The LAN7431 uses an external phy, and it can be found anywhere in > the phy address space. This patch uses phy address 1 for LAN7430 > only. And searches all addresses otherwise. > > Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com> > --- > drivers/net/ethernet/microchip/lan743x_main.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c > index e8ca98c..1ba8ea0 100644 > --- a/drivers/net/ethernet/microchip/lan743x_main.c > +++ b/drivers/net/ethernet/microchip/lan743x_main.c > @@ -2719,8 +2719,9 @@ static int lan743x_mdiobus_init(struct lan743x_adapter *adapter) > snprintf(adapter->mdiobus->id, MII_BUS_ID_SIZE, > "pci-%s", pci_name(adapter->pdev)); > > - /* set to internal PHY id */ > - adapter->mdiobus->phy_mask = ~(u32)BIT(1); > + if ((adapter->csr.id_rev & ID_REV_ID_MASK_) == ID_REV_ID_LAN7430_) > + /* LAN7430 uses internal phy at address 1 */ > + adapter->mdiobus->phy_mask = ~(u32)BIT(1); Hi Bryan Does LAN7430 have an external MDIO bus as well as the internal one? Is there a possibility for a PHY at address 0? If not, you can probably just not have a mask at all. Andrew
> > - /* set to internal PHY id */ > > - adapter->mdiobus->phy_mask = ~(u32)BIT(1); > > + if ((adapter->csr.id_rev & ID_REV_ID_MASK_) == > ID_REV_ID_LAN7430_) > > + /* LAN7430 uses internal phy at address 1 */ > > + adapter->mdiobus->phy_mask = ~(u32)BIT(1); > > Hi Bryan > > Does LAN7430 have an external MDIO bus as well as the internal one? Is > there a possibility for a PHY at address 0? If not, you can probably just not > have a mask at all. > > Andrew Hi Andrew, The LAN7430 does not have an external MDIO bus. And there is no possibility for a PHY at address 0. The reason I kept the mask for LAN7430 case is to reduce effort in finding the phy. Since Linux will scan all addresses in that case unnecessarily. But I have tested your suggestion and it does work without a mask. So I'm fine either way. If you prefer I do not use a mask for LAN7430 case, then let me know and I will submit a new patch version. Bryan
On Tue, Dec 18, 2018 at 04:41:20PM +0000, Bryan.Whitehead@microchip.com wrote: > > > - /* set to internal PHY id */ > > > - adapter->mdiobus->phy_mask = ~(u32)BIT(1); > > > + if ((adapter->csr.id_rev & ID_REV_ID_MASK_) == > > ID_REV_ID_LAN7430_) > > > + /* LAN7430 uses internal phy at address 1 */ > > > + adapter->mdiobus->phy_mask = ~(u32)BIT(1); > > > > Hi Bryan > > > > Does LAN7430 have an external MDIO bus as well as the internal one? Is > > there a possibility for a PHY at address 0? If not, you can probably just not > > have a mask at all. > > > > Andrew > > Hi Andrew, > > The LAN7430 does not have an external MDIO bus. > And there is no possibility for a PHY at address 0. > The reason I kept the mask for LAN7430 case is to reduce effort in finding the phy. > Since Linux will scan all addresses in that case unnecessarily. > > But I have tested your suggestion and it does work without a mask. > So I'm fine either way. Hi Bryan Lets keep the patch as it is. As you said, it speeds things up, and since there is no external MDIO bus, nobody can add a second PHY, or a switch chip, etc. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
From: Bryan Whitehead <Bryan.Whitehead@microchip.com> Date: Mon, 17 Dec 2018 16:44:50 -0500 > The LAN7431 uses an external phy, and it can be found anywhere in > the phy address space. This patch uses phy address 1 for LAN7430 > only. And searches all addresses otherwise. > > Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com> Applied, thanks Bryan.
diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c index e8ca98c..1ba8ea0 100644 --- a/drivers/net/ethernet/microchip/lan743x_main.c +++ b/drivers/net/ethernet/microchip/lan743x_main.c @@ -2719,8 +2719,9 @@ static int lan743x_mdiobus_init(struct lan743x_adapter *adapter) snprintf(adapter->mdiobus->id, MII_BUS_ID_SIZE, "pci-%s", pci_name(adapter->pdev)); - /* set to internal PHY id */ - adapter->mdiobus->phy_mask = ~(u32)BIT(1); + if ((adapter->csr.id_rev & ID_REV_ID_MASK_) == ID_REV_ID_LAN7430_) + /* LAN7430 uses internal phy at address 1 */ + adapter->mdiobus->phy_mask = ~(u32)BIT(1); /* register mdiobus */ ret = mdiobus_register(adapter->mdiobus);
The LAN7431 uses an external phy, and it can be found anywhere in the phy address space. This patch uses phy address 1 for LAN7430 only. And searches all addresses otherwise. Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com> --- drivers/net/ethernet/microchip/lan743x_main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)