diff mbox series

[v1,net] lan743x: Expand phy search for LAN7431

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

Commit Message

Bryan Whitehead Dec. 17, 2018, 9:44 p.m. UTC
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(-)

Comments

Andrew Lunn Dec. 18, 2018, 12:12 p.m. UTC | #1
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
Bryan Whitehead Dec. 18, 2018, 4:41 p.m. UTC | #2
> > -	/* 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
Andrew Lunn Dec. 18, 2018, 4:45 p.m. UTC | #3
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
David Miller Dec. 19, 2018, 5:36 a.m. UTC | #4
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 mbox series

Patch

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);