From: Kenn H. <ke...@us...> - 2005-07-24 21:37:57
|
Update of /cvsroot/linux-vax/kernel-2.5/drivers/input/keyboard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25021/drivers/input/keyboard Modified Files: lkkbd.c Log Message: Merge with 2.6.12 Index: lkkbd.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.5/drivers/input/keyboard/lkkbd.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- lkkbd.c 6 Mar 2005 06:54:16 -0000 1.31 +++ lkkbd.c 24 Jul 2005 21:36:46 -0000 1.32 @@ -417,7 +417,7 @@ lkkbd_interrupt (struct serio *serio, unsigned char data, unsigned int flags, struct pt_regs *regs) { - struct lkkbd *lk = serio->private; + struct lkkbd *lk = serio_get_drvdata (serio); int i; DBG (KERN_INFO "Got byte 0x%02x\n", data); @@ -623,19 +623,16 @@ /* * lkkbd_connect() probes for a LK keyboard and fills the necessary structures. */ -static void +static int lkkbd_connect (struct serio *serio, struct serio_driver *drv) { struct lkkbd *lk; int i; - - if ((serio->type & SERIO_TYPE) != SERIO_RS232) - return; - if ((serio->type & SERIO_PROTO) != SERIO_LKKBD) - return; + int err; if (!(lk = kmalloc (sizeof (struct lkkbd), GFP_KERNEL))) - return; + return -ENOMEM; + memset (lk, 0, sizeof (struct lkkbd)); init_input_dev (&lk->dev); @@ -665,11 +662,13 @@ lk->dev.event = lkkbd_event; lk->dev.private = lk; - serio->private = lk; + serio_set_drvdata (serio, lk); - if (serio_open (serio, drv)) { + err = serio_open (serio, drv); + if (err) { + serio_set_drvdata (serio, NULL); kfree (lk); - return; + return err; } sprintf (lk->name, "DEC LK keyboard"); @@ -691,6 +690,8 @@ printk (KERN_INFO "input: %s on %s, initiating reset\n", lk->name, serio->phys); lk->serio->write (lk->serio, LK_CMD_POWERCYCLE_RESET); + + return 0; } /* @@ -699,18 +700,32 @@ static void lkkbd_disconnect (struct serio *serio) { - struct lkkbd *lk = serio->private; + struct lkkbd *lk = serio_get_drvdata (serio); input_unregister_device (&lk->dev); serio_close (serio); + serio_set_drvdata (serio, NULL); kfree (lk); } +static struct serio_device_id lkkbd_serio_ids[] = { + { + .type = SERIO_RS232, + .proto = SERIO_LKKBD, + .id = SERIO_ANY, + .extra = SERIO_ANY, + }, + { 0 } +}; + +MODULE_DEVICE_TABLE(serio, lkkbd_serio_ids); + static struct serio_driver lkkbd_drv = { .driver = { .name = "lkkbd", }, .description = DRIVER_DESC, + .id_table = lkkbd_serio_ids, .connect = lkkbd_connect, .disconnect = lkkbd_disconnect, .interrupt = lkkbd_interrupt, |