mirror of https://gitee.com/openkylin/linux.git
drivers: net: cpsw: increment reference count on fixed-link PHY node
When a fixed-link sub-node exists in a slave node, the slave node
is also the PHY node. Since this is a separate use of the slave node,
of_node_get() should be used to increment the reference count.
Fixes: 1f71e8c96f
("drivers: net: cpsw: Add support for fixed-link PHY")
Signed-off-by: David Rivshin <drivshin@allworx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f1eea5c15a
commit
dfc0a6d39a
|
@ -2036,16 +2036,21 @@ static int cpsw_probe_dt(struct cpsw_priv *priv,
|
||||||
priv->phy_node = of_parse_phandle(slave_node, "phy-handle", 0);
|
priv->phy_node = of_parse_phandle(slave_node, "phy-handle", 0);
|
||||||
parp = of_get_property(slave_node, "phy_id", &lenp);
|
parp = of_get_property(slave_node, "phy_id", &lenp);
|
||||||
if (of_phy_is_fixed_link(slave_node)) {
|
if (of_phy_is_fixed_link(slave_node)) {
|
||||||
struct phy_device *pd;
|
struct device_node *phy_node;
|
||||||
|
struct phy_device *phy_dev;
|
||||||
|
|
||||||
|
/* In the case of a fixed PHY, the DT node associated
|
||||||
|
* to the PHY is the Ethernet MAC DT node.
|
||||||
|
*/
|
||||||
ret = of_phy_register_fixed_link(slave_node);
|
ret = of_phy_register_fixed_link(slave_node);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
pd = of_phy_find_device(slave_node);
|
phy_node = of_node_get(slave_node);
|
||||||
if (!pd)
|
phy_dev = of_phy_find_device(phy_node);
|
||||||
|
if (!phy_dev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
|
snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
|
||||||
PHY_ID_FMT, pd->bus->id, pd->addr);
|
PHY_ID_FMT, phy_dev->bus->id, phy_dev->addr);
|
||||||
} else if (parp) {
|
} else if (parp) {
|
||||||
u32 phyid;
|
u32 phyid;
|
||||||
struct device_node *mdio_node;
|
struct device_node *mdio_node;
|
||||||
|
|
Loading…
Reference in New Issue