Thread (29 messages) 29 messages, 6 authors, 2021-06-15

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
Also in: linux-acpi, linux-arm-kernel, lkml

On Fri, Jun 11, 2021 at 1:54 PM Ioana Ciornei [off-list 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help