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