Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 190601
b: refs/heads/master
c: 03f80cc
h: refs/heads/master
i:
  190599: 4e1a617
v: v3
  • Loading branch information
Sebastian Siewior authored and David S. Miller committed Apr 28, 2010
1 parent e8ac5ac commit c4016e7
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 35 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5fa782c2f5ef6c2e4f04d3e228412c9b4a4c8809
refs/heads/master: 03f80cc3f24e1dcdbdba081ed5daf5575aac6180
67 changes: 33 additions & 34 deletions trunk/drivers/net/sb1250-mac.c
Original file line number Diff line number Diff line change
Expand Up @@ -2353,17 +2353,36 @@ static int sbmac_init(struct platform_device *pldev, long long base)

sc->mii_bus = mdiobus_alloc();
if (sc->mii_bus == NULL) {
sbmac_uninitctx(sc);
return -ENOMEM;
err = -ENOMEM;
goto uninit_ctx;
}

sc->mii_bus->name = sbmac_mdio_string;
snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%x", idx);
sc->mii_bus->priv = sc;
sc->mii_bus->read = sbmac_mii_read;
sc->mii_bus->write = sbmac_mii_write;
sc->mii_bus->irq = sc->phy_irq;
for (i = 0; i < PHY_MAX_ADDR; ++i)
sc->mii_bus->irq[i] = SBMAC_PHY_INT;

sc->mii_bus->parent = &pldev->dev;
/*
* Probe PHY address
*/
err = mdiobus_register(sc->mii_bus);
if (err) {
printk(KERN_ERR "%s: unable to register MDIO bus\n",
dev->name);
goto free_mdio;
}
dev_set_drvdata(&pldev->dev, sc->mii_bus);

err = register_netdev(dev);
if (err) {
printk(KERN_ERR "%s.%d: unable to register netdev\n",
sbmac_string, idx);
mdiobus_free(sc->mii_bus);
sbmac_uninitctx(sc);
return err;
goto unreg_mdio;
}

pr_info("%s.%d: registered as %s\n", sbmac_string, idx, dev->name);
Expand All @@ -2379,19 +2398,15 @@ static int sbmac_init(struct platform_device *pldev, long long base)
pr_info("%s: SiByte Ethernet at 0x%08Lx, address: %pM\n",
dev->name, base, eaddr);

sc->mii_bus->name = sbmac_mdio_string;
snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%x", idx);
sc->mii_bus->priv = sc;
sc->mii_bus->read = sbmac_mii_read;
sc->mii_bus->write = sbmac_mii_write;
sc->mii_bus->irq = sc->phy_irq;
for (i = 0; i < PHY_MAX_ADDR; ++i)
sc->mii_bus->irq[i] = SBMAC_PHY_INT;

sc->mii_bus->parent = &pldev->dev;
dev_set_drvdata(&pldev->dev, sc->mii_bus);

return 0;
unreg_mdio:
mdiobus_unregister(sc->mii_bus);
dev_set_drvdata(&pldev->dev, NULL);
free_mdio:
mdiobus_free(sc->mii_bus);
uninit_ctx:
sbmac_uninitctx(sc);
return err;
}


Expand All @@ -2417,16 +2432,6 @@ static int sbmac_open(struct net_device *dev)
goto out_err;
}

/*
* Probe PHY address
*/
err = mdiobus_register(sc->mii_bus);
if (err) {
printk(KERN_ERR "%s: unable to register MDIO bus\n",
dev->name);
goto out_unirq;
}

sc->sbm_speed = sbmac_speed_none;
sc->sbm_duplex = sbmac_duplex_none;
sc->sbm_fc = sbmac_fc_none;
Expand Down Expand Up @@ -2457,11 +2462,7 @@ static int sbmac_open(struct net_device *dev)
return 0;

out_unregister:
mdiobus_unregister(sc->mii_bus);

out_unirq:
free_irq(dev->irq, dev);

out_err:
return err;
}
Expand Down Expand Up @@ -2650,9 +2651,6 @@ static int sbmac_close(struct net_device *dev)

phy_disconnect(sc->phy_dev);
sc->phy_dev = NULL;

mdiobus_unregister(sc->mii_bus);

free_irq(dev->irq, dev);

sbdma_emptyring(&(sc->sbm_txdma));
Expand Down Expand Up @@ -2760,6 +2758,7 @@ static int __exit sbmac_remove(struct platform_device *pldev)

unregister_netdev(dev);
sbmac_uninitctx(sc);
mdiobus_unregister(sc->mii_bus);
mdiobus_free(sc->mii_bus);
iounmap(sc->sbm_base);
free_netdev(dev);
Expand Down

0 comments on commit c4016e7

Please sign in to comment.