Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e03f614a authored by Mark Kelly's avatar Mark Kelly Committed by David S. Miller
Browse files

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: default avatarMark Kelly <mark@bifferos.com>
Signed-off-by: default avatarFlorian Fainelli <florian@openwrt.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d516478f
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -750,14 +750,6 @@ static int r6040_up(struct net_device *dev)
	struct r6040_private *lp = netdev_priv(dev);
	struct r6040_private *lp = netdev_priv(dev);
	void __iomem *ioaddr = lp->base;
	void __iomem *ioaddr = lp->base;
	int ret;
	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 */
	/* Initialise and alloc RX/TX buffers */
	r6040_init_txbufs(dev);
	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.phy_id_mask = 0x1f;
	lp->mii_if.reg_num_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 */
	/* Register net device. After this dev->name assign */
	err = register_netdev(dev);
	err = register_netdev(dev);
	if (err) {
	if (err) {