use of gpio_int_name
On Tuesday, 26 August 2014 19:38:01 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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/58c134dc-0d16-4359-8406-c7ec9794895c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.