struct qcom_swrm_ctrl *ctrl = dev_id;
        int ret;
 
-       ret = pm_runtime_resume_and_get(ctrl->dev);
+       ret = pm_runtime_get_sync(ctrl->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(ctrl->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(ctrl->dev);
                return ret;
        }
 
        struct snd_soc_dai *codec_dai;
        int ret, i;
 
-       ret = pm_runtime_resume_and_get(ctrl->dev);
+       ret = pm_runtime_get_sync(ctrl->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(ctrl->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(ctrl->dev);
                return ret;
        }
 
        struct qcom_swrm_ctrl *ctrl = s_file->private;
        int reg, reg_val, ret;
 
-       ret = pm_runtime_resume_and_get(ctrl->dev);
+       ret = pm_runtime_get_sync(ctrl->dev);
        if (ret < 0 && ret != -EACCES) {
                dev_err_ratelimited(ctrl->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(ctrl->dev);
                return ret;
        }