r6040: move down second PHY detection to r6040_init_one
Subsystems (2)
PATCH 2/3 r6040: move down second PHY detection to r6040_init_one
From: Mark Kelly <[email protected]>
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 <[email protected]>
Signed-off-by Florian Fainelli <[email protected]>
---
drivers/net/r6040.c +7 -8
@@ -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) {