Hi Kavita

A generic question regarding interrupts.
If i register an interrupt using request_threaded_irq() or request_irq() 
will that be listed in /proc/interrupts ?

On Tuesday, September 9, 2014 11:17:19 AM UTC+5:30, kavitha wrote:
>
>
> 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 <prag....@gmail.com <javascript:>
> > 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 beagleboard...@googlegroups.com <javascript:>.
>> 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 beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to