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.
