Hello!

I'm quite new to linux and Open Firmware.

I have a PPC processor. To this I have a Compact Flash connected. The Compact 
Flash is using external interrupt 0 of the processor.
In my DTS file I have specified a Compact Flash node and within it I have an 
interrupt element:
interrupt = <0 2 0 0>;

Here I thought the first number was the ID of the interrupt and the second one 
should be a number indicating how the interrupt is triggered (high, low, 
raising, falling).

The interrupt is active low.

But I could not get it to work which ever value I chose.

Looking in the code I found this in function __devinit pata_of_platform_probe 
in file pata_of_platform.c:

        ret = of_irq_to_resource(dn, 0, &irq_res);
        if (ret == NO_IRQ)
                irq_res.start = irq_res.end = 0;
        else
                irq_res.flags = 0;

Here "flags" will be zero whatever I do in the DTS. As far as I can understand 
the flags are defined in interrupts.h:
#define IRQF_TRIGGER_NONE       0x00000000
#define IRQF_TRIGGER_RISING     0x00000001
#define IRQF_TRIGGER_FALLING    0x00000002
#define IRQF_TRIGGER_HIGH       0x00000004
#define IRQF_TRIGGER_LOW        0x00000008

So modifying the code to:
        else
                irq_res.flags = 2;

I get it to work.

Could someone please explain to me why the "flags" parameter is hardcoded zero 
or just point in a good direction.

Thank you

BR
Robert
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to