# Re: \[PATCH net-next v9 03/15\] net: phy: Introduce phy related fwnode functions

- From: Andy Shevchenko \<hidden\>
- Date: 2021-06-11 11:27:46 
- List: linux-arm-kernel
- Page: https://ratatoskr.run/linux-arm-kernel/2021/06/1411195
- Thread: https://ratatoskr.run/netdev/2021/06/1411144/t.md

```text
On Fri, Jun 11, 2021 at 1:54 PM Ioana Ciornei [ref] wrote:
>
> From: Calvin Johnson <redacted>
>
> Define fwnode_phy_find_device() to iterate an mdiobus and find the
> phy device of the provided phy fwnode. Additionally define
> device_phy_find_device() to find phy device of provided device.
>
> Define fwnode_get_phy_node() to get phy_node using named reference.

using a named

...

> +struct fwnode_handle *fwnode_get_phy_node(struct fwnode_handle *fwnode)
> +{
> +       struct fwnode_handle *phy_node;
> +
> +       /* Only phy-handle is used for ACPI */
> +       phy_node = fwnode_find_reference(fwnode, "phy-handle", 0);
> +       if (is_acpi_node(fwnode) || !IS_ERR(phy_node))
> +               return phy_node;
> +       phy_node = fwnode_find_reference(fwnode, "phy", 0);
> +       if (IS_ERR(phy_node))
> +               phy_node = fwnode_find_reference(fwnode, "phy-device", 0);
> +       return phy_node;

Looking into the patterns in this code I would perhaps refactor it the
following way:

     /* First try "phy-handle" as most common in use */
     phy_node = fwnode_find_reference(fwnode, "phy-handle", 0);
     /* Only phy-handle is used for ACPI */
     if (is_acpi_node(fwnode))
              return phy_node;
     if (!IS_ERR(phy_node))
              return phy_node;
     /* Try "phy" reference */
     phy_node = fwnode_find_reference(fwnode, "phy", 0);
     if (!IS_ERR(phy_node))
              return phy_node;
     /* At last try "phy-device" reference */
     return fwnode_find_reference(fwnode, "phy-device", 0);

> +}


-- 
With Best Regards,
Andy Shevchenko

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
```
