Skip to content

Commit

Permalink
Merge branch 'mdio-nodes'
Browse files Browse the repository at this point in the history
Ioana Ciornei says:

====================
net: mdio: setup both fwnode and of_node

The first patch in this series fixes a bug introduced by mistake in the
previous ACPI MDIO patch set.

The next two patches are adding a new helper which takes a device and a
fwnode_handle and populates both the of_node and fwnode so that we make
sure that a bug like this does not happen anymore.
Also, the new helper is used in the MDIO area.
====================

Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
davem330 committed Jun 17, 2021
2 parents b67fda9 + 7e33d84 commit a31fcbc
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
7 changes: 7 additions & 0 deletions drivers/base/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -4723,6 +4723,13 @@ void device_set_of_node_from_dev(struct device *dev, const struct device *dev2)
}
EXPORT_SYMBOL_GPL(device_set_of_node_from_dev);

void device_set_node(struct device *dev, struct fwnode_handle *fwnode)
{
dev->fwnode = fwnode;
dev->of_node = to_of_node(fwnode);
}
EXPORT_SYMBOL_GPL(device_set_node);

int device_match_name(struct device *dev, const void *name)
{
return sysfs_streq(dev_name(dev), name);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/mdio/fwnode_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
* can be looked up later
*/
fwnode_handle_get(child);
phy->mdio.dev.fwnode = child;
device_set_node(&phy->mdio.dev, child);

/* All data is now stored in the phy struct;
* register it
Expand Down
9 changes: 4 additions & 5 deletions drivers/net/mdio/of_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ static int of_mdiobus_register_phy(struct mii_bus *mdio,
static int of_mdiobus_register_device(struct mii_bus *mdio,
struct device_node *child, u32 addr)
{
struct fwnode_handle *fwnode = of_fwnode_handle(child);
struct mdio_device *mdiodev;
int rc;

Expand All @@ -61,9 +62,8 @@ static int of_mdiobus_register_device(struct mii_bus *mdio,
/* Associate the OF node with the device structure so it
* can be looked up later.
*/
of_node_get(child);
mdiodev->dev.of_node = child;
mdiodev->dev.fwnode = of_fwnode_handle(child);
fwnode_handle_get(fwnode);
device_set_node(&mdiodev->dev, fwnode);

/* All data is now stored in the mdiodev struct; register it. */
rc = mdio_device_register(mdiodev);
Expand Down Expand Up @@ -162,8 +162,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
* the device tree are populated after the bus has been registered */
mdio->phy_mask = ~0;

mdio->dev.of_node = np;
mdio->dev.fwnode = of_fwnode_handle(np);
device_set_node(&mdio->dev, of_fwnode_handle(np));

/* Get bus level PHY reset GPIO details */
mdio->reset_delay_us = DEFAULT_GPIO_RESET_DELAY;
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/phy/mdio_bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,8 +459,7 @@ static void of_mdiobus_link_mdiodev(struct mii_bus *bus,
continue;

if (addr == mdiodev->addr) {
dev->of_node = child;
dev->fwnode = of_fwnode_handle(child);
device_set_node(dev, of_fwnode_handle(child));
return;
}
}
Expand Down
1 change: 1 addition & 0 deletions include/linux/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@ int device_online(struct device *dev);
void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
void device_set_of_node_from_dev(struct device *dev, const struct device *dev2);
void device_set_node(struct device *dev, struct fwnode_handle *fwnode);

static inline int dev_num_vf(struct device *dev)
{
Expand Down

0 comments on commit a31fcbc

Please sign in to comment.