unsigned int addr;
        int i, reg;
 
+       pm_runtime_get_sync(bus->parent);
        spin_lock_irqsave(&pdata->mac_lock, flags);
 
        /* Confirm MII not busy */
 
 out:
        spin_unlock_irqrestore(&pdata->mac_lock, flags);
+       pm_runtime_put(bus->parent);
        return reg;
 }
 
        unsigned int addr;
        int i, reg;
 
+       pm_runtime_get_sync(bus->parent);
        spin_lock_irqsave(&pdata->mac_lock, flags);
 
        /* Confirm MII not busy */
 
 out:
        spin_unlock_irqrestore(&pdata->mac_lock, flags);
+       pm_runtime_put(bus->parent);
        return reg;
 }
 
        int retval;
        int irq_flags;
 
+       pm_runtime_get_sync(dev->dev.parent);
+
        /* find and start the given phy */
        if (!dev->phydev) {
                retval = smsc911x_mii_probe(dev);
        phy_disconnect(dev->phydev);
        dev->phydev = NULL;
 out:
+       pm_runtime_put(dev->dev.parent);
        return retval;
 }
 
                dev->phydev = NULL;
        }
        netif_carrier_off(dev);
+       pm_runtime_put(dev->dev.parent);
 
        SMSC_TRACE(pdata, ifdown, "Interface stopped");
        return 0;
 
        free_netdev(dev);
 
-       pm_runtime_put(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
 
        return 0;
        }
 
        spin_unlock_irq(&pdata->mac_lock);
+       pm_runtime_put(&pdev->dev);
 
        netdev_info(dev, "MAC Address: %pM\n", dev->dev_addr);