MLK-11429-8: ASoC: dmaengine: Add two function for dmaengine_pcm
cherry-pick below patch from imx_3.14.y ENGR00307835-2 ASoC: dmaengine: Add two function for dmaengine_pcm Add check_xrun and device_reset for dmaengine_pcm Signed-off-by: Shengjiu Wang <b02247@freescale.com> (cherry picked from commit 405588f31e432e5c6634a0817e4d804ead87882b)pull/10/head
parent
b3fed04b92
commit
ad84dc2b0e
|
@ -74,6 +74,8 @@ struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream)
|
|||
* @chan_name: Custom channel name to use when requesting DMA channel.
|
||||
* @fifo_size: FIFO size of the DAI controller in bytes
|
||||
* @flags: PCM_DAI flags, only SND_DMAENGINE_PCM_DAI_FLAG_PACK for now
|
||||
* @check_xrun: check if hardware xrun happen in the cpu dai.
|
||||
* @device_reset: if xrun happened, then do cpu dai reset.
|
||||
*/
|
||||
struct snd_dmaengine_dai_dma_data {
|
||||
dma_addr_t addr;
|
||||
|
@ -84,6 +86,16 @@ struct snd_dmaengine_dai_dma_data {
|
|||
const char *chan_name;
|
||||
unsigned int fifo_size;
|
||||
unsigned int flags;
|
||||
bool (*check_xrun)(struct snd_pcm_substream *substream);
|
||||
void (*device_reset)(struct snd_pcm_substream *substream, bool stop);
|
||||
};
|
||||
|
||||
struct dmaengine_pcm_runtime_data {
|
||||
struct dma_chan *dma_chan;
|
||||
dma_cookie_t cookie;
|
||||
|
||||
unsigned int pos;
|
||||
dma_async_tx_callback callback;
|
||||
};
|
||||
|
||||
void snd_dmaengine_pcm_set_config_from_dai_data(
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
* Based on:
|
||||
* imx-pcm-dma-mx2.c, Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
|
||||
* mxs-pcm.c, Copyright (C) 2011 Freescale Semiconductor, Inc.
|
||||
* imx-pcm-dma.c, Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
|
||||
* ep93xx-pcm.c, Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
|
||||
* Copyright (C) 2006 Applied Data Systems
|
||||
*
|
||||
|
@ -28,13 +29,6 @@
|
|||
|
||||
#include <sound/dmaengine_pcm.h>
|
||||
|
||||
struct dmaengine_pcm_runtime_data {
|
||||
struct dma_chan *dma_chan;
|
||||
dma_cookie_t cookie;
|
||||
|
||||
unsigned int pos;
|
||||
};
|
||||
|
||||
static inline struct dmaengine_pcm_runtime_data *substream_to_prtd(
|
||||
const struct snd_pcm_substream *substream)
|
||||
{
|
||||
|
@ -171,7 +165,10 @@ static int dmaengine_pcm_prepare_and_submit(struct snd_pcm_substream *substream)
|
|||
if (!desc)
|
||||
return -ENOMEM;
|
||||
|
||||
desc->callback = dmaengine_pcm_dma_complete;
|
||||
if (prtd->callback)
|
||||
desc->callback = prtd->callback;
|
||||
else
|
||||
desc->callback = dmaengine_pcm_dma_complete;
|
||||
desc->callback_param = substream;
|
||||
prtd->cookie = dmaengine_submit(desc);
|
||||
|
||||
|
|
Loading…
Reference in New Issue