GPIO IRQ on P1022

Felix Radensky felix at embedded-sol.com
Mon Aug 1 01:51:54 EST 2011


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:
>>
>> 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);
>>
>>      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.


More information about the Linuxppc-dev mailing list