Merge remote-tracking branches 'asoc/topic/txx9', 'asoc/topic/wm8978' and 'asoc/topic/wm8994' into asoc-next
This commit is contained in:
Коммит
a5448c88b8
|
@ -741,7 +741,8 @@ config SND_SOC_WM8974
|
|||
tristate
|
||||
|
||||
config SND_SOC_WM8978
|
||||
tristate
|
||||
tristate "Wolfson Microelectronics WM8978 codec"
|
||||
depends on I2C
|
||||
|
||||
config SND_SOC_WM8983
|
||||
tristate
|
||||
|
|
|
@ -4082,17 +4082,23 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
|
|||
|
||||
switch (control->type) {
|
||||
case WM8994:
|
||||
if (wm8994->micdet_irq) {
|
||||
if (wm8994->micdet_irq)
|
||||
ret = request_threaded_irq(wm8994->micdet_irq, NULL,
|
||||
wm8994_mic_irq,
|
||||
IRQF_TRIGGER_RISING,
|
||||
"Mic1 detect",
|
||||
wm8994);
|
||||
if (ret != 0)
|
||||
dev_warn(codec->dev,
|
||||
"Failed to request Mic1 detect IRQ: %d\n",
|
||||
ret);
|
||||
}
|
||||
else
|
||||
ret = wm8994_request_irq(wm8994->wm8994,
|
||||
WM8994_IRQ_MIC1_DET,
|
||||
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,
|
||||
WM8994_IRQ_MIC1_SHRT,
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/dmaengine.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/pcm_params.h>
|
||||
|
@ -137,7 +138,7 @@ txx9aclc_dma_submit(struct txx9aclc_dmadata *dmadata, dma_addr_t buf_dma_addr)
|
|||
}
|
||||
desc->callback = txx9aclc_dma_complete;
|
||||
desc->callback_param = dmadata;
|
||||
desc->tx_submit(desc);
|
||||
dmaengine_submit(desc);
|
||||
return desc;
|
||||
}
|
||||
|
||||
|
@ -160,7 +161,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
|
|||
void __iomem *base = drvdata->base;
|
||||
|
||||
spin_unlock_irqrestore(&dmadata->dma_lock, flags);
|
||||
chan->device->device_control(chan, DMA_TERMINATE_ALL, 0);
|
||||
dmaengine_terminate_all(chan);
|
||||
/* first time */
|
||||
for (i = 0; i < NR_DMA_CHAIN; i++) {
|
||||
desc = txx9aclc_dma_submit(dmadata,
|
||||
|
@ -169,7 +170,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
|
|||
return;
|
||||
}
|
||||
dmadata->dmacount = NR_DMA_CHAIN;
|
||||
chan->device->device_issue_pending(chan);
|
||||
dma_async_issue_pending(chan);
|
||||
spin_lock_irqsave(&dmadata->dma_lock, flags);
|
||||
__raw_writel(ctlbit, base + ACCTLEN);
|
||||
dmadata->frag_count = NR_DMA_CHAIN % dmadata->frags;
|
||||
|
@ -188,7 +189,7 @@ static void txx9aclc_dma_tasklet(unsigned long data)
|
|||
dmadata->frag_count * dmadata->frag_bytes);
|
||||
if (!desc)
|
||||
return;
|
||||
chan->device->device_issue_pending(chan);
|
||||
dma_async_issue_pending(chan);
|
||||
|
||||
spin_lock_irqsave(&dmadata->dma_lock, flags);
|
||||
dmadata->frag_count++;
|
||||
|
@ -266,7 +267,7 @@ static int txx9aclc_pcm_close(struct snd_pcm_substream *substream)
|
|||
struct dma_chan *chan = dmadata->dma_chan;
|
||||
|
||||
dmadata->frag_count = -1;
|
||||
chan->device->device_control(chan, DMA_TERMINATE_ALL, 0);
|
||||
dmaengine_terminate_all(chan);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -398,8 +399,7 @@ static int txx9aclc_pcm_remove(struct snd_soc_platform *platform)
|
|||
struct dma_chan *chan = dmadata->dma_chan;
|
||||
if (chan) {
|
||||
dmadata->frag_count = -1;
|
||||
chan->device->device_control(chan,
|
||||
DMA_TERMINATE_ALL, 0);
|
||||
dmaengine_terminate_all(chan);
|
||||
dma_release_channel(chan);
|
||||
}
|
||||
dev->dmadata[i].dma_chan = NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче