r6040: move down second PHY detection to r6040_init_one
Instead of fully initializing an unusable second r6040 device, perform the PHY detection earlier and bail out in r6040_init_one when we could not read the PHY identifier. Signed-off-by: Mark Kelly <mark@bifferos.com> Signed-off-by: Florian Fainelli <florian@openwrt.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d516478ff6
commit
e03f614af7
1 changed files with 7 additions and 8 deletions
|
@ -750,14 +750,6 @@ static int r6040_up(struct net_device *dev)
|
|||
struct r6040_private *lp = netdev_priv(dev);
|
||||
void __iomem *ioaddr = lp->base;
|
||||
int ret;
|
||||
u16 val;
|
||||
|
||||
/* Check presence of a second PHY */
|
||||
val = r6040_phy_read(ioaddr, lp->phy_addr, 2);
|
||||
if (val == 0xFFFF) {
|
||||
printk(KERN_ERR DRV_NAME " no second PHY attached\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
/* Initialise and alloc RX/TX buffers */
|
||||
r6040_init_txbufs(dev);
|
||||
|
@ -1194,6 +1186,13 @@ static int __devinit r6040_init_one(struct pci_dev *pdev,
|
|||
lp->mii_if.phy_id_mask = 0x1f;
|
||||
lp->mii_if.reg_num_mask = 0x1f;
|
||||
|
||||
/* Check the vendor ID on the PHY, if 0xffff assume none attached */
|
||||
if (r6040_phy_read(ioaddr, lp->phy_addr, 2) == 0xffff) {
|
||||
printk(KERN_ERR DRV_NAME ": Failed to detect an attached PHY\n");
|
||||
err = -ENODEV;
|
||||
goto err_out_unmap;
|
||||
}
|
||||
|
||||
/* Register net device. After this dev->name assign */
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
|
|
Loading…
Add table
Reference in a new issue