r6040: check PHY status when bringing interface up
authorFlorian Fainelli <florian@openwrt.org>
Thu, 8 Jan 2009 19:01:58 +0000 (11:01 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Jan 2009 19:01:58 +0000 (11:01 -0800)
This patch makes the driver properly initialize the PHY
status if not correctly set by the bootloader/BIOS.
It prevents some boards to bring up the link on boot.

Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/r6040.c

index 92b14c871351b9a352f6cb363e193ed1b4aff4d6..7ac6fede6e6dd13c6ec50e7cfa3722f16f1a0d6e 100644 (file)
@@ -1121,6 +1121,10 @@ static int __devinit r6040_init_one(struct pci_dev *pdev,
                err = -EIO;
                goto err_out_free_res;
        }
+       /* If PHY status change register is still set to zero it means the
+        * bootloader didn't initialize it */
+       if (ioread16(ioaddr + PHY_CC) == 0)
+               iowrite16(0x9f07, ioaddr + PHY_CC);
 
        /* Init system & device */
        lp->base = ioaddr;