#include <linux/of_device.h>
 #include <linux/of_gpio.h>
 #include <linux/of_net.h>
+#include <linux/pm_runtime.h>
+
 #include "smsc911x.h"
 
 #define SMSC_CHIPNAME          "smsc911x"
 
        free_netdev(dev);
 
+       pm_runtime_put(&pdev->dev);
+       pm_runtime_disable(&pdev->dev);
+
        return 0;
 }
 
        if (pdata->config.shift)
                pdata->ops = &shifted_smsc911x_ops;
 
+       pm_runtime_enable(&pdev->dev);
+       pm_runtime_get_sync(&pdev->dev);
+
        retval = smsc911x_init(dev);
        if (retval < 0)
                goto out_disable_resources;
 out_free_irq:
        free_irq(dev->irq, dev);
 out_disable_resources:
+       pm_runtime_put(&pdev->dev);
+       pm_runtime_disable(&pdev->dev);
        (void)smsc911x_disable_resources(pdev);
 out_enable_resources_fail:
        smsc911x_free_resources(pdev);