net/ftgmac100: Add NC-SI mode support
Update the ftgmac100 driver to support NC-SI instead of an mdio phy where available. This is a common setup for Aspeed AST2x00 platforms. NC-SI mode is determined from the device-tree if either phy-mode sets it or the use-ncsi property exists. If set then normal mdio setup is skipped in favour of the NC-SI phy. Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com> Signed-off-by: Joel Stanley <joel@jms.id.au> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
This commit is contained in:
parent
4b290d4a75
commit
3b400e84ba
@ -188,7 +188,7 @@ static int ftgmac100_phy_adjust_link(struct ftgmac100_data *priv)
|
||||
struct phy_device *phydev = priv->phydev;
|
||||
u32 maccr;
|
||||
|
||||
if (!phydev->link) {
|
||||
if (!phydev->link && priv->phy_mode != PHY_INTERFACE_MODE_NCSI) {
|
||||
dev_err(phydev->dev, "No link\n");
|
||||
return -EREMOTEIO;
|
||||
}
|
||||
@ -228,7 +228,8 @@ static int ftgmac100_phy_init(struct udevice *dev)
|
||||
if (!phydev)
|
||||
return -ENODEV;
|
||||
|
||||
phydev->supported &= PHY_GBIT_FEATURES;
|
||||
if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI)
|
||||
phydev->supported &= PHY_GBIT_FEATURES;
|
||||
if (priv->max_speed) {
|
||||
ret = phy_set_supported(phydev, priv->max_speed);
|
||||
if (ret)
|
||||
@ -308,7 +309,8 @@ static void ftgmac100_stop(struct udevice *dev)
|
||||
|
||||
writel(0, &ftgmac100->maccr);
|
||||
|
||||
phy_shutdown(priv->phydev);
|
||||
if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI)
|
||||
phy_shutdown(priv->phydev);
|
||||
}
|
||||
|
||||
static int ftgmac100_start(struct udevice *dev)
|
||||
@ -580,6 +582,9 @@ static int ftgmac100_probe(struct udevice *dev)
|
||||
priv->max_speed = pdata->max_speed;
|
||||
priv->phy_addr = 0;
|
||||
|
||||
if (dev_read_bool(dev, "use-ncsi"))
|
||||
priv->phy_mode = PHY_INTERFACE_MODE_NCSI;
|
||||
|
||||
#ifdef CONFIG_PHY_ADDR
|
||||
priv->phy_addr = CONFIG_PHY_ADDR;
|
||||
#endif
|
||||
@ -592,7 +597,8 @@ static int ftgmac100_probe(struct udevice *dev)
|
||||
* If DM MDIO is enabled, the MDIO bus will be initialized later in
|
||||
* dm_eth_phy_connect
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_DM_MDIO)) {
|
||||
if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI &&
|
||||
!IS_ENABLED(CONFIG_DM_MDIO)) {
|
||||
ret = ftgmac100_mdio_init(dev);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to initialize mdiobus: %d\n", ret);
|
||||
|
Loading…
Reference in New Issue
Block a user