mirror of
https://xff.cz/git/u-boot/
synced 2025-09-04 10:12:14 +02:00
drivers: net: cpsw: Add reading of DT phy-handle node
Add the ability to read the phy-handle node of the cpsw slave. Upon reading this handle the phy-id can be stored based on the reg node in the DT. The phy-handle also needs to be stored and passed to the phy to access any phy data that is available. Signed-off-by: Dan Murphy <dmurphy@ti.com> Tested-by: Mugunthan V N <mugunthanvnm@ti.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
committed by
Joe Hershberger
parent
641b936fa5
commit
cb3862277b
@@ -966,6 +966,11 @@ static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
|
|||||||
phydev->supported &= supported;
|
phydev->supported &= supported;
|
||||||
phydev->advertising = phydev->supported;
|
phydev->advertising = phydev->supported;
|
||||||
|
|
||||||
|
#ifdef CONFIG_DM_ETH
|
||||||
|
if (slave->data->phy_of_handle)
|
||||||
|
phydev->dev->of_offset = slave->data->phy_of_handle;
|
||||||
|
#endif
|
||||||
|
|
||||||
priv->phydev = phydev;
|
priv->phydev = phydev;
|
||||||
phy_config(phydev);
|
phy_config(phydev);
|
||||||
|
|
||||||
@@ -1226,8 +1231,22 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
|
|||||||
if (phy_mode)
|
if (phy_mode)
|
||||||
priv->data.slave_data[slave_index].phy_if =
|
priv->data.slave_data[slave_index].phy_if =
|
||||||
phy_get_interface_by_name(phy_mode);
|
phy_get_interface_by_name(phy_mode);
|
||||||
fdtdec_get_int_array(fdt, subnode, "phy_id", phy_id, 2);
|
|
||||||
priv->data.slave_data[slave_index].phy_addr = phy_id[1];
|
priv->data.slave_data[slave_index].phy_of_handle =
|
||||||
|
fdtdec_lookup_phandle(fdt, subnode,
|
||||||
|
"phy-handle");
|
||||||
|
|
||||||
|
if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
|
||||||
|
priv->data.slave_data[slave_index].phy_addr =
|
||||||
|
fdtdec_get_int(gd->fdt_blob,
|
||||||
|
priv->data.slave_data[slave_index].phy_of_handle,
|
||||||
|
"reg", -1);
|
||||||
|
} else {
|
||||||
|
fdtdec_get_int_array(fdt, subnode, "phy_id",
|
||||||
|
phy_id, 2);
|
||||||
|
priv->data.slave_data[slave_index].phy_addr =
|
||||||
|
phy_id[1];
|
||||||
|
}
|
||||||
slave_index++;
|
slave_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@ struct cpsw_slave_data {
|
|||||||
u32 sliver_reg_ofs;
|
u32 sliver_reg_ofs;
|
||||||
int phy_addr;
|
int phy_addr;
|
||||||
int phy_if;
|
int phy_if;
|
||||||
|
int phy_of_handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
Reference in New Issue
Block a user