/*
  *     rsnd_dma functions
  */
+static void __rsnd_dma_start(struct rsnd_dma *dma);
 static void rsnd_dma_continue(struct rsnd_dma *dma)
 {
        /* push next A or B plane */
 {
        /* push both A and B plane*/
        dma->submit_loop = 2;
-       schedule_work(&dma->work);
+       __rsnd_dma_start(dma);
 }
 
 void rsnd_dma_stop(struct rsnd_dma *dma)
        rsnd_unlock(priv, flags);
 }
 
-static void rsnd_dma_do_work(struct work_struct *work)
+static void __rsnd_dma_start(struct rsnd_dma *dma)
 {
-       struct rsnd_dma *dma = container_of(work, struct rsnd_dma, work);
        struct rsnd_priv *priv = rsnd_mod_to_priv(rsnd_dma_to_mod(dma));
        struct device *dev = rsnd_priv_to_dev(priv);
        struct dma_async_tx_descriptor *desc;
        }
 }
 
+static void rsnd_dma_do_work(struct work_struct *work)
+{
+       struct rsnd_dma *dma = container_of(work, struct rsnd_dma, work);
+
+       __rsnd_dma_start(dma);
+}
+
 int rsnd_dma_available(struct rsnd_dma *dma)
 {
        return !!dma->chan;