summaryrefslogtreecommitdiffstats
path: root/sound/soc/intel/skylake/skl-sst-cldma.h
diff options
context:
space:
mode:
authorJeeja KP <jeeja.kp@intel.com>2017-03-13 22:11:31 +0530
committerMark Brown <broonie@kernel.org>2017-03-15 17:28:18 +0000
commitb7d0254c51f3ce79a8931690e8a2f035208f6b55 (patch)
treeb13a6487b7f2cb4d069d3419da67a082bfce790d /sound/soc/intel/skylake/skl-sst-cldma.h
parent7bd86a30599de479bd863e18472207337485d339 (diff)
downloadlinux-stable-b7d0254c51f3ce79a8931690e8a2f035208f6b55.tar.gz
linux-stable-b7d0254c51f3ce79a8931690e8a2f035208f6b55.tar.bz2
linux-stable-b7d0254c51f3ce79a8931690e8a2f035208f6b55.zip
ASoC: Intel: Skylake: Fix module load when module size > DMA buffer size
When module size > DMA buffer size, driver copies first chunk and waits for the BDL complete interrupt. BDL complete interrupt never occurs and wait time expires as module load IPC is not send to start the DMA from DSP. To fix the above issue need to follow the below steps: 1. After copying the first chunk, send the module load IPC to start the DMA. 2. Wait for the BDL interrupt. Once interrupt is received, copy the next chunk. 3. Continue step 2 till all bytes are copied. 4. When all the bytes are copied (bytes_left = 0), wait for module load IPC response 5. Handled module load IPC response messages, check the load module IPC response and wake up the thread to complete module load. Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Acked-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel/skylake/skl-sst-cldma.h')
-rw-r--r--sound/soc/intel/skylake/skl-sst-cldma.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/intel/skylake/skl-sst-cldma.h b/sound/soc/intel/skylake/skl-sst-cldma.h
index 99e4c86b6358..5b730a1a0ae4 100644
--- a/sound/soc/intel/skylake/skl-sst-cldma.h
+++ b/sound/soc/intel/skylake/skl-sst-cldma.h
@@ -213,7 +213,7 @@ struct skl_cl_dev_ops {
void (*cl_trigger)(struct sst_dsp *ctx, bool enable);
void (*cl_cleanup_controller)(struct sst_dsp *ctx);
int (*cl_copy_to_dmabuf)(struct sst_dsp *ctx,
- const void *bin, u32 size);
+ const void *bin, u32 size, bool wait);
void (*cl_stop_dma)(struct sst_dsp *ctx);
};