[an error occurred while processing this directive]
|
/*
* gpio_irq.c - GPIO IRQ driver
* writes to /var/log/messages timestamp when event occurs.
*
* pass module parameter gpio to indicate which pin #
* >>>> insmod gpio_irq.ko gpio=62
*
* Andy Triboletti 11/07/2005
*
*/
#include int gpio = 0; // if not set // get input (gpio as int) from the insmod command return IRQ_HANDLED; if(gpio == 0){ else{ printk("KERN_ALERT Using pin: %i at %i.%d", gpio, (int)timecount.tv_sec, (int)timecount.tv_usec ); static void gpio_irq_exit(void) printk(KERN_ALERT "Goodbye, cruel world\n"); module_init(gpio_irq_init);
E-mail:
info@telesys.ru
#include
#include
#include
#include
#include
#include
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
MODULE_PARM(gpio, "i");
//this handler function gets called everytime an irq request happens
static irqreturn_t my_handler(int irq, void *dev_id, struct pt_regs *regs){
struct timeval timecount;
do_gettimeofday(&timecount);
printk("KERN_ALERT Using pin: %i at %i.%d", gpio, (int)timecount.tv_sec, (int)timecount.tv_usec );
}
static int gpio_irq_init(void)
{
printk("KERN_ALERT Next time, do insmod param gpio=
return 1;
}
struct timeval timecount;
do_gettimeofday(&timecount);
pxa_gpio_mode(gpio | GPIO_IN );
set_irq_type(IRQ_GPIO(gpio) , IRQT_FALLING);
request_irq(IRQ_GPIO(gpio), my_handler, 0, "my handler", NULL);
printk(KERN_ALERT "Hello, world\n");
return 0;
}
}
{
free_irq(IRQ_GPIO(gpio), NULL);
}
module_exit(gpio_irq_exit);
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание