From: Kevin Hilman Date: Wed, 7 Feb 2007 04:41:37 +0000 (+0100) Subject: [ARM] 4138/1: AACI: multiple channel support for IRQ handling X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=62578cbfaa50df06b3bb6e4231adc3b911a3d4b4;p=openwrt%2Fstaging%2Fblogic.git [ARM] 4138/1: AACI: multiple channel support for IRQ handling Add AACI channel support to interrupt handler. Also, clear underrun interrupt for correct channel. Signed-off-by: Kevin Hilman Signed-off-by: Russell King --- diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c index 53675cf4de44..b85df793cdce 100644 --- a/sound/arm/aaci.c +++ b/sound/arm/aaci.c @@ -164,10 +164,11 @@ static inline void aaci_chan_wait_ready(struct aaci_runtime *aacirun) /* * Interrupt support. */ -static void aaci_fifo_irq(struct aaci *aaci, u32 mask) +static void aaci_fifo_irq(struct aaci *aaci, int channel, u32 mask) { if (mask & ISR_URINTR) { - writel(ICLR_TXUEC1, aaci->base + AACI_INTCLR); + dev_dbg(&aaci->dev->dev, "TX underrun on chan %d\n", channel); + writel(ICLR_TXUEC1 << channel, aaci->base + AACI_INTCLR); } if (mask & ISR_TXINTR) { @@ -233,7 +234,7 @@ static irqreturn_t aaci_irq(int irq, void *devid) u32 m = mask; for (i = 0; i < 4; i++, m >>= 7) { if (m & 0x7f) { - aaci_fifo_irq(aaci, m); + aaci_fifo_irq(aaci, i, m); } } }