]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: dsa: yt921x: Refactor yt921x_chip_setup()
authorDavid Yang <mmyangfl@gmail.com>
Sat, 31 Jan 2026 02:18:50 +0000 (10:18 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 3 Feb 2026 14:09:31 +0000 (15:09 +0100)
yt921x_chip_setup() is already pretty long, and is going to become
longer. Split it into parts.

Signed-off-by: David Yang <mmyangfl@gmail.com>
Link: https://patch.msgid.link/20260131021854.3405036-5-mmyangfl@gmail.com
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/dsa/yt921x.c

index 10f341436b448da476a391c9d3947ece0b0ee5fc..e418176b7c64d3c43779e075b96aaa4403cc051b 100644 (file)
@@ -2902,7 +2902,7 @@ static int yt921x_chip_reset(struct yt921x_priv *priv)
        return 0;
 }
 
-static int yt921x_chip_setup(struct yt921x_priv *priv)
+static int yt921x_chip_setup_dsa(struct yt921x_priv *priv)
 {
        struct dsa_switch *ds = &priv->ds;
        unsigned long cpu_ports_mask;
@@ -2920,16 +2920,6 @@ static int yt921x_chip_setup(struct yt921x_priv *priv)
        if (res)
                return res;
 
-       /* Enable and clear MIB */
-       res = yt921x_reg_set_bits(priv, YT921X_FUNC, YT921X_FUNC_MIB);
-       if (res)
-               return res;
-
-       ctrl = YT921X_MIB_CTRL_CLEAN | YT921X_MIB_CTRL_ALL_PORT;
-       res = yt921x_reg_write(priv, YT921X_MIB_CTRL, ctrl);
-       if (res)
-               return res;
-
        /* Setup software switch */
        ctrl = YT921X_CPU_COPY_TO_EXT_CPU;
        res = yt921x_reg_write(priv, YT921X_CPU_COPY, ctrl);
@@ -2982,6 +2972,29 @@ static int yt921x_chip_setup(struct yt921x_priv *priv)
        if (res)
                return res;
 
+       return 0;
+}
+
+static int yt921x_chip_setup(struct yt921x_priv *priv)
+{
+       u32 ctrl;
+       int res;
+
+       ctrl = YT921X_FUNC_MIB;
+       res = yt921x_reg_set_bits(priv, YT921X_FUNC, ctrl);
+       if (res)
+               return res;
+
+       res = yt921x_chip_setup_dsa(priv);
+       if (res)
+               return res;
+
+       /* Clear MIB */
+       ctrl = YT921X_MIB_CTRL_CLEAN | YT921X_MIB_CTRL_ALL_PORT;
+       res = yt921x_reg_write(priv, YT921X_MIB_CTRL, ctrl);
+       if (res)
+               return res;
+
        /* Miscellaneous */
        res = yt921x_reg_set_bits(priv, YT921X_SENSOR, YT921X_SENSOR_TEMP);
        if (res)