Does cat /proc/interrupts give show anything for 214.

Check whether It is going to architecture specific impelemtation of gpio_to_irq


On Tue, Sep 9, 2014 at 8:26 AM, neo star <[email protected]> wrote:

> Hi
>
> I see that some function definitions are missing in your code. Can you
> share those as well, so that i too can try and figure out the problem.
> Especially the functions like gpio_to_irq() ...
> Thanks.
>
>
> On Tuesday, August 26, 2014 7:38:01 PM UTC+5:30, Siddarth Sharma wrote:
>>
>> I am toggling the input into a GPIO line on my BeagleBone from high to
>> low every 500 ms using an Atmel uC. I have registered a handler for this in
>> my Linux Kernel Module, but the handler is not being called for some reason.
>>
>> My module code is -
>>
>> #define GPIO 54
>> #define GPIO_INT_NAME  "gpio_int"
>>
>> #define GPIO_HIGH gpio_get_value(GPIO)
>> #define GPIO_LOW (gpio_get_value(GPIO) == 0)
>> short int irq_any_gpio    = 0;
>> int count =0;
>>
>> enum { falling, rising } type;
>> static irqreturn_t r_irq_handler(int irq, void *dev_id)
>>  {
>>       count++;
>>     printk(KERN_DEBUG "interrupt received (irq: %d)\n", irq);
>>         if (irq == gpio_to_irq(GPIO))
>>     {
>>
>>         type = GPIO_LOW ? falling : rising;
>>
>>         if(type == falling)
>>         {
>>             printk("gpio pin is low\n");
>>         }
>>         else
>>             printk("gpio pin is high\n");
>>
>>     }
>>
>>     return IRQ_HANDLED;
>> }
>>
>>
>> void r_int_config(void) {
>>
>>    if (gpio_request(GPIO, GPIO_INT_NAME ))
>>    {
>>       printk("GPIO request failure: %s\n", GPIO_INT_NAME );
>>       return;
>>    }
>>
>>    if ( (irq_any_gpio = gpio_to_irq(GPIO)) < 0 ) {
>>       printk("GPIO to IRQ mapping failure %s\n",GPIO_INT_NAME );
>>       return;
>>    }
>>
>>    printk(KERN_NOTICE "Mapped int %d\n", irq_any_gpio);
>>
>>    if (request_irq(irq_any_gpio,(irq_handler_t ) r_irq_handler, 
>> IRQF_TRIGGER_HIGH, GPIO_INT_NAME, NULL))
>>    {
>>       printk("Irq Request failure\n");
>>       return;
>>    }
>>
>>    return;
>> }
>>
>> void r_int_release(void) {
>>
>>    free_irq(gpio_to_irq(GPIO), NULL);
>>     gpio_free(GPIO);;
>>    return;
>> }
>>
>> int init_module(void)
>> {
>>         printk("<1>Hello World\n");
>>     r_int_config();
>>         return 0;
>> }
>>
>> On calling insmod interrupt_test.ko, i get the following message
>>
>> [   76.594543] Hello World
>> [   76.597137] Mapped int 214
>>
>> But now when I start toggling the input into this gpio pin, the interrupt
>> handler doesn't get called and the message - "interrupt received" is not
>> being displayed.
>>
>> How do I solve this ? What's causing the problem?
>>
>  --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to