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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.