summaryrefslogtreecommitdiffstats
path: root/sound/soc/fsl/fsl_ssi.c
diff options
context:
space:
mode:
authorMichael Grzeschik2013-08-19 17:06:01 +0200
committerMark Brown2013-08-22 12:11:20 +0200
commitf037708654eef9c5477ac2a88b3a1e8b5d190dc4 (patch)
treeae3916f29a99d267dc5dd52cf6cca6308661ec18 /sound/soc/fsl/fsl_ssi.c
parentASoC: fsl-ssi: imx-pcm-fiq bugfix (diff)
downloadkernel-qcow2-linux-f037708654eef9c5477ac2a88b3a1e8b5d190dc4.tar.gz
kernel-qcow2-linux-f037708654eef9c5477ac2a88b3a1e8b5d190dc4.tar.xz
kernel-qcow2-linux-f037708654eef9c5477ac2a88b3a1e8b5d190dc4.zip
ASoC: fsl: disable ssi irq for imx
We have to disable the ssi irq, as it is not safe for all platforms to write back into the status register. It also runs into non-linefetch aborts. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound/soc/fsl/fsl_ssi.c')
-rw-r--r--sound/soc/fsl/fsl_ssi.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index 198656fd171d..5cf626c4dc96 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -941,18 +941,6 @@ static int fsl_ssi_probe(struct platform_device *pdev)
return -ENXIO;
}
- if (ssi_private->use_dma) {
- /* The 'name' should not have any slashes in it. */
- ret = devm_request_irq(&pdev->dev, ssi_private->irq,
- fsl_ssi_isr, 0, ssi_private->name,
- ssi_private);
- if (ret < 0) {
- dev_err(&pdev->dev, "could not claim irq %u\n",
- ssi_private->irq);
- goto error_irqmap;
- }
- }
-
/* Are the RX and the TX clocks locked? */
if (!of_find_property(np, "fsl,ssi-asynchronous", NULL))
ssi_private->cpu_dai_drv.symmetric_rates = 1;
@@ -1020,6 +1008,16 @@ static int fsl_ssi_probe(struct platform_device *pdev)
dma_events[0], shared ? IMX_DMATYPE_SSI_SP : IMX_DMATYPE_SSI);
imx_pcm_dma_params_init_data(&ssi_private->filter_data_rx,
dma_events[1], shared ? IMX_DMATYPE_SSI_SP : IMX_DMATYPE_SSI);
+ } else if (ssi_private->use_dma) {
+ /* The 'name' should not have any slashes in it. */
+ ret = devm_request_irq(&pdev->dev, ssi_private->irq,
+ fsl_ssi_isr, 0, ssi_private->name,
+ ssi_private);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "could not claim irq %u\n",
+ ssi_private->irq);
+ goto error_irqmap;
+ }
}
/* Initialize the the device_attribute structure */