Re: GPIO IRQ on P1022
From: Felix Radensky <hidden>
Date: 2011-07-31 15:51:54
Hi Wolfgang, On 07/31/2011 06:19 PM, Wolfgang Grandegger wrote:
On 07/31/2011 12:38 PM, Felix Radensky wrote:quoted
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: GPIOs 160-191, /soc@ffe00000/gpio-controller@f200: GPIOs 192-223, /soc@ffe00000/gpio-controller@f100: GPIOs 224-255, /soc@ffe00000/gpio-controller@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); Interrupt handler reads FPGA interrupt status register to clear interrupt and exits. What happens when I load my driver is single execution of interrupt handler followed by system freeze. Even if I call disable_irq() in interrupt handler the system still freezes.Try disable_irq_nosync() instead.
Thanks. However this doesn't help either. Felix.