GPIO IRQ on P1022
Felix Radensky
felix at embedded-sol.com
Mon Aug 1 05:28:32 EST 2011
Hi Wolfgang,
On 07/31/2011 08:49 PM, Wolfgang Grandegger wrote:
> Hi Felix,
>
> On 07/31/2011 05:51 PM, Felix Radensky wrote:
>> Hi Wolfgang,
>>
>> On 07/31/2011 06:19 PM, Wolfgang Grandegger wrote:
>>> On 07/31/2011 12:38 PM, Felix Radensky wrote:
>>>> Hi,
>>>>
>>>> I'm running kernel 3.0 on a custom board based on Freescale P1022.
>>>> The interrupt line of on-board FPGA is connected to GPIO2_9. FPGA
>>>> IRQ is level, active low. The GPIOs are mapped like this:
> Here you say that it's a level sensitive interrupt but ...
>
>>>> GPIOs 160-191, /soc at ffe00000/gpio-controller at f200:
>>>>
>>>> GPIOs 192-223, /soc at ffe00000/gpio-controller at f100:
>>>>
>>>> GPIOs 224-255, /soc at ffe00000/gpio-controller at f000:
>>>>
>>>> I've verified that pin mixing is done correctly, and the
>>>> FPGA IRQ line is indeed configured as GPIO.
>>>>
>>>> I have the following code in my driver:
>>>>
>>>> #define FPGA_IRQ_GPIO 169
>>>>
>>>> err = gpio_request(FPGA_IRQ_GPIO, "FPGA IRQ");
>>>> if (err) {
>>>> printk(KERN_ERR "Failed to request FPGA IRQ GPIO, err=%d\n",
>>>> err);
>>>> goto out;
>>>> }
>>>>
>>>> gpio_direction_input(FPGA_IRQ_GPIO);
>>>>
>>>> irq = gpio_to_irq(FPGA_IRQ_GPIO);
>>>> if (irq< 0) {
>>>> printk(KERN_ERR "Failed to map FPGA GPIO to IRQ\n");
>>>> goto out;
>>>> }
>>>>
>>>> err = request_irq(irq, gsat_interrupt,
>>>> IRQF_TRIGGER_FALLING, DRVNAME, priv);
> .. you request here an edge triggered interrupt.
Yes, that is is correct. mpc8xxx_gpio.c driver does not allow
level sensitive interrupts, so I had no choice but to specify
IRQF_TRIGGER_FALLING.
Felix.
More information about the Linuxppc-dev
mailing list