Subject: Re: Yosemite/440EP is there a global interrupt enable mask?

From: Stefan Roese <[email-masked]>
Date: Wed, 25 Jan 2006 11:28:05 +0100

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