]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: stmmac: dwmac-sofcpga: Drop the struct device reference
authorMaxime Chevallier <maxime.chevallier@bootlin.com>
Tue, 24 Mar 2026 09:21:00 +0000 (10:21 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 27 Mar 2026 01:19:42 +0000 (18:19 -0700)
We keep a reference to our the struct device in the socfpga_dwmac priv
structure, but now it's only ever used to produce logs in the
.set_phy_mode() ops, that are specific to this driver.

When we call that ops, we always have a ref to the struct device around,
so let's pass it to .set_phy_mode(). We can now discard that reference
from struct socfpga_dwmac.

Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/20260324092102.687082-6-maxime.chevallier@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c

index ae40de2ed8eb0ba788beb1127dac329189a79d65..1d7f0a57d28897005cdc1c5dcbd3c2f737a6c967 100644 (file)
 
 struct socfpga_dwmac;
 struct socfpga_dwmac_ops {
-       int (*set_phy_mode)(struct socfpga_dwmac *dwmac_priv);
+       int (*set_phy_mode)(struct socfpga_dwmac *dwmac_priv,
+                           struct device *dev);
        void (*setup_plat_dat)(struct socfpga_dwmac *dwmac_priv);
 };
 
 struct socfpga_dwmac {
        u32     reg_offset;
        u32     reg_shift;
-       struct  device *dev;
        struct plat_stmmacenet_data *plat_dat;
        struct regmap *sys_mgr_base_addr;
        struct reset_control *stmmac_rst;
@@ -243,7 +243,6 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
        dwmac->reg_offset = reg_offset;
        dwmac->reg_shift = reg_shift;
        dwmac->sys_mgr_base_addr = sys_mgr_base_addr;
-       dwmac->dev = dev;
        of_node_put(np_sgmii_adapter);
 
        return 0;
@@ -382,7 +381,8 @@ static int smtg_crosststamp(ktime_t *device, struct system_counterval_t *system,
        return 0;
 }
 
-static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
+static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac,
+                                    struct device *dev)
 {
        struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
        phy_interface_t phymode = socfpga_get_plat_phymode(dwmac);
@@ -391,7 +391,7 @@ static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
        u32 ctrl, val, module;
 
        if (socfpga_set_phy_mode_common(phymode, &val)) {
-               dev_err(dwmac->dev, "bad phy mode %d\n", phymode);
+               dev_err(dev, "bad phy mode %d\n", phymode);
                return -EINVAL;
        }
 
@@ -440,7 +440,8 @@ static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
        return 0;
 }
 
-static int socfpga_gen10_set_phy_mode(struct socfpga_dwmac *dwmac)
+static int socfpga_gen10_set_phy_mode(struct socfpga_dwmac *dwmac,
+                                     struct device *dev)
 {
        struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
        phy_interface_t phymode = socfpga_get_plat_phymode(dwmac);
@@ -552,7 +553,7 @@ static int socfpga_dwmac_init(struct device *dev, void *bsp_priv)
 {
        struct socfpga_dwmac *dwmac = bsp_priv;
 
-       return dwmac->ops->set_phy_mode(dwmac);
+       return dwmac->ops->set_phy_mode(dwmac, dev);
 }
 
 static void socfpga_gen5_setup_plat_dat(struct socfpga_dwmac *dwmac)