}
 
        /* restore pipelines */
-       ret = sof_set_up_pipelines(sdev->dev, false);
+       ret = sof_set_up_pipelines(sdev, false);
        if (ret < 0) {
                dev_err(sdev->dev,
                        "error: failed to restore pipeline after resume %d\n",
        if (target_state == SOF_DSP_PM_D0)
                goto suspend;
 
-       sof_tear_down_pipelines(dev, false);
+       sof_tear_down_pipelines(sdev, false);
 
        /* release trace */
        snd_sof_release_trace(sdev);
 
                break;
        case snd_soc_dapm_scheduler:
                pipeline = swidget->private;
-               ret = sof_load_pipeline_ipc(sdev->dev, pipeline, &r);
+               ret = sof_load_pipeline_ipc(sdev, pipeline, &r);
                break;
        default:
                hdr = swidget->private;
                if (pipe_widget->complete)
                        continue;
 
-               pipe_widget->complete = snd_sof_complete_pipeline(sdev->dev, pipe_widget);
+               pipe_widget->complete = snd_sof_complete_pipeline(sdev, pipe_widget);
                if (pipe_widget->complete < 0) {
                        ret = pipe_widget->complete;
                        goto widget_free;
        return NULL;
 }
 
-int sof_set_up_pipelines(struct device *dev, bool verify)
+int sof_set_up_pipelines(struct snd_sof_dev *sdev, bool verify)
 {
-       struct snd_sof_dev *sdev = dev_get_drvdata(dev);
        struct snd_sof_widget *swidget;
        struct snd_sof_route *sroute;
        int ret;
                                continue;
 
                        swidget->complete =
-                               snd_sof_complete_pipeline(dev, swidget);
+                               snd_sof_complete_pipeline(sdev, swidget);
                        break;
                default:
                        break;
  * This function doesn't free widgets during suspend. It only resets the set up status for all
  * routes and use_count for all widgets.
  */
-int sof_tear_down_pipelines(struct device *dev, bool verify)
+int sof_tear_down_pipelines(struct snd_sof_dev *sdev, bool verify)
 {
-       struct snd_sof_dev *sdev = dev_get_drvdata(dev);
        struct snd_sof_widget *swidget;
        struct snd_sof_route *sroute;
        int ret;
 
  * be freed by snd_soc_unregister_component,
  */
 int snd_sof_load_topology(struct snd_soc_component *scomp, const char *file);
-int snd_sof_complete_pipeline(struct device *dev,
+int snd_sof_complete_pipeline(struct snd_sof_dev *sdev,
                              struct snd_sof_widget *swidget);
 
-int sof_load_pipeline_ipc(struct device *dev,
+int sof_load_pipeline_ipc(struct snd_sof_dev *sdev,
                          struct sof_ipc_pipe_new *pipeline,
                          struct sof_ipc_comp_reply *r);
 int sof_pipeline_core_enable(struct snd_sof_dev *sdev,
 int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params);
 
 /* PM */
-int sof_set_up_pipelines(struct device *dev, bool verify);
-int sof_tear_down_pipelines(struct device *dev, bool verify);
+int sof_set_up_pipelines(struct snd_sof_dev *sdev, bool verify);
+int sof_tear_down_pipelines(struct snd_sof_dev *sdev, bool verify);
 int sof_set_hw_params_upon_resume(struct device *dev);
 bool snd_sof_stream_suspend_ignored(struct snd_sof_dev *sdev);
 bool snd_sof_dsp_only_d0i3_compatible_stream_active(struct snd_sof_dev *sdev);
 
 /*
  * Pipeline Topology
  */
-int sof_load_pipeline_ipc(struct device *dev,
+int sof_load_pipeline_ipc(struct snd_sof_dev *sdev,
                          struct sof_ipc_pipe_new *pipeline,
                          struct sof_ipc_comp_reply *r)
 {
-       struct snd_sof_dev *sdev = dev_get_drvdata(dev);
        int ret = sof_core_enable(sdev, pipeline->core);
 
        if (ret < 0)
        ret = sof_ipc_tx_message(sdev->ipc, pipeline->hdr.cmd, pipeline,
                                 sizeof(*pipeline), r, sizeof(*r));
        if (ret < 0)
-               dev_err(dev, "error: load pipeline ipc failure\n");
+               dev_err(sdev->dev, "error: load pipeline ipc failure\n");
 
        return ret;
 }
        return ret;
 }
 
-int snd_sof_complete_pipeline(struct device *dev,
+int snd_sof_complete_pipeline(struct snd_sof_dev *sdev,
                              struct snd_sof_widget *swidget)
 {
-       struct snd_sof_dev *sdev = dev_get_drvdata(dev);
        struct sof_ipc_pipe_ready ready;
        struct sof_ipc_reply reply;
        int ret;
 
-       dev_dbg(dev, "tplg: complete pipeline %s id %d\n",
+       dev_dbg(sdev->dev, "tplg: complete pipeline %s id %d\n",
                swidget->widget->name, swidget->comp_id);
 
        memset(&ready, 0, sizeof(ready));
 
        /* verify topology components loading including dynamic pipelines */
        if (sof_core_debug & SOF_DBG_VERIFY_TPLG) {
-               ret = sof_set_up_pipelines(scomp->dev, true);
+               ret = sof_set_up_pipelines(sdev, true);
                if (ret < 0) {
                        dev_err(sdev->dev, "error: topology verification failed %d\n", ret);
                        return ret;
                }
 
-               ret = sof_tear_down_pipelines(scomp->dev, true);
+               ret = sof_tear_down_pipelines(sdev, true);
                if (ret < 0) {
                        dev_err(sdev->dev, "error: topology tear down pipelines failed %d\n", ret);
                        return ret;
        }
 
        /* set up static pipelines */
-       return sof_set_up_pipelines(scomp->dev, false);
+       return sof_set_up_pipelines(sdev, false);
 }
 
 /* manifest - optional to inform component of manifest */