aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>2022-03-29 16:05:57 +0200
committerMichal Simek <michal.simek@xilinx.com>2022-04-05 15:10:54 +0200
commit9b529a972d15af7dabfa2fffa69f0e2ed69b6220 (patch)
tree111536364dac4dae489f072b3512f255b476ee6b /drivers/net/phy
parent6f735e41785d5a8373b3cbad8f582966c9d1001f (diff)
downloadu-boot-9b529a972d15af7dabfa2fffa69f0e2ed69b6220.zip
u-boot-9b529a972d15af7dabfa2fffa69f0e2ed69b6220.tar.gz
u-boot-9b529a972d15af7dabfa2fffa69f0e2ed69b6220.tar.bz2
net: phy: Fix rgmii-id phy reset timeout issue
While creating a phy device using phy_device_create(), we need to provide a valid phyaddr instead of 0 causing phy address being registered as 0 with mdio bus and shows mdio phy list as below ZynqMP> mdio list eth0: 0 - TI DP83867 <--> ethernet@ff0b0000 eth1: 0 - TI DP83867 <--> ethernet@ff0c0000 Also PHY soft reset is being requested on 0 instead of valid address causing "PHY reset timed out" error. So add phyaddr argument to phy_connect_phy_id() and to its prototype to create phy device with valid phyaddress. Fixes: a744a284e354 ("net: phy: Add support for ethernet-phy-id with gpio reset") Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Link: https://lore.kernel.org/r/fe35fddb9faa5af577ffdfabaec6879c935a30f8.1648562755.git.michal.simek@xilinx.com
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/ethernet_id.c4
-rw-r--r--drivers/net/phy/phy.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/phy/ethernet_id.c b/drivers/net/phy/ethernet_id.c
index 5617ac3..44abc5b 100644
--- a/drivers/net/phy/ethernet_id.c
+++ b/drivers/net/phy/ethernet_id.c
@@ -12,7 +12,7 @@
#include <asm/gpio.h>
struct phy_device *phy_connect_phy_id(struct mii_dev *bus, struct udevice *dev,
- phy_interface_t interface)
+ int phyaddr, phy_interface_t interface)
{
struct phy_device *phydev;
struct ofnode_phandle_args phandle_args;
@@ -61,7 +61,7 @@ struct phy_device *phy_connect_phy_id(struct mii_dev *bus, struct udevice *dev,
}
id = vendor << 16 | device;
- phydev = phy_device_create(bus, 0, id, false, interface);
+ phydev = phy_device_create(bus, phyaddr, id, false, interface);
if (phydev)
phydev->node = node;
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 92fff5b..d473186 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1049,7 +1049,7 @@ struct phy_device *phy_connect(struct mii_dev *bus, int addr,
#ifdef CONFIG_PHY_ETHERNET_ID
if (!phydev)
- phydev = phy_connect_phy_id(bus, dev, interface);
+ phydev = phy_connect_phy_id(bus, dev, addr, interface);
#endif
#ifdef CONFIG_PHY_XILINX_GMII2RGMII