net: tsec: Access TBI PHY through the corresponding MII

When an eTSEC is configured to use TBI, configuration of the
TBI is done through the MIIM registers for that eTSEC.
For example, if a TBI interface is required on eTSEC2, then
the MIIM registers starting at offset 0x2_5520 are used to
configure it.

Fixes: 9a1d6af55e ("net: tsec: Add driver model ethernet support")
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
Hou Zhiqiang 2020-05-03 22:48:43 +08:00 committed by Priyanka Jain
parent bf67eb325b
commit a0f47e012f

View File

@ -791,6 +791,7 @@ int tsec_probe(struct udevice *dev)
{
struct eth_pdata *pdata = dev_get_platdata(dev);
struct tsec_private *priv = dev_get_priv(dev);
struct tsec_mii_mng __iomem *ext_phyregs_mii;
struct ofnode_phandle_args phandle_args;
u32 tbiaddr = CONFIG_SYS_TBIPA_VALUE;
struct fsl_pq_mdio_info mdio_info;
@ -824,14 +825,30 @@ int tsec_probe(struct udevice *dev)
return -ENOENT;
}
priv->phyregs_sgmii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0,
MAP_NOCACHE);
ext_phyregs_mii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET, 0,
MAP_NOCACHE);
ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0,
&phandle_args);
if (ret == 0)
if (ret == 0) {
ofnode_read_u32(phandle_args.node, "reg", &tbiaddr);
parent = ofnode_get_parent(phandle_args.node);
if (!ofnode_valid(parent)) {
printf("No parent node for TBI PHY?\n");
return -ENOENT;
}
reg = ofnode_get_addr_index(parent, 0);
if (reg == FDT_ADDR_T_NONE) {
printf("No 'reg' property of MII for TBI PHY\n");
return -ENOENT;
}
priv->phyregs_sgmii = map_physmem(reg + TSEC_MDIO_REGS_OFFSET,
0, MAP_NOCACHE);
}
priv->tbiaddr = tbiaddr;
phy_mode = dev_read_prop(dev, "phy-connection-type", NULL);
@ -848,7 +865,7 @@ int tsec_probe(struct udevice *dev)
if (priv->interface == PHY_INTERFACE_MODE_SGMII)
priv->flags |= TSEC_SGMII;
mdio_info.regs = priv->phyregs_sgmii;
mdio_info.regs = ext_phyregs_mii;
mdio_info.name = (char *)dev->name;
ret = fsl_pq_mdio_init(NULL, &mdio_info);
if (ret)