Subject: Re: Hooking an IRQ on a modified mpc8349emitx board

From: Oscar Takeshita <[email-masked]>
Date: Thu, 04 Sep 2008 11:44:56 -0700

Thanks Scott,

It is hooked and alive! Your couple of lines guided me through. Here's 
the outline of what I did after looking
at other powerpc drivers and the ePAPR document from Power.org:

1. Assumed that MPC83xx_IRQ_EXT1 (0x11 without offset) corresponds to IRQ1.
2. Created a node in my dts that looks like:

mydevice@40000 {
     device_type = "network";
     interrupts = <11 8>;
     interrupt-parent = < &ipic >;
}

3. On my kernel device driver I have the following outline:

struct device_node *np;
int irq;
if ((np = of_find_node_by_name(NULL, "mydevice")) == NULL) {
        printk(KERN_ERR "Can't find my device node\n");
        irq = -1;
}
else
        irq = irq_of_parse_and_map(np,0);

4. Ready to use request_irq() on irq!

Thanks,

Oscar

Scott Wood wrote:
> On Wed, Sep 03, 2008 at 03:55:41PM -0700, Oscar Takeshita wrote:
>   
>> I've been trying to hook an IRQ on a modified mpc8349emitx board without 
>> success.
>>
>> The IRQ is hooked physically to IRQ1/GPIO2[13] on the mpc8349e. No other 
>> devices are
>> tied to this pin.
>>
>> I'm using uboot 1.2.0 and kernel 2.6.22.19.
>>
>> Do I need to have a dts entry for this interrupt in order to make
>> request_irq() succeed?
>>
>> How can I find the IRQ number? I tried probe_irq_on/off unfortunately it 
>> did not work.
>> Would it be MPC83xx_IRQ_EXT1 in arch/powerpc/include/asm/mpc83xx.h ?
>>
>> I'm new doing kernel work. Any hints appreciated.
>>     
>
> You need to describe the IRQ in a device tree node and use
> irq_of_parse_and_map().  request_irq() takes virtual IRQ numbers.
>
> Maybe we should put together an arch/powerpc FAQ...
>
> -Scott
>
>
>