Hi David, On Tuesday 24 January 2006 20:07, David Hawkins wrote: > I'm writing a simple driver to test IRQ handling on the > AMCC Yosemite board. The board has an 8x2 header with several > GPIO pins, a number of which can be configured as IRQ inputs. > > I have setup GPIO46 as output, and GPIO47 as input, and > selected IRQ8 on that pin.
OK. So far good. <snip> > So, is there a kernel wide interrupt enable mask that I really > should be using? Or, an interrupt enable API? I initially > thought that when I registered an interrupt using > request_irq() that the kernel would go off an enable the > requested IRQ, but this test shows that it did not. Yes, the request_irq() should enable the requested IRQ. You seem to have used the wrong IRQ number though. Please see below. > #include <linux/module.h> /* kernel modules */ > #include <linux/interrupt.h>/* request_irq(), etc */ > #include <asm/io.h> /* ioremap64(), iounmap(), readl() */ > > static char *name = "yosemite_irq"; > static unsigned long long base = 0x0EF600C00; // 36-bit address > static unsigned int size = 0x44; > static char *kernel; > static int irq = 8; You are using the "External IRQ 8". This results in IRQ number 19 of the 2nd interrupt controller of the 440ep. So please try (19+32) as the IRQ number upon requesting the interrupt. Best regards, Stefan