|
@@ -2220,6 +2220,7 @@ static void sh_eth_tsu_init(struct sh_eth_private *mdp)
|
|
/* MDIO bus release function */
|
|
/* MDIO bus release function */
|
|
static int sh_mdio_release(struct net_device *ndev)
|
|
static int sh_mdio_release(struct net_device *ndev)
|
|
{
|
|
{
|
|
|
|
+ struct sh_eth_private *mdp = netdev_priv(ndev);
|
|
struct mii_bus *bus = dev_get_drvdata(&ndev->dev);
|
|
struct mii_bus *bus = dev_get_drvdata(&ndev->dev);
|
|
|
|
|
|
/* unregister mdio bus */
|
|
/* unregister mdio bus */
|
|
@@ -2234,6 +2235,9 @@ static int sh_mdio_release(struct net_device *ndev)
|
|
/* free bitbang info */
|
|
/* free bitbang info */
|
|
free_mdio_bitbang(bus);
|
|
free_mdio_bitbang(bus);
|
|
|
|
|
|
|
|
+ /* free bitbang memory */
|
|
|
|
+ kfree(mdp->bitbang);
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2262,6 +2266,7 @@ static int sh_mdio_init(struct net_device *ndev, int id,
|
|
bitbang->ctrl.ops = &bb_ops;
|
|
bitbang->ctrl.ops = &bb_ops;
|
|
|
|
|
|
/* MII controller setting */
|
|
/* MII controller setting */
|
|
|
|
+ mdp->bitbang = bitbang;
|
|
mdp->mii_bus = alloc_mdio_bitbang(&bitbang->ctrl);
|
|
mdp->mii_bus = alloc_mdio_bitbang(&bitbang->ctrl);
|
|
if (!mdp->mii_bus) {
|
|
if (!mdp->mii_bus) {
|
|
ret = -ENOMEM;
|
|
ret = -ENOMEM;
|