Loading sound/soc/codecs/Kconfig +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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 Loading sound/soc/codecs/wm8994.c +12 −6 Original line number Original line Diff line number Diff line Loading @@ -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); else ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, wm8994_mic_irq, "Mic 1 detect", wm8994); if (ret != 0) if (ret != 0) dev_warn(codec->dev, dev_warn(codec->dev, "Failed to request Mic1 detect IRQ: %d\n", "Failed to request Mic1 detect IRQ: %d\n", ret); ret); } ret = wm8994_request_irq(wm8994->wm8994, ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, WM8994_IRQ_MIC1_SHRT, Loading sound/soc/txx9/txx9aclc.c +7 −7 Original line number Original line Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; } } Loading @@ -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, Loading @@ -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; Loading @@ -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++; Loading Loading @@ -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; } } Loading Loading @@ -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; Loading Loading
sound/soc/codecs/Kconfig +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
sound/soc/codecs/wm8994.c +12 −6 Original line number Original line Diff line number Diff line Loading @@ -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); else ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, wm8994_mic_irq, "Mic 1 detect", wm8994); if (ret != 0) if (ret != 0) dev_warn(codec->dev, dev_warn(codec->dev, "Failed to request Mic1 detect IRQ: %d\n", "Failed to request Mic1 detect IRQ: %d\n", ret); ret); } ret = wm8994_request_irq(wm8994->wm8994, ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, WM8994_IRQ_MIC1_SHRT, Loading
sound/soc/txx9/txx9aclc.c +7 −7 Original line number Original line Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; } } Loading @@ -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, Loading @@ -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; Loading @@ -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++; Loading Loading @@ -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; } } Loading Loading @@ -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; Loading