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: > > 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. Wolfgang. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev