void pasintr(int irq, void *dev_id, struct pt_regs *dummy) { int status; status = pas_read(0x0B89); pas_write(status, 0x0B89); /* Clear interrupt */ if (status & 0x08) { pas_pcm_interrupt(status, 1); status &= ~0x08; } if (status & 0x10) { pas_midi_interrupt(); status &= ~0x10; } }
static irqreturn_t pasintr(int irq, void *dev_id) { int status; status = pas_read(0x0B89); pas_write(status, 0x0B89); /* Clear interrupt */ if (status & 0x08) { pas_pcm_interrupt(status, 1); status &= ~0x08; } if (status & 0x10) { pas_midi_interrupt(); status &= ~0x10; } return IRQ_HANDLED; }
void pasintr(int irq) { int status; status = pas_read(INTERRUPT_STATUS); pas_write(status, INTERRUPT_STATUS); /* Clear interrupt */ if (status & I_S_PCM_SAMPLE_BUFFER_IRQ) { #ifdef CONFIG_AUDIO pas_pcm_interrupt(status, 1); #endif status &= ~I_S_PCM_SAMPLE_BUFFER_IRQ; } if (status & I_S_MIDI_IRQ) { #ifdef CONFIG_MIDI pas_midi_interrupt(); #endif status &= ~I_S_MIDI_IRQ; } }