]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: lpc18xx: use ->set_phy_intf_sel()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 6 Nov 2025 11:23:32 +0000 (11:23 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Nov 2025 03:05:48 +0000 (19:05 -0800)
Move the configuration of the dwmac PHY interface selection to the new
->set_phy_intf_sel() method.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vGy5U-0000000DhQP-19Hd@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c

index ec60968113b83e08f3956cf67dc6452e07a26bc0..c68d7de1f8ac5e6078baade407679d4100be3162 100644 (file)
 #define LPC18XX_CREG_CREG6                     0x12c
 # define LPC18XX_CREG_CREG6_ETHMODE_MASK       GENMASK(2, 0)
 
+static int lpc18xx_set_phy_intf_sel(void *bsp_priv, u8 phy_intf_sel)
+{
+       struct regmap *reg = bsp_priv;
+
+       if (phy_intf_sel != PHY_INTF_SEL_GMII_MII &&
+           phy_intf_sel != PHY_INTF_SEL_RMII)
+               return -EINVAL;
+
+       regmap_update_bits(reg, LPC18XX_CREG_CREG6,
+                          LPC18XX_CREG_CREG6_ETHMODE_MASK,
+                          FIELD_PREP(LPC18XX_CREG_CREG6_ETHMODE_MASK,
+                                     phy_intf_sel));
+
+       return 0;
+}
+
 static int lpc18xx_dwmac_probe(struct platform_device *pdev)
 {
        struct plat_stmmacenet_data *plat_dat;
        struct stmmac_resources stmmac_res;
-       struct regmap *reg;
-       u8 ethmode;
+       struct regmap *regmap;
        int ret;
 
        ret = stmmac_get_platform_resources(pdev, &stmmac_res);
@@ -41,21 +56,14 @@ static int lpc18xx_dwmac_probe(struct platform_device *pdev)
 
        plat_dat->core_type = DWMAC_CORE_GMAC;
 
-       reg = syscon_regmap_lookup_by_compatible("nxp,lpc1850-creg");
-       if (IS_ERR(reg)) {
+       regmap = syscon_regmap_lookup_by_compatible("nxp,lpc1850-creg");
+       if (IS_ERR(regmap)) {
                dev_err(&pdev->dev, "syscon lookup failed\n");
-               return PTR_ERR(reg);
-       }
-
-       ethmode = stmmac_get_phy_intf_sel(plat_dat->phy_interface);
-       if (ethmode != PHY_INTF_SEL_GMII_MII &&
-           ethmode != PHY_INTF_SEL_RMII) {
-               dev_err(&pdev->dev, "Only MII and RMII mode supported\n");
-               return -EINVAL;
+               return PTR_ERR(regmap);
        }
 
-       regmap_update_bits(reg, LPC18XX_CREG_CREG6,
-                          LPC18XX_CREG_CREG6_ETHMODE_MASK, ethmode);
+       plat_dat->bsp_priv = regmap;
+       plat_dat->set_phy_intf_sel = lpc18xx_set_phy_intf_sel;
 
        return stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
 }