[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[microblaze-uclinux] keyboard
hi,
I added this keyboard interrupt handler in the linux/drivers/char.
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/config.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/tqueue.h>
#include <linux/init.h>
#include <linux/kbd_kern.h>
#include <asm/irq.h>
#include <asm/io.h>
#ifdef CONFIG_MICROBLAZE
#include <asm/mbvanilla.h>
#include <asm/microblaze_gpio.h>
#include <asm/xparameters.h>
#endif
static void got_char(unsigned long *scancode)
{
enable_irq(4);
printk("Scan Code %x %s.\n",
(int) *((char *) scancode) & 0x7F,
*((char *) scancode) & 0x80 ? "Released" : "Pressed");
}
EXPORT_SYMBOL(keyboard_tasklet);
DECLARE_TASKLET_DISABLED(keyboard_tasklet,got_char,0);
void ps2irq_handler(int irq, void *dev_id, struct pt_regs *regs)
{
static unsigned char scancode;
unsigned char status;
microblaze_gpio_write(MICROBLAZE_GPIO_BASE_ADDR,0x06);
microblaze_gpio_write(MICROBLAZE_GPIO_BASE_ADDR,0x00);
microblaze_gpio_write(MICROBLAZE_GPIO_BASE_ADDR,0x06);
/* Read keyboard status */
status = inb(XPAR_MY_PS2_BASEADDR+0x08);
scancode = inb(XPAR_MY_PS2_BASEADDR+0x00);
printk("%x",scancode);
}
int __init ps2kbd_init(void)
{
int irq;
irq = request_irq (4, ps2irq_handler, SA_INTERRUPT, "keyboard", NULL);
if (irq)
printk("Keyboard irq not registered. Error: %d\n", irq);
printk("keyboard initialised on IRQ 4 successfully\n");
tasklet_enable(&keyboard_tasklet);
tasklet_schedule(&keyboard_tasklet);
return 0;
}
while booting I am getting
enable_irq(4) unbalanced from 801202d08
keyboard initialised on IRQ 4 successfully
Scancode 38 released.
ps2irq_handler is not getting executed when I enable the irq.why did it shows unbalanced from a particular address.Any idea.
Regards
Devi
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/