Commit a5448c88 authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branches 'asoc/topic/txx9', 'asoc/topic/wm8978' and...

Merge remote-tracking branches 'asoc/topic/txx9', 'asoc/topic/wm8978' and 'asoc/topic/wm8994' into asoc-next
...@@ -741,7 +741,8 @@ config SND_SOC_WM8974 ...@@ -741,7 +741,8 @@ config SND_SOC_WM8974
tristate tristate
config SND_SOC_WM8978 config SND_SOC_WM8978
tristate tristate "Wolfson Microelectronics WM8978 codec"
depends on I2C
config SND_SOC_WM8983 config SND_SOC_WM8983
tristate tristate
......
...@@ -4082,17 +4082,23 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) ...@@ -4082,17 +4082,23 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
switch (control->type) { switch (control->type) {
case WM8994: case WM8994:
if (wm8994->micdet_irq) { if (wm8994->micdet_irq)
ret = request_threaded_irq(wm8994->micdet_irq, NULL, ret = request_threaded_irq(wm8994->micdet_irq, NULL,
wm8994_mic_irq, wm8994_mic_irq,
IRQF_TRIGGER_RISING, IRQF_TRIGGER_RISING,
"Mic1 detect", "Mic1 detect",
wm8994); wm8994);
if (ret != 0) else
dev_warn(codec->dev, ret = wm8994_request_irq(wm8994->wm8994,
"Failed to request Mic1 detect IRQ: %d\n", WM8994_IRQ_MIC1_DET,
ret); wm8994_mic_irq, "Mic 1 detect",
} wm8994);
if (ret != 0)
dev_warn(codec->dev,
"Failed to request Mic1 detect IRQ: %d\n",
ret);
ret = wm8994_request_irq(wm8994->wm8994, ret = wm8994_request_irq(wm8994->wm8994,
WM8994_IRQ_MIC1_SHRT, WM8994_IRQ_MIC1_SHRT,
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/dmaengine.h>
#include <sound/core.h> #include <sound/core.h>
#include <sound/pcm.h> #include <sound/pcm.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
...@@ -137,7 +138,7 @@ txx9aclc_dma_submit(struct txx9aclc_dmadata *dmadata, dma_addr_t buf_dma_addr) ...@@ -137,7 +138,7 @@ txx9aclc_dma_submit(struct txx9aclc_dmadata *dmadata, dma_addr_t buf_dma_addr)
} }
desc->callback = txx9aclc_dma_complete; desc->callback = txx9aclc_dma_complete;
desc->callback_param = dmadata; desc->callback_param = dmadata;
desc->tx_submit(desc); dmaengine_submit(desc);
return desc; return desc;
} }
...@@ -160,7 +161,7 @@ static void txx9aclc_dma_tasklet(unsigned long data) ...@@ -160,7 +161,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
void __iomem *base = drvdata->base; void __iomem *base = drvdata->base;
spin_unlock_irqrestore(&dmadata->dma_lock, flags); spin_unlock_irqrestore(&dmadata->dma_lock, flags);
chan->device->device_control(chan, DMA_TERMINATE_ALL, 0); dmaengine_terminate_all(chan);
/* first time */ /* first time */
for (i = 0; i < NR_DMA_CHAIN; i++) { for (i = 0; i < NR_DMA_CHAIN; i++) {
desc = txx9aclc_dma_submit(dmadata, desc = txx9aclc_dma_submit(dmadata,
...@@ -169,7 +170,7 @@ static void txx9aclc_dma_tasklet(unsigned long data) ...@@ -169,7 +170,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
return; return;
} }
dmadata->dmacount = NR_DMA_CHAIN; dmadata->dmacount = NR_DMA_CHAIN;
chan->device->device_issue_pending(chan); dma_async_issue_pending(chan);
spin_lock_irqsave(&dmadata->dma_lock, flags); spin_lock_irqsave(&dmadata->dma_lock, flags);
__raw_writel(ctlbit, base + ACCTLEN); __raw_writel(ctlbit, base + ACCTLEN);
dmadata->frag_count = NR_DMA_CHAIN % dmadata->frags; dmadata->frag_count = NR_DMA_CHAIN % dmadata->frags;
...@@ -188,7 +189,7 @@ static void txx9aclc_dma_tasklet(unsigned long data) ...@@ -188,7 +189,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
dmadata->frag_count * dmadata->frag_bytes); dmadata->frag_count * dmadata->frag_bytes);
if (!desc) if (!desc)
return; return;
chan->device->device_issue_pending(chan); dma_async_issue_pending(chan);
spin_lock_irqsave(&dmadata->dma_lock, flags); spin_lock_irqsave(&dmadata->dma_lock, flags);
dmadata->frag_count++; dmadata->frag_count++;
...@@ -266,7 +267,7 @@ static int txx9aclc_pcm_close(struct snd_pcm_substream *substream) ...@@ -266,7 +267,7 @@ static int txx9aclc_pcm_close(struct snd_pcm_substream *substream)
struct dma_chan *chan = dmadata->dma_chan; struct dma_chan *chan = dmadata->dma_chan;
dmadata->frag_count = -1; dmadata->frag_count = -1;
chan->device->device_control(chan, DMA_TERMINATE_ALL, 0); dmaengine_terminate_all(chan);
return 0; return 0;
} }
...@@ -398,8 +399,7 @@ static int txx9aclc_pcm_remove(struct snd_soc_platform *platform) ...@@ -398,8 +399,7 @@ static int txx9aclc_pcm_remove(struct snd_soc_platform *platform)
struct dma_chan *chan = dmadata->dma_chan; struct dma_chan *chan = dmadata->dma_chan;
if (chan) { if (chan) {
dmadata->frag_count = -1; dmadata->frag_count = -1;
chan->device->device_control(chan, dmaengine_terminate_all(chan);
DMA_TERMINATE_ALL, 0);
dma_release_channel(chan); dma_release_channel(chan);
} }
dev->dmadata[i].dma_chan = NULL; dev->dmadata[i].dma_chan = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment