struct snd_soc_dai *dai)
 {
        struct rsnd_dai *rdai = rsnd_dai_to_rdai(dai);
-       struct rsnd_priv *priv = rsnd_rdai_to_priv(rdai);
        struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream);
        struct snd_pcm_hw_constraint_list *constraint = &rdai->constraint;
        struct snd_pcm_runtime *runtime = substream->runtime;
        unsigned int max_channels = rsnd_rdai_channels_get(rdai);
-       int ret;
        int i;
 
        rsnd_dai_stream_init(io, substream);
                                    SNDRV_PCM_HW_PARAM_RATE, -1);
        }
 
-       /*
-        * call rsnd_dai_call without spinlock
-        */
-       ret = rsnd_dai_call(nolock_start, io, priv);
-       if (ret < 0)
-               rsnd_dai_call(nolock_stop, io, priv);
-
-       return ret;
+       return 0;
 }
 
 static void rsnd_soc_dai_shutdown(struct snd_pcm_substream *substream,
        /*
         * call rsnd_dai_call without spinlock
         */
-       rsnd_dai_call(nolock_stop, io, priv);
+       rsnd_dai_call(cleanup, io, priv);
 
        rsnd_dai_stream_quit(io);
 }
 
        return 0;
 }
 
-static int rsnd_dmaen_nolock_stop(struct rsnd_mod *mod,
-                                  struct rsnd_dai_stream *io,
-                                  struct rsnd_priv *priv)
+static int rsnd_dmaen_cleanup(struct rsnd_mod *mod,
+                             struct rsnd_dai_stream *io,
+                             struct rsnd_priv *priv)
 {
        struct rsnd_dma *dma = rsnd_mod_to_dma(mod);
        struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma);
        /*
         * DMAEngine release uses mutex lock.
         * Thus, it shouldn't be called under spinlock.
-        * Let's call it under nolock_start
+        * Let's call it under prepare
         */
        if (dmaen->chan)
                dma_release_channel(dmaen->chan);
        return 0;
 }
 
-static int rsnd_dmaen_nolock_start(struct rsnd_mod *mod,
-                           struct rsnd_dai_stream *io,
-                           struct rsnd_priv *priv)
+static int rsnd_dmaen_prepare(struct rsnd_mod *mod,
+                             struct rsnd_dai_stream *io,
+                             struct rsnd_priv *priv)
 {
        struct rsnd_dma *dma = rsnd_mod_to_dma(mod);
        struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma);
        /*
         * DMAEngine request uses mutex lock.
         * Thus, it shouldn't be called under spinlock.
-        * Let's call it under nolock_start
+        * Let's call it under prepare
         */
        dmaen->chan = rsnd_dmaen_request_channel(io,
                                                 dma->mod_from,
 
 static struct rsnd_mod_ops rsnd_dmaen_ops = {
        .name   = "audmac",
-       .nolock_start = rsnd_dmaen_nolock_start,
-       .nolock_stop  = rsnd_dmaen_nolock_stop,
+       .prepare = rsnd_dmaen_prepare,
+       .cleanup = rsnd_dmaen_cleanup,
        .start  = rsnd_dmaen_start,
        .stop   = rsnd_dmaen_stop,
        .pointer= rsnd_dmaen_pointer,
 
        int (*fallback)(struct rsnd_mod *mod,
                        struct rsnd_dai_stream *io,
                        struct rsnd_priv *priv);
-       int (*nolock_start)(struct rsnd_mod *mod,
-                   struct rsnd_dai_stream *io,
-                   struct rsnd_priv *priv);
-       int (*nolock_stop)(struct rsnd_mod *mod,
-                   struct rsnd_dai_stream *io,
-                   struct rsnd_priv *priv);
        int (*prepare)(struct rsnd_mod *mod,
                       struct rsnd_dai_stream *io,
                       struct rsnd_priv *priv);
+       int (*cleanup)(struct rsnd_mod *mod,
+                      struct rsnd_dai_stream *io,
+                      struct rsnd_priv *priv);
 };
 
 struct rsnd_dai_stream;
  *
  * 0xH0000CBA
  *
- * A   0: nolock_start 1: nolock_stop
+ * A   0: prepare      1: cleanup
  * B   0: init         1: quit
  * C   0: start        1: stop
  *
  * H   0: pointer
  * H   0: prepare
  */
-#define __rsnd_mod_shift_nolock_start  0
-#define __rsnd_mod_shift_nolock_stop   0
+#define __rsnd_mod_shift_prepare       0
+#define __rsnd_mod_shift_cleanup       0
 #define __rsnd_mod_shift_init          4
 #define __rsnd_mod_shift_quit          4
 #define __rsnd_mod_shift_start         8
 #define __rsnd_mod_shift_fallback      28 /* always called */
 #define __rsnd_mod_shift_hw_params     28 /* always called */
 #define __rsnd_mod_shift_pointer       28 /* always called */
-#define __rsnd_mod_shift_prepare       28 /* always called */
 
 #define __rsnd_mod_add_probe           0
 #define __rsnd_mod_add_remove          0
-#define __rsnd_mod_add_nolock_start     1
-#define __rsnd_mod_add_nolock_stop     -1
+#define __rsnd_mod_add_prepare          1
+#define __rsnd_mod_add_cleanup         -1
 #define __rsnd_mod_add_init             1
 #define __rsnd_mod_add_quit            -1
 #define __rsnd_mod_add_start            1
 #define __rsnd_mod_add_fallback                0
 #define __rsnd_mod_add_hw_params       0
 #define __rsnd_mod_add_pointer         0
-#define __rsnd_mod_add_prepare         0
 
 #define __rsnd_mod_call_probe          0
 #define __rsnd_mod_call_remove         0
+#define __rsnd_mod_call_prepare                0
+#define __rsnd_mod_call_cleanup                1
 #define __rsnd_mod_call_init           0
 #define __rsnd_mod_call_quit           1
 #define __rsnd_mod_call_start          0
 #define __rsnd_mod_call_fallback       0
 #define __rsnd_mod_call_hw_params      0
 #define __rsnd_mod_call_pointer                0
-#define __rsnd_mod_call_nolock_start   0
-#define __rsnd_mod_call_nolock_stop    1
-#define __rsnd_mod_call_prepare                0
 
 #define rsnd_mod_to_priv(mod)  ((mod)->priv)
 #define rsnd_mod_name(mod)     ((mod)->ops->name)