diff mbox series

net: phy: gmii2rgmii: Support external rgmii-id phy

Message ID 20230320155542.26602-1-stefan.herbrechtsmeier-oss@weidmueller.com
State Superseded
Delegated to: Ramon Fried
Headers show
Series net: phy: gmii2rgmii: Support external rgmii-id phy | expand

Commit Message

Stefan Herbrechtsmeier March 20, 2023, 3:55 p.m. UTC
From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

Read the phy mode of the external phy from the device tree if available.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

---

 drivers/net/phy/xilinx_gmii2rgmii.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Michal Simek March 22, 2023, 7:58 a.m. UTC | #1
On 3/20/23 16:55, Stefan Herbrechtsmeier wrote:
> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> Read the phy mode of the external phy from the device tree if available.
> 
> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> ---
> 
>   drivers/net/phy/xilinx_gmii2rgmii.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
> index 7376283956..12519a8d57 100644
> --- a/drivers/net/phy/xilinx_gmii2rgmii.c
> +++ b/drivers/net/phy/xilinx_gmii2rgmii.c
> @@ -48,7 +48,10 @@ static int xilinxgmiitorgmii_config(struct phy_device *phydev)
>   		return -EINVAL;
>   	}
>   
> -	ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
> +	ext_phydev->interface = ofnode_read_phy_mode(node);
> +	if (ext_phydev->interface == PHY_INTERFACE_MODE_NA)
> +		ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
> +

This is open a way to pretty much define any mode which doesn't look right.

I think it would be good to also check that mode is setup based on what IP 
itself supports. It means check that rgmii or rgmii-id are selected.

If in DT someone put sgmii it should error out.

Thanks,
Michal
diff mbox series

Patch

diff --git a/drivers/net/phy/xilinx_gmii2rgmii.c b/drivers/net/phy/xilinx_gmii2rgmii.c
index 7376283956..12519a8d57 100644
--- a/drivers/net/phy/xilinx_gmii2rgmii.c
+++ b/drivers/net/phy/xilinx_gmii2rgmii.c
@@ -48,7 +48,10 @@  static int xilinxgmiitorgmii_config(struct phy_device *phydev)
 		return -EINVAL;
 	}
 
-	ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
+	ext_phydev->interface = ofnode_read_phy_mode(node);
+	if (ext_phydev->interface == PHY_INTERFACE_MODE_NA)
+		ext_phydev->interface = PHY_INTERFACE_MODE_RGMII;
+
 	ext_phydev->node = phandle.node;
 	phydev->priv = ext_phydev;