]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: consolidate version reading and validation
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Wed, 29 Oct 2025 00:03:20 +0000 (00:03 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 30 Oct 2025 00:18:22 +0000 (17:18 -0700)
There is no need to read the version register twice, once in
stmmac_get_id() and then again in stmmac_get_dev_id(). Consolidate
this into stmmac_get_version() and pass each of these this value.

As both functions unnecessarily issue the same warning for a zero
register value, also move this into stmmac_get_version().

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Tested-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vDteq-0000000CCC3-3zbJ@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/hwif.c

index f6ada5a905fe0f45e59bec2ce3e64454a0aba671..ffdc101ce3ce4f619c53fab00f65cf3bf7641caf 100644 (file)
@@ -18,30 +18,16 @@ struct stmmac_version {
        u8 dev_id;
 };
 
-static u32 stmmac_get_id(struct stmmac_priv *priv, u32 id_reg)
+static u32 stmmac_get_id(struct stmmac_priv *priv, u32 reg)
 {
-       u32 reg = readl(priv->ioaddr + id_reg);
-
-       if (!reg) {
-               dev_info(priv->device, "Version ID not available\n");
-               return 0x0;
-       }
-
        dev_info(priv->device, "User ID: 0x%x, Synopsys ID: 0x%x\n",
                        (unsigned int)(reg & GENMASK(15, 8)) >> 8,
                        (unsigned int)(reg & GENMASK(7, 0)));
        return reg & GENMASK(7, 0);
 }
 
-static u32 stmmac_get_dev_id(struct stmmac_priv *priv, u32 id_reg)
+static u32 stmmac_get_dev_id(struct stmmac_priv *priv, u32 reg)
 {
-       u32 reg = readl(priv->ioaddr + id_reg);
-
-       if (!reg) {
-               dev_info(priv->device, "Version ID not available\n");
-               return 0x0;
-       }
-
        return (reg & GENMASK(15, 8)) >> 8;
 }
 
@@ -50,6 +36,7 @@ static void stmmac_get_version(struct stmmac_priv *priv,
 {
        enum dwmac_core_type core_type = priv->plat->core_type;
        unsigned int version_offset;
+       u32 version;
 
        ver->snpsver = 0;
        ver->dev_id = 0;
@@ -62,9 +49,15 @@ static void stmmac_get_version(struct stmmac_priv *priv,
        else
                version_offset = GMAC4_VERSION;
 
-       ver->snpsver = stmmac_get_id(priv, version_offset);
+       version = readl(priv->ioaddr + version_offset);
+       if (version == 0) {
+               dev_info(priv->device, "Version ID not available\n");
+               return;
+       }
+
+       ver->snpsver = stmmac_get_id(priv, version);
        if (core_type == DWMAC_CORE_XGMAC)
-               ver->dev_id = stmmac_get_dev_id(priv, version_offset);
+               ver->dev_id = stmmac_get_dev_id(priv, version);
 }
 
 static void stmmac_dwmac_mode_quirk(struct stmmac_priv *priv)