static int rtl83xx_mdio_probe(struct rtl838x_switch_priv *priv)
{
- struct device_node *dn, *phy_node, *pcs_node, *led_node, *np, *mii_np;
+ struct device_node *dn, *phy_node, *pcs_node, *led_node;
struct device *dev = priv->dev;
struct mii_bus *bus;
int ret;
u32 pn;
- np = of_find_compatible_node(NULL, NULL, "realtek,otto-mdio");
- if (!np) {
- dev_err(priv->dev, "mdio controller node not found");
+ dn = of_find_compatible_node(NULL, NULL, "realtek,otto-mdio");
+ if (!dn)
return -ENODEV;
- }
- mii_np = of_get_child_by_name(np, "mdio-bus");
- if (!mii_np) {
- dev_err(priv->dev, "mdio-bus subnode not found");
- return -ENODEV;
- }
+ if (!of_device_is_available(dn))
+ ret = -ENODEV;
- priv->parent_bus = of_mdio_find_bus(mii_np);
- if (!priv->parent_bus) {
- dev_dbg(priv->dev, "Deferring probe of mdio bus\n");
+ priv->parent_bus = of_mdio_find_bus(dn);
+ if (!priv->parent_bus)
return -EPROBE_DEFER;
- }
- if (!of_device_is_available(mii_np))
- ret = -ENODEV;
bus = devm_mdiobus_alloc(priv->ds->dev);
if (!bus)
priv->ds->user_mii_bus->priv = priv;
ret = mdiobus_register(priv->ds->user_mii_bus);
- if (ret && mii_np) {
- of_node_put(dn);
+ if (ret)
return ret;
- }
dn = of_find_compatible_node(NULL, NULL, "realtek,rtl83xx-switch");
if (!dn) {
static int rtmdio_probe(struct platform_device *pdev)
{
- struct device_node *dn, *mii_np;
+ struct device_node *dn;
struct device *dev = &pdev->dev;
struct rtmdio_bus_priv *priv;
struct mii_bus *bus;
u32 pn;
- mii_np = of_get_child_by_name(dev->of_node, "mdio-bus");
- if (!mii_np)
- return -ENODEV;
-
- if (!of_device_is_available(mii_np)) {
- of_node_put(mii_np);
- return -ENODEV;
- }
-
bus = devm_mdiobus_alloc_size(dev, sizeof(*priv));
if (!bus)
return -ENOMEM;
snprintf(bus->id, MII_BUS_ID_SIZE, "%s-mii", dev_name(dev));
- return devm_of_mdiobus_register(dev, bus, mii_np);
+ return devm_of_mdiobus_register(dev, bus, dev->of_node);
}
static const struct rtmdio_config rtmdio_838x_cfg = {