net: mv643xx_eth: use of_phy_connect if phy_node present
This connects to a phy node passed to the port device instead of probing the phy by phy_addr. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5f292354e7
commit
cc9d459894
@ -60,6 +60,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
|
#include <linux/of_mdio.h>
|
||||||
|
|
||||||
static char mv643xx_eth_driver_name[] = "mv643xx_eth";
|
static char mv643xx_eth_driver_name[] = "mv643xx_eth";
|
||||||
static char mv643xx_eth_driver_version[] = "1.4";
|
static char mv643xx_eth_driver_version[] = "1.4";
|
||||||
@ -2715,17 +2716,27 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
|
|||||||
netif_set_real_num_tx_queues(dev, mp->txq_count);
|
netif_set_real_num_tx_queues(dev, mp->txq_count);
|
||||||
netif_set_real_num_rx_queues(dev, mp->rxq_count);
|
netif_set_real_num_rx_queues(dev, mp->rxq_count);
|
||||||
|
|
||||||
if (pd->phy_addr != MV643XX_ETH_PHY_NONE) {
|
err = 0;
|
||||||
|
if (pd->phy_node) {
|
||||||
|
mp->phy = of_phy_connect(mp->dev, pd->phy_node,
|
||||||
|
mv643xx_eth_adjust_link, 0,
|
||||||
|
PHY_INTERFACE_MODE_GMII);
|
||||||
|
if (!mp->phy)
|
||||||
|
err = -ENODEV;
|
||||||
|
} else if (pd->phy_addr != MV643XX_ETH_PHY_NONE) {
|
||||||
mp->phy = phy_scan(mp, pd->phy_addr);
|
mp->phy = phy_scan(mp, pd->phy_addr);
|
||||||
|
|
||||||
if (IS_ERR(mp->phy)) {
|
if (IS_ERR(mp->phy))
|
||||||
err = PTR_ERR(mp->phy);
|
err = PTR_ERR(mp->phy);
|
||||||
if (err == -ENODEV)
|
else
|
||||||
err = -EPROBE_DEFER;
|
phy_init(mp, pd->speed, pd->duplex);
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
phy_init(mp, pd->speed, pd->duplex);
|
|
||||||
}
|
}
|
||||||
|
if (err == -ENODEV) {
|
||||||
|
err = -EPROBE_DEFER;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
if (err)
|
||||||
|
goto out;
|
||||||
|
|
||||||
SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops);
|
SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user