Re: [PATCH net-next v5 5/7] net: tn40xx: create swnode for mdio and aqr105 phy and add to mdiobus

From: Hans-Frieder Vogt
Date: Mon Feb 24 2025 - 13:27:52 EST


Hi Kannoth,

On 24.02.2025 05.08, Ratheesh Kannoth wrote:
On 2025-02-22 at 15:19:32, Hans-Frieder Vogt via B4 Relay (devnull+hfdevel.gmx.net@xxxxxxxxxx) wrote:
From: Hans-Frieder Vogt <hfdevel@xxxxxxx>
int tn40_mdiobus_init(struct tn40_priv *priv)
{
struct pci_dev *pdev = priv->pdev;
@@ -129,14 +181,36 @@ int tn40_mdiobus_init(struct tn40_priv *priv)

bus->read_c45 = tn40_mdio_read_c45;
bus->write_c45 = tn40_mdio_write_c45;
+ priv->mdio = bus;
+
+ /* provide swnodes for AQR105-based cards only */
+ if (pdev->device == 0x4025) {
+ ret = tn40_swnodes_register(priv);
+ if (ret) {
+ pr_err("swnodes failed\n");
+ return ret;
+ }
+
+ ret = device_add_software_node(&bus->dev,
+ priv->nodes.group[SWNODE_MDIO]);
+ if (ret) {
+ dev_err(&pdev->dev,
+ "device_add_software_node failed: %d\n", ret);
No need to return on this error ?
Good catch. Yes, indeed, all TN4010-based cards that I know of need to
load the firmware from
the filesystem. And this will only work if the software node is
available to provide a file
name.
I'll add a
return ret;
in the next version.
+ }
+ }

ret = devm_mdiobus_register(&pdev->dev, bus);
if (ret) {
dev_err(&pdev->dev, "failed to register mdiobus %d %u %u\n",
ret, bus->state, MDIOBUS_UNREGISTERED);
- return ret;
+ goto err_swnodes_cleanup;
}
tn40_mdio_set_speed(priv, TN40_MDIO_SPEED_6MHZ);
- priv->mdio = bus;
return 0;
+
+err_swnodes_cleanup:
No need to call device_remove_software_node() ?
It is called from tn40_swnodes_cleanup.
+ tn40_swnodes_cleanup(priv);
+ return ret;
}
+
+MODULE_FIRMWARE(AQR105_FIRMWARE);

--
2.47.2


Thanks,
Hans-Frieder