return 0;
 }
 
+static inline int snd_sof_shutdown(struct snd_sof_dev *sdev)
+{
+       if (sof_ops(sdev)->shutdown)
+               return sof_ops(sdev)->shutdown(sdev);
+
+       return 0;
+}
+
 /* control */
 
 /*
 
  */
 struct snd_sof_dsp_ops {
 
-       /* probe and remove */
+       /* probe/remove/shutdown */
        int (*probe)(struct snd_sof_dev *sof_dev); /* mandatory */
        int (*remove)(struct snd_sof_dev *sof_dev); /* optional */
+       int (*shutdown)(struct snd_sof_dev *sof_dev); /* optional */
 
        /* DSP core boot / reset */
        int (*run)(struct snd_sof_dev *sof_dev); /* mandatory */
 
 int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data);
 int snd_sof_device_remove(struct device *dev);
+int snd_sof_device_shutdown(struct device *dev);
 
 int snd_sof_runtime_suspend(struct device *dev);
 int snd_sof_runtime_resume(struct device *dev);