if (vid == cpsw->data.default_vlan)
                return 0;
 
-       ret = pm_runtime_get_sync(cpsw->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(cpsw->dev);
+       ret = pm_runtime_resume_and_get(cpsw->dev);
+       if (ret < 0)
                return ret;
-       }
 
        /* In dual EMAC, reserved VLAN id should not be used for
         * creating VLAN interfaces as this can break the dual
 
        dev_info(priv->dev, "starting ndev. mode: %s\n",
                 cpsw_is_switch_en(cpsw) ? "switch" : "dual_mac");
-       ret = pm_runtime_get_sync(cpsw->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(cpsw->dev);
+       ret = pm_runtime_resume_and_get(cpsw->dev);
+       if (ret < 0)
                return ret;
-       }
 
        /* Notify the stack of the actual queue counts. */
        ret = netif_set_real_num_tx_queues(ndev, cpsw->tx_ch_num);
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
 
-       ret = pm_runtime_get_sync(cpsw->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(cpsw->dev);
+       ret = pm_runtime_resume_and_get(cpsw->dev);
+       if (ret < 0)
                return ret;
-       }
 
        vid = cpsw->slaves[slave_no].port_vlan;
        flags = ALE_VLAN | ALE_SECURE;
        if (vid == cpsw->data.default_vlan)
                return 0;
 
-       ret = pm_runtime_get_sync(cpsw->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(cpsw->dev);
+       ret = pm_runtime_resume_and_get(cpsw->dev);
+       if (ret < 0)
                return ret;
-       }
 
        /* reset the return code as pm_runtime_get_sync() can return
         * non zero values as well.
        /* Need to enable clocks with runtime PM api to access module
         * registers
         */
-       ret = pm_runtime_get_sync(dev);
+       ret = pm_runtime_resume_and_get(dev);
        if (ret < 0) {
-               pm_runtime_put_noidle(dev);
                pm_runtime_disable(dev);
                return ret;
        }
        struct cpsw_common *cpsw = platform_get_drvdata(pdev);
        int ret;
 
-       ret = pm_runtime_get_sync(&pdev->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(&pdev->dev);
+       ret = pm_runtime_resume_and_get(&pdev->dev);
+       if (ret < 0)
                return ret;
-       }
 
        cpsw_unregister_notifiers(cpsw);
        cpsw_unregister_devlink(cpsw);