aboutsummaryrefslogtreecommitdiffstats
path: root/sound/arm/aaci.c
diff options
context:
space:
mode:
authorKevin Hilman <khilman@mvista.com>2007-02-06 23:41:37 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-18 05:59:48 -0500
commit62578cbfaa50df06b3bb6e4231adc3b911a3d4b4 (patch)
treeeb74bb90e057ae36aee61c88d9253af1a156b924 /sound/arm/aaci.c
parentf69eda00d4e9808f0ddc88826278f93512cd2c98 (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>
Diffstat (limited to 'sound/arm/aaci.c')
-rw-r--r--sound/arm/aaci.c7
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 */
167static void aaci_fifo_irq(struct aaci *aaci, u32 mask) 167static 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 }