ASoC: omap McBSP: Clear rx_irq at probe time for OMAP4
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Wed, 7 Mar 2012 09:15:37 +0000 (11:15 +0200)
committerLiam Girdwood <lrg@ti.com>
Mon, 12 Mar 2012 13:34:23 +0000 (13:34 +0000)
On OMAP4 we have one interrupt line per McBSP port.
At probe time tx, and rx irq value will be -ENXIO,
and only the tx irq will get corrected.
In omap_mcbsp_request if the rx_irq is not 0 we proceed,
and try to request the interrupt, which will fail on
OMAP4 (rx_irq == -6).
To avoid this error, clear the rx_irq at probe time
on OMAP4.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>

sound/soc/omap/mcbsp.c

index 21dbb05..c3e31de 100644 (file)
@@ -958,8 +958,10 @@ int __devinit omap_mcbsp_init(struct platform_device *pdev)
        mcbsp->rx_irq = platform_get_irq_byname(pdev, "rx");
 
        /* From OMAP4 there will be a single irq line */
-       if (mcbsp->tx_irq == -ENXIO)
+       if (mcbsp->tx_irq == -ENXIO) {
                mcbsp->tx_irq = platform_get_irq(pdev, 0);
+               mcbsp->rx_irq = 0;
+       }
 
        res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx");
        if (!res) {