lantiq: Add some gswip patches
[openwrt/staging/pepe2k.git] / target / linux / lantiq / patches-6.1 / 0733-net-dsa-lantiq_gswip-Use-dev_err_probe-where-appropr.patch
diff --git a/target/linux/lantiq/patches-6.1/0733-net-dsa-lantiq_gswip-Use-dev_err_probe-where-appropr.patch b/target/linux/lantiq/patches-6.1/0733-net-dsa-lantiq_gswip-Use-dev_err_probe-where-appropr.patch
new file mode 100644 (file)
index 0000000..f30e7ab
--- /dev/null
@@ -0,0 +1,145 @@
+From 4d3dd68a1c56674ff666d0622b545992fac31754 Mon Sep 17 00:00:00 2001
+From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+Date: Sun, 31 Jul 2022 22:54:52 +0200
+Subject: [PATCH 733/768] net: dsa: lantiq_gswip: Use dev_err_probe where
+ appropriate
+
+dev_err_probe() can be used to simplify the existing code. Also it means
+we get rid of the following warning which is seen whenever the PMAC
+(Ethernet controller which connects to GSWIP's CPU port) has not been
+probed yet:
+  gswip 1e108000.switch: dsa switch register failed: -517
+
+Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+---
+ drivers/net/dsa/lantiq_gswip.c | 53 ++++++++++++++++------------------
+ 1 file changed, 25 insertions(+), 28 deletions(-)
+
+--- a/drivers/net/dsa/lantiq_gswip.c
++++ b/drivers/net/dsa/lantiq_gswip.c
+@@ -1919,11 +1919,9 @@ static int gswip_gphy_fw_load(struct gsw
+       msleep(200);
+       ret = request_firmware(&fw, gphy_fw->fw_name, dev);
+-      if (ret) {
+-              dev_err(dev, "failed to load firmware: %s, error: %i\n",
+-                      gphy_fw->fw_name, ret);
+-              return ret;
+-      }
++      if (ret)
++              return dev_err_probe(dev, ret, "failed to load firmware: %s\n",
++                                   gphy_fw->fw_name);
+       /* GPHY cores need the firmware code in a persistent and contiguous
+        * memory area with a 16 kB boundary aligned start address.
+@@ -1936,9 +1934,9 @@ static int gswip_gphy_fw_load(struct gsw
+               dev_addr = ALIGN(dma_addr, XRX200_GPHY_FW_ALIGN);
+               memcpy(fw_addr, fw->data, fw->size);
+       } else {
+-              dev_err(dev, "failed to alloc firmware memory\n");
+               release_firmware(fw);
+-              return -ENOMEM;
++              return dev_err_probe(dev, -ENOMEM,
++                                   "failed to alloc firmware memory\n");
+       }
+       release_firmware(fw);
+@@ -1965,8 +1963,8 @@ static int gswip_gphy_fw_probe(struct gs
+       gphy_fw->clk_gate = devm_clk_get(dev, gphyname);
+       if (IS_ERR(gphy_fw->clk_gate)) {
+-              dev_err(dev, "Failed to lookup gate clock\n");
+-              return PTR_ERR(gphy_fw->clk_gate);
++              return dev_err_probe(dev, PTR_ERR(gphy_fw->clk_gate),
++                                   "Failed to lookup gate clock\n");
+       }
+       ret = of_property_read_u32(gphy_fw_np, "reg", &gphy_fw->fw_addr_offset);
+@@ -1986,8 +1984,8 @@ static int gswip_gphy_fw_probe(struct gs
+               gphy_fw->fw_name = priv->gphy_fw_name_cfg->ge_firmware_name;
+               break;
+       default:
+-              dev_err(dev, "Unknown GPHY mode %d\n", gphy_mode);
+-              return -EINVAL;
++              return dev_err_probe(dev, -EINVAL, "Unknown GPHY mode %d\n",
++                                   gphy_mode);
+       }
+       gphy_fw->reset = of_reset_control_array_get_exclusive(gphy_fw_np);
+@@ -2038,8 +2036,9 @@ static int gswip_gphy_fw_list(struct gsw
+                       priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
+                       break;
+               default:
+-                      dev_err(dev, "unknown GSWIP version: 0x%x", version);
+-                      return -ENOENT;
++                      return dev_err_probe(dev, -ENOENT,
++                                           "unknown GSWIP version: 0x%x",
++                                           version);
+               }
+       }
+@@ -2047,10 +2046,9 @@ static int gswip_gphy_fw_list(struct gsw
+       if (match && match->data)
+               priv->gphy_fw_name_cfg = match->data;
+-      if (!priv->gphy_fw_name_cfg) {
+-              dev_err(dev, "GPHY compatible type not supported");
+-              return -ENOENT;
+-      }
++      if (!priv->gphy_fw_name_cfg)
++              return dev_err_probe(dev, -ENOENT,
++                                   "GPHY compatible type not supported");
+       priv->num_gphy_fw = of_get_available_child_count(gphy_fw_list_np);
+       if (!priv->num_gphy_fw)
+@@ -2150,8 +2148,8 @@ static int gswip_probe(struct platform_d
+                       return -EINVAL;
+               break;
+       default:
+-              dev_err(dev, "unknown GSWIP version: 0x%x", version);
+-              return -ENOENT;
++              return dev_err_probe(dev, -ENOENT,
++                                   "unknown GSWIP version: 0x%x", version);
+       }
+       /* bring up the mdio bus */
+@@ -2159,10 +2157,9 @@ static int gswip_probe(struct platform_d
+       if (gphy_fw_np) {
+               err = gswip_gphy_fw_list(priv, gphy_fw_np, version);
+               of_node_put(gphy_fw_np);
+-              if (err) {
+-                      dev_err(dev, "gphy fw probe failed\n");
+-                      return err;
+-              }
++              if (err)
++                      return dev_err_probe(dev, err,
++                                           "gphy fw probe failed\n");
+       }
+       /* bring up the mdio bus */
+@@ -2170,20 +2167,20 @@ static int gswip_probe(struct platform_d
+       if (mdio_np) {
+               err = gswip_mdio(priv, mdio_np);
+               if (err) {
+-                      dev_err(dev, "mdio probe failed\n");
++                      dev_err_probe(dev, err, "mdio probe failed\n");
+                       goto put_mdio_node;
+               }
+       }
+       err = dsa_register_switch(priv->ds);
+       if (err) {
+-              dev_err(dev, "dsa switch register failed: %i\n", err);
++              dev_err_probe(dev, err, "dsa switch registration failed\n");
+               goto mdio_bus;
+       }
+       if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
+-              dev_err(dev, "wrong CPU port defined, HW only supports port: %i",
+-                      priv->hw_info->cpu_port);
+-              err = -EINVAL;
++              err = dev_err_probe(dev, -EINVAL,
++                                  "wrong CPU port defined, HW only supports port: %i",
++                                  priv->hw_info->cpu_port);
+               goto disable_switch;
+       }