]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: visconti: use stmmac_get_phy_intf_sel()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 11 Nov 2025 08:12:48 +0000 (08:12 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 13 Nov 2025 02:13:43 +0000 (18:13 -0800)
Use stmmac_get_phy_intf_sel() to decode the PHY interface mode to the
phy_intf_sel value, validate the result and use that to set the
control register to select the operating mode for the DWMAC core.

Note that this will allow GMII as well as MII as the phy_intf_sel
value is the same for both.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vIjUe-0000000DquB-3JDY@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c

index 7b6b048e1be050282f70237d57eff1b2e6721506..9497b13a575393e73a1cf919877682fa79e5646e 100644 (file)
 
 #define ETHER_CLK_SEL_RX_TX_CLK_EN (ETHER_CLK_SEL_RX_CLK_EN | ETHER_CLK_SEL_TX_CLK_EN)
 
-#define ETHER_CONFIG_INTF_MII  PHY_INTF_SEL_GMII_MII
-#define ETHER_CONFIG_INTF_RGMII        PHY_INTF_SEL_RGMII
-#define ETHER_CONFIG_INTF_RMII PHY_INTF_SEL_RMII
-
 struct visconti_eth {
        void __iomem *reg;
        struct clk *phy_ref_clk;
@@ -150,22 +146,12 @@ static int visconti_eth_init_hw(struct platform_device *pdev, struct plat_stmmac
 {
        struct visconti_eth *dwmac = plat_dat->bsp_priv;
        unsigned int clk_sel_val;
-       u32 phy_intf_sel;
-
-       switch (plat_dat->phy_interface) {
-       case PHY_INTERFACE_MODE_RGMII:
-       case PHY_INTERFACE_MODE_RGMII_ID:
-       case PHY_INTERFACE_MODE_RGMII_RXID:
-       case PHY_INTERFACE_MODE_RGMII_TXID:
-               phy_intf_sel = ETHER_CONFIG_INTF_RGMII;
-               break;
-       case PHY_INTERFACE_MODE_MII:
-               phy_intf_sel = ETHER_CONFIG_INTF_MII;
-               break;
-       case PHY_INTERFACE_MODE_RMII:
-               phy_intf_sel = ETHER_CONFIG_INTF_RMII;
-               break;
-       default:
+       int phy_intf_sel;
+
+       phy_intf_sel = stmmac_get_phy_intf_sel(plat_dat->phy_interface);
+       if (phy_intf_sel != PHY_INTF_SEL_GMII_MII &&
+           phy_intf_sel != PHY_INTF_SEL_RGMII &&
+           phy_intf_sel != PHY_INTF_SEL_RMII) {
                dev_err(&pdev->dev, "Unsupported phy-mode (%d)\n", plat_dat->phy_interface);
                return -EOPNOTSUPP;
        }