mirror of https://gitee.com/openkylin/linux.git
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/slab.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/of_mdio.h>
|
||||
|
||||
static char mv643xx_eth_driver_name[] = "mv643xx_eth";
|
||||
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_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);
|
||||
|
||||
if (IS_ERR(mp->phy)) {
|
||||
if (IS_ERR(mp->phy))
|
||||
err = PTR_ERR(mp->phy);
|
||||
if (err == -ENODEV)
|
||||
err = -EPROBE_DEFER;
|
||||
goto out;
|
||||
}
|
||||
phy_init(mp, pd->speed, pd->duplex);
|
||||
else
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue