From: Adrian M. <ad...@mc...> - 2002-01-01 18:15:10
|
I am experimenting with the AICA interrupt - HW_EVENT_AICA_SYS - but I am getting odd results: This is the request call: request_irq(HW_EVENT_AICA_SYS, aica_interrupt_handler, SA_INTERRUPT, "AICA", NULL); And this is the (very simple!) handler: //////////////////////////////////////////////////////////////// // Experimental interrupt handler // //////////////////////////////////////////////////////////////// void aica_interrupt_handler(int i, void* p, struct pt_regs * ptr) { } This is triggered thus: static ssize_t aica_audio_write(struct file *file, const char *buffer, size_t count, loff_t * ppos) { if (count < 1) return 0; //enable aica interrupts writel(0x20, 0xa07028b4); spu_write_wait(); ssize_t ret; ret = aica_audio_do_write(file, buffer, count, ppos); writel(0x20, 0xa07028b8); spu_write_wait(); //turn off aica interrupts writel(0x20, 0xa07028bc); spu_write_wait(); return ret; } When this runs every call to writel(0x20, 0xa07028b8) appears to generate "unexpected IRQ trap at vector 0b" (though system output otherwise is normal). What have I done wrong? Adrian |