Hi Calvin

>       priv->has_a011043 = device_property_read_bool(&pdev->dev,
>                                                     "fsl,erratum-a011043");
> -
> -     ret = of_mdiobus_register(bus, np);
> -     if (ret) {
> -             dev_err(&pdev->dev, "cannot register MDIO bus\n");
> +     if (is_of_node(pdev->dev.fwnode)) {
> +             ret = of_mdiobus_register(bus, np);
> +             if (ret) {
> +                     dev_err(&pdev->dev, "cannot register MDIO bus\n");
> +                     goto err_registration;
> +             }
> +     } else if (is_acpi_node(pdev->dev.fwnode)) {
> +             priv->is_little_endian = true;
> +             /* Mask out all PHYs from auto probing. */
> +             bus->phy_mask = ~0;
> +             ret = mdiobus_register(bus);
> +             if (ret) {
> +                     dev_err(&pdev->dev, "mdiobus register err(%d)\n", ret);
> +                     return ret;
> +             }
> +
> +             fwnode = pdev->dev.fwnode;

> +     /* Loop over the child nodes and register a phy_device for each PHY */
> +             fwnode_for_each_child_node(fwnode, child) {
> +                     status = 
> acpi_evaluate_integer(ACPI_HANDLE_FWNODE(child),
> +                                                    "_ADR", NULL, &addr);
> +                     if (ACPI_FAILURE(status)) {
> +                             pr_debug("_ADR returned %d\n", status);
> +                             continue;
> +                     }
> +
> +                     if (addr < 0 || addr >= PHY_MAX_ADDR)
> +                             continue;
> +
> +                     ret = fwnode_mdiobus_register_phy(bus, child, addr);
> +                     if (ret == -ENODEV)
> +                             dev_err(&bus->dev,
> +                                     "MDIO device at address %lld is 
> missing.\n",
> +                                     addr);
> +             }

Hi Calvin

This looping over the properties should be in the core, in the same
way of_mdiobus_register() loops over the OF properties in the core.
We don't want MDIO drivers doing this in their own way, with their own
bugs.

    Andrew

Reply via email to