Re: [PATCH v2 net-next 03/15] net: mdio: add generic driver for NXP SJA1110 100BASE-TX embedded PHYs
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2026-01-22 14:49:06
Also in:
linux-devicetree, lkml
On Thu, Jan 22, 2026 at 03:31:23PM +0200, Vladimir Oltean wrote:
On Thu, Jan 22, 2026 at 02:20:22PM +0200, Andy Shevchenko wrote:quoted
On Thu, Jan 22, 2026 at 12:56:42PM +0200, Vladimir Oltean wrote:
...
quoted
quoted
+static int mdio_regmap_simple_probe(struct platform_device *pdev) +{ + const struct mdio_regmap_simple_data *data; + struct mdio_regmap_config config = {}; + struct device *dev = &pdev->dev; + struct regmap *regmap; + struct mii_bus *bus; + + if (!dev->of_node || !dev->parent)dev->of_node check is not needed, see below.Oh.... this is a bug. dev->of_node should have been propagated to devm_mdio_regmap_register() -> devm_mdiobus_register(), turning it into devm_of_mdiobus_register(). It shows that my SJA1110 testing platform (Bluebox 3) doesn't have the CBTX PHY routed to pinout, since I didn't catch this... I'll fix this for v3.
Same Q, why not using fwnode APIs to begin with?
quoted
quoted
+ return -ENODEV; + + regmap = dev_get_regmap(dev->parent, NULL); + if (!regmap) + return -ENODEV; + + data = device_get_match_data(dev); + + config.regmap = regmap; + config.parent = dev; + config.name = dev_name(dev); + /* The resource is optional, provided for finding the registers + * within a device-wide non-MMIO regmap + */ + config.resource = platform_get_resource(pdev, IORESOURCE_REG, 0);quoted
+ if (data) {We may always require data to be present. As you use a default one anyway.quoted
+ config.valid_addr = data->valid_addr; + config.autoscan = data->autoscan; + }And if it is not provided we will have a crash which is fine. It will just point that the code was not ever been run on real HW.Hmm. This patch is super old, so I'm revisiting it with foreign eyes, same as you. I think the case with .valid_addr = 0 and .autoscan = false will constitute the vast majority of instantiations of this driver. I would like to avoid the proliferation of the same basic config with 100 different names (nxp_sja1110_base_tx, etc).
But you name it as default_blablalbla. That will be just assigned to each currently "NULL" driver_data. We have examples in the kernel that do this. IIRC 8250_dw cases, stmmac driver (PCI glue part of it?), et cetera...
So for v3 I'm planning to: - rename nxp_sja1110_base_tx to mdio_regmap_simple_default_data - delete the "if (data)" conditional and directly assign from device_get_match_data() to the config structure Thanks for taking a look.
You're welcome!
quoted
quoted
+ return PTR_ERR_OR_ZERO(devm_mdio_regmap_register(dev, &config)); +}
-- With Best Regards, Andy Shevchenko