Yes it does show in cat /proc/interrupts
It doesnot matter you use request_threaded_irq or request_irq
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
Here the handler will be run in interrupt context
and
request_threaded_irq(unsigned int irq, irq_handler_t handler,
irq_handler_t thread_fn,
unsigned long flags, const char *name, void *dev);
In threaded IRQ
irq_handler_t handle - Interrupt context
irq_handler_t thread_fn- Process context
This is the only difference.
Thanks
Kavitha
On Wed, Sep 10, 2014 at 8:03 AM, neo <[email protected]> wrote:
> 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 <[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.
>
--
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.