diff options
author | Kevin Hilman <khilman@mvista.com> | 2007-02-06 23:41:37 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-02-18 05:59:48 -0500 |
commit | 62578cbfaa50df06b3bb6e4231adc3b911a3d4b4 (patch) | |
tree | eb74bb90e057ae36aee61c88d9253af1a156b924 | |
parent | f69eda00d4e9808f0ddc88826278f93512cd2c98 (diff) |
[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 <khilman@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | sound/arm/aaci.c | 7 |
1 files changed, 4 insertions, 3 deletions
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) | |||
164 | /* | 164 | /* |
165 | * Interrupt support. | 165 | * Interrupt support. |
166 | */ | 166 | */ |
167 | static void aaci_fifo_irq(struct aaci *aaci, u32 mask) | 167 | static void aaci_fifo_irq(struct aaci *aaci, int channel, u32 mask) |
168 | { | 168 | { |
169 | if (mask & ISR_URINTR) { | 169 | if (mask & ISR_URINTR) { |
170 | writel(ICLR_TXUEC1, aaci->base + AACI_INTCLR); | 170 | dev_dbg(&aaci->dev->dev, "TX underrun on chan %d\n", channel); |
171 | writel(ICLR_TXUEC1 << channel, aaci->base + AACI_INTCLR); | ||
171 | } | 172 | } |
172 | 173 | ||
173 | if (mask & ISR_TXINTR) { | 174 | if (mask & ISR_TXINTR) { |
@@ -233,7 +234,7 @@ static irqreturn_t aaci_irq(int irq, void *devid) | |||
233 | u32 m = mask; | 234 | u32 m = mask; |
234 | for (i = 0; i < 4; i++, m >>= 7) { | 235 | for (i = 0; i < 4; i++, m >>= 7) { |
235 | if (m & 0x7f) { | 236 | if (m & 0x7f) { |
236 | aaci_fifo_irq(aaci, m); | 237 | aaci_fifo_irq(aaci, i, m); |
237 | } | 238 | } |
238 | } | 239 | } |
239 | } | 240 | } |