mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
783c3aace2
This backports some patches for the gswip switch driver. I copied them from this repository: https://github.com/xdarklight/linux/commits/lantiq-gswip-integration-20221022 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> [drop some patches which may break functionality at the moment] Signed-off-by: Martin Schiller <ms@dev.tdt.de>
146 lines
4.6 KiB
Diff
146 lines
4.6 KiB
Diff
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
|
|
@@ -1939,11 +1939,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.
|
|
@@ -1956,9 +1954,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);
|
|
@@ -1985,8 +1983,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);
|
|
@@ -2006,8 +2004,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);
|
|
@@ -2060,8 +2058,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);
|
|
}
|
|
}
|
|
|
|
@@ -2069,10 +2068,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)
|
|
@@ -2171,8 +2169,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 */
|
|
@@ -2180,10 +2178,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 */
|
|
@@ -2191,20 +2188,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;
|
|
}
|
|
|