Skip to content

Commit

Permalink
net: dsa: lantiq_gswip: Use dev_err_probe where appropriate
Browse files Browse the repository at this point in the history
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>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Link: https://lore.kernel.org/r/20240611135434.3180973-5-ms@dev.tdt.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Martin Blumenstingl authored and Jakub Kicinski committed Jun 14, 2024
1 parent dd6d364 commit 1763b15
Showing 1 changed file with 25 additions and 28 deletions.
53 changes: 25 additions & 28 deletions drivers/net/dsa/lantiq_gswip.c
Original file line number Diff line number Diff line change
Expand Up @@ -1931,11 +1931,9 @@ static int gswip_gphy_fw_load(struct gswip_priv *priv, struct gswip_gphy_fw *gph
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.
Expand All @@ -1948,9 +1946,9 @@ static int gswip_gphy_fw_load(struct gswip_priv *priv, struct gswip_gphy_fw *gph
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);
Expand All @@ -1977,8 +1975,8 @@ static int gswip_gphy_fw_probe(struct gswip_priv *priv,

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);
Expand All @@ -1998,8 +1996,8 @@ static int gswip_gphy_fw_probe(struct gswip_priv *priv,
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);
Expand Down Expand Up @@ -2050,19 +2048,19 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
priv->gphy_fw_name_cfg = &xrx200a2x_gphy_data;
break;
default:
dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
return -ENOENT;
return dev_err_probe(dev, -ENOENT,
"unknown GSWIP version: 0x%x\n",
version);
}
}

match = of_match_node(xway_gphy_match, gphy_fw_list_np);
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\n");
return -ENOENT;
}
if (!priv->gphy_fw_name_cfg)
return dev_err_probe(dev, -ENOENT,
"GPHY compatible type not supported\n");

priv->num_gphy_fw = of_get_available_child_count(gphy_fw_list_np);
if (!priv->num_gphy_fw)
Expand Down Expand Up @@ -2163,37 +2161,36 @@ static int gswip_probe(struct platform_device *pdev)
return -EINVAL;
break;
default:
dev_err(dev, "unknown GSWIP version: 0x%x\n", version);
return -ENOENT;
return dev_err_probe(dev, -ENOENT,
"unknown GSWIP version: 0x%x\n", version);
}

/* bring up the mdio bus */
gphy_fw_np = of_get_compatible_child(dev->of_node, "lantiq,gphy-fw");
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 */
err = gswip_mdio(priv);
if (err) {
dev_err(dev, "mdio probe failed\n");
dev_err_probe(dev, err, "mdio probe failed\n");
goto gphy_fw_remove;
}

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 gphy_fw_remove;
}
if (!dsa_is_cpu_port(priv->ds, priv->hw_info->cpu_port)) {
dev_err(dev, "wrong CPU port defined, HW only supports port: %i\n",
priv->hw_info->cpu_port);
err = -EINVAL;
err = dev_err_probe(dev, -EINVAL,
"wrong CPU port defined, HW only supports port: %i\n",
priv->hw_info->cpu_port);
goto disable_switch;
}

Expand Down

0 comments on commit 1763b15

Please sign in to comment.