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.