]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/macb.c
bnx2x: New statistics code
[linux-2.6-omap-h63xx.git] / drivers / net / macb.c
index 1d210ed4613096118b1d4e6035f357028e1860cc..e34630252cefcfa5216e08c3658d1f4ad9447c4c 100644 (file)
@@ -80,8 +80,12 @@ static void __init macb_get_hwaddr(struct macb *bp)
        addr[4] = top & 0xff;
        addr[5] = (top >> 8) & 0xff;
 
-       if (is_valid_ether_addr(addr))
+       if (is_valid_ether_addr(addr)) {
                memcpy(bp->dev->dev_addr, addr, sizeof(addr));
+       } else {
+               dev_info(&bp->pdev->dev, "invalid hw address, using random\n");
+               random_ether_addr(bp->dev->dev_addr);
+       }
 }
 
 static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum)
@@ -242,12 +246,12 @@ static int macb_mii_init(struct macb *bp)
        /* Enable managment port */
        macb_writel(bp, NCR, MACB_BIT(MPE));
 
-       bp->mii_bus.name = "MACB_mii_bus",
-       bp->mii_bus.read = &macb_mdio_read,
-       bp->mii_bus.write = &macb_mdio_write,
-       bp->mii_bus.reset = &macb_mdio_reset,
-       bp->mii_bus.id = bp->pdev->id,
-       bp->mii_bus.priv = bp,
+       bp->mii_bus.name = "MACB_mii_bus";
+       bp->mii_bus.read = &macb_mdio_read;
+       bp->mii_bus.write = &macb_mdio_write;
+       bp->mii_bus.reset = &macb_mdio_reset;
+       snprintf(bp->mii_bus.id, MII_BUS_ID_SIZE, "%x", bp->pdev->id);
+       bp->mii_bus.priv = bp;
        bp->mii_bus.dev = &bp->dev->dev;
        pdata = bp->pdev->dev.platform_data;
 
@@ -1257,6 +1261,8 @@ static int __exit macb_remove(struct platform_device *pdev)
 
        if (dev) {
                bp = netdev_priv(dev);
+               if (bp->phy_dev)
+                       phy_disconnect(bp->phy_dev);
                mdiobus_unregister(&bp->mii_bus);
                kfree(bp->mii_bus.irq);
                unregister_netdev(dev);
@@ -1279,6 +1285,7 @@ static struct platform_driver macb_driver = {
        .remove         = __exit_p(macb_remove),
        .driver         = {
                .name           = "macb",
+               .owner  = THIS_MODULE,
        },
 };
 
@@ -1298,3 +1305,4 @@ module_exit(macb_exit);
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Atmel MACB Ethernet driver");
 MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
+MODULE_ALIAS("platform:macb");