struct snd_soc_component *component = mbhc->component;
        int ret;
 
-       ret = pm_runtime_resume_and_get(component->dev);
+       ret = pm_runtime_get_sync(component->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(component->dev,
-                                   "pm_runtime_resume_and_get failed in %s, ret %d\n",
+                                   "pm_runtime_get_sync failed in %s, ret %d\n",
                                    __func__, ret);
+               pm_runtime_put_noidle(component->dev);
                return ret;
        }
 
        mbhc = container_of(work, struct wcd_mbhc, correct_plug_swch);
        component = mbhc->component;
 
-       ret = pm_runtime_resume_and_get(component->dev);
+       ret = pm_runtime_get_sync(component->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(component->dev,
-                                   "pm_runtime_resume_and_get failed in %s, ret %d\n",
+                                   "pm_runtime_get_sync failed in %s, ret %d\n",
                                    __func__, ret);
+               pm_runtime_put_noidle(component->dev);
                return;
        }
        micbias_mv = wcd_mbhc_get_micbias(mbhc);