mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
Enable FEC driver to retrieve PHY address from device tree
Currently if we have more than one phy on the MDIO bus, we do not have a good mechanism for determining which should be used at runtime. Enable the FEC driver to determine the address for the PHY from the device tree. Signed-off-by: Martyn Welch <martyn.welch@collabora.com> Reviewed-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
parent
b2ca8907d9
commit
774ec60b74
1 changed files with 21 additions and 0 deletions
|
@ -1264,11 +1264,32 @@ static const struct eth_ops fecmxc_ops = {
|
|||
.read_rom_hwaddr = fecmxc_read_rom_hwaddr,
|
||||
};
|
||||
|
||||
static int device_get_phy_addr(struct udevice *dev)
|
||||
{
|
||||
struct ofnode_phandle_args phandle_args;
|
||||
int reg;
|
||||
|
||||
if (dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0,
|
||||
&phandle_args)) {
|
||||
debug("Failed to find phy-handle");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
reg = ofnode_read_u32_default(phandle_args.node, "reg", 0);
|
||||
|
||||
return reg;
|
||||
}
|
||||
|
||||
static int fec_phy_init(struct fec_priv *priv, struct udevice *dev)
|
||||
{
|
||||
struct phy_device *phydev;
|
||||
int addr;
|
||||
int mask = 0xffffffff;
|
||||
|
||||
addr = device_get_phy_addr(dev);
|
||||
if (addr >= 0)
|
||||
mask = 1 << addr;
|
||||
|
||||
#ifdef CONFIG_FEC_MXC_PHYADDR
|
||||
mask = 1 << CONFIG_FEC_MXC_PHYADDR;
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue