aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorge Eduardo Candelaria <jorge.candelaria@ti.com>2010-05-12 13:18:39 -0400
committerLiam Girdwood <lrg@slimlogic.co.uk>2010-05-14 06:20:01 -0400
commit9319b9da35179e11aa9c15d80062d63b36a0517f (patch)
tree8a793fe818a70e45e592c915e85e92554f998e5f
parentd98508a121e8f4b1ccf876fea463fa0afddc4e19 (diff)
ARM: McBSP: Fix request for irq in OMAP4
In OMAP4, there is only one irq line for TX and RX paths. Use the correct irq line to avoid errors at runtime. Also, request irq line only once (instead of requesting for TX and RX). Signed-off-by: Jorge Eduardo Candelaria <jorge.candelaria@ti.com> Acked-by: Jarkko Nikula <jhnikula@gmail.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r--arch/arm/mach-omap2/mcbsp.c12
-rw-r--r--arch/arm/plat-omap/mcbsp.c20
2 files changed, 16 insertions, 16 deletions
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index be8fce395a58..016fe60c71ad 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -186,32 +186,28 @@ static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = {
186 .phys_base = OMAP44XX_MCBSP1_BASE, 186 .phys_base = OMAP44XX_MCBSP1_BASE,
187 .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX, 187 .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX,
188 .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX, 188 .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX,
189 .rx_irq = INT_24XX_MCBSP1_IRQ_RX, 189 .tx_irq = OMAP44XX_IRQ_MCBSP1,
190 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
191 .ops = &omap2_mcbsp_ops, 190 .ops = &omap2_mcbsp_ops,
192 }, 191 },
193 { 192 {
194 .phys_base = OMAP44XX_MCBSP2_BASE, 193 .phys_base = OMAP44XX_MCBSP2_BASE,
195 .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX, 194 .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX,
196 .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX, 195 .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX,
197 .rx_irq = INT_24XX_MCBSP2_IRQ_RX, 196 .tx_irq = OMAP44XX_IRQ_MCBSP2,
198 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
199 .ops = &omap2_mcbsp_ops, 197 .ops = &omap2_mcbsp_ops,
200 }, 198 },
201 { 199 {
202 .phys_base = OMAP44XX_MCBSP3_BASE, 200 .phys_base = OMAP44XX_MCBSP3_BASE,
203 .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX, 201 .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX,
204 .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX, 202 .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX,
205 .rx_irq = INT_24XX_MCBSP3_IRQ_RX, 203 .tx_irq = OMAP44XX_IRQ_MCBSP3,
206 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
207 .ops = &omap2_mcbsp_ops, 204 .ops = &omap2_mcbsp_ops,
208 }, 205 },
209 { 206 {
210 .phys_base = OMAP44XX_MCBSP4_BASE, 207 .phys_base = OMAP44XX_MCBSP4_BASE,
211 .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX, 208 .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX,
212 .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX, 209 .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX,
213 .rx_irq = INT_24XX_MCBSP4_IRQ_RX, 210 .tx_irq = OMAP44XX_IRQ_MCBSP4,
214 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
215 .ops = &omap2_mcbsp_ops, 211 .ops = &omap2_mcbsp_ops,
216 }, 212 },
217}; 213};
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 4ff7a11b1838..8bbbb93e2128 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -778,14 +778,17 @@ int omap_mcbsp_request(unsigned int id)
778 goto err_clk_disable; 778 goto err_clk_disable;
779 } 779 }
780 780
781 init_completion(&mcbsp->rx_irq_completion); 781 if (mcbsp->rx_irq) {
782 err = request_irq(mcbsp->rx_irq, omap_mcbsp_rx_irq_handler, 782 init_completion(&mcbsp->rx_irq_completion);
783 err = request_irq(mcbsp->rx_irq,
784 omap_mcbsp_rx_irq_handler,
783 0, "McBSP", (void *)mcbsp); 785 0, "McBSP", (void *)mcbsp);
784 if (err != 0) { 786 if (err != 0) {
785 dev_err(mcbsp->dev, "Unable to request RX IRQ %d " 787 dev_err(mcbsp->dev, "Unable to request RX IRQ %d "
786 "for McBSP%d\n", mcbsp->rx_irq, 788 "for McBSP%d\n", mcbsp->rx_irq,
787 mcbsp->id); 789 mcbsp->id);
788 goto err_free_irq; 790 goto err_free_irq;
791 }
789 } 792 }
790 } 793 }
791 794
@@ -835,7 +838,8 @@ void omap_mcbsp_free(unsigned int id)
835 838
836 if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) { 839 if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) {
837 /* Free IRQs */ 840 /* Free IRQs */
838 free_irq(mcbsp->rx_irq, (void *)mcbsp); 841 if (mcbsp->rx_irq)
842 free_irq(mcbsp->rx_irq, (void *)mcbsp);
839 free_irq(mcbsp->tx_irq, (void *)mcbsp); 843 free_irq(mcbsp->tx_irq, (void *)mcbsp);
840 } 844 }
841 845