diff -u b/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c --- b/drivers/input/keyboard/atkbd.c 2004-10-21 14:32:30 -07:00 +++ b/drivers/input/keyboard/atkbd.c 2004-10-21 14:25:52 -07:00 @@ -207,7 +207,7 @@ static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf, ssize_t (*handler)(struct atkbd *, char *)); static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, - ssize_t (*handler)(struct atkbd *, const char *, size_t)); + int (*handler)(struct atkbd *, const char *, size_t)); #define ATKBD_DEFINE_ATTR(_name) \ static ssize_t atkbd_show_##_name(struct atkbd *, char *); \ static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t); \ @@ -526,11 +526,8 @@ return 0; } - if (param[0] != 0xab && param[0] != 0xac && /* Regular and NCD Sun keyboards */ - param[0] != 0x2b && param[0] != 0x5d && /* Trust keyboard, raw and translated */ - param[0] != 0x60 && param[0] != 0x47) /* NMB SGI keyboard, raw and translated */ + if (param[0] != 0xab && param[0] != 0xac) return -1; - atkbd->id = (param[0] << 8) | param[1]; if (atkbd->id == 0xaca1 && atkbd->translated) { @@ -929,7 +926,7 @@ } static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count, - ssize_t (*handler)(struct atkbd *, const char *, size_t)) + int (*handler)(struct atkbd *, const char *, size_t)) { struct serio *serio = to_serio_port(dev); struct atkbd *atkbd; diff -u b/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h --- b/drivers/input/mouse/psmouse.h 2004-10-21 14:32:30 -07:00 +++ b/drivers/input/mouse/psmouse.h 2004-10-21 14:25:52 -07:00 @@ -86,7 +86,7 @@ ssize_t psmouse_attr_show_helper(struct device *dev, char *buf, ssize_t (*handler)(struct psmouse *, char *)); ssize_t psmouse_attr_set_helper(struct device *dev, const char *buf, size_t count, - ssize_t (*handler)(struct psmouse *, const char *, size_t)); + int (*handler)(struct psmouse *, const char *, size_t)); #define PSMOUSE_DEFINE_ATTR(_name) \ static ssize_t psmouse_attr_show_##_name(struct psmouse *, char *); \ diff -u b/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h --- b/drivers/input/serio/i8042-x86ia64io.h 2004-10-21 14:32:30 -07:00 +++ b/drivers/input/serio/i8042-x86ia64io.h 2004-10-21 14:25:52 -07:00 @@ -216,7 +216,7 @@ static struct acpi_driver i8042_acpi_kbd_driver = { .name = "i8042", - .ids = "PNP0303,PNP030B", + .ids = "PNP0303", .ops = { .add = i8042_acpi_kbd_add, }, @@ -224,7 +224,7 @@ static struct acpi_driver i8042_acpi_aux_driver = { .name = "i8042", - .ids = "PNP0F13,SYN0801", + .ids = "PNP0F13", .ops = { .add = i8042_acpi_aux_add, }, diff -u b/drivers/input/serio/libps2.c b/drivers/input/serio/libps2.c --- b/drivers/input/serio/libps2.c 2004-10-21 14:32:30 -07:00 +++ b/drivers/input/serio/libps2.c 2004-10-21 14:25:52 -07:00 @@ -52,7 +52,7 @@ * ps2_sendbyte() can only be called from a process context */ -int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout) +int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte) { serio_pause_rx(ps2dev->serio); ps2dev->nak = 1; @@ -62,7 +62,7 @@ if (serio_write(ps2dev->serio, byte) == 0) wait_event_interruptible_timeout(ps2dev->wait, !(ps2dev->flags & PS2_FLAG_ACK), - msecs_to_jiffies(timeout)); + msecs_to_jiffies(200)); serio_pause_rx(ps2dev->serio); ps2dev->flags &= ~PS2_FLAG_ACK; @@ -88,6 +88,8 @@ down(&ps2dev->cmd_sem); + timeout = msecs_to_jiffies(command == PS2_CMD_RESET_BAT ? 4000 : 500); + serio_pause_rx(ps2dev->serio); ps2dev->flags = command == PS2_CMD_GETID ? PS2_FLAG_WAITID : 0; ps2dev->cmdcnt = receive; @@ -96,47 +98,23 @@ ps2dev->cmdbuf[(receive - 1) - i] = param[i]; serio_continue_rx(ps2dev->serio); - /* - * Some devices (Synaptics) peform the reset before - * ACKing the reset command, and so it can take a long - * time before the ACK arrrives. - */ if (command & 0xff) - if (ps2_sendbyte(ps2dev, command & 0xff, - command == PS2_CMD_RESET_BAT ? 1000 : 200)) + if (ps2_sendbyte(ps2dev, command & 0xff)) goto out; for (i = 0; i < send; i++) - if (ps2_sendbyte(ps2dev, param[i], 200)) + if (ps2_sendbyte(ps2dev, param[i])) goto out; - /* - * The reset command takes a long time to execute. - */ - timeout = msecs_to_jiffies(command == PS2_CMD_RESET_BAT ? 4000 : 500); - - wait_event_interruptible_timeout(ps2dev->wait, - !(ps2dev->flags & PS2_FLAG_CMD1), timeout); + timeout = wait_event_interruptible_timeout(ps2dev->wait, + !(ps2dev->flags & PS2_FLAG_CMD1), timeout); if (ps2dev->cmdcnt && timeout > 0) { - - if (command == PS2_CMD_RESET_BAT && timeout > msecs_to_jiffies(100)) { - /* - * Device has sent the first response byte - * after a reset command, reset is thus done, - * shorten the timeout. The next byte will come - * soon (keyboard) or not at all (mouse). - */ + if (command == PS2_CMD_RESET_BAT && jiffies_to_msecs(timeout) > 100) timeout = msecs_to_jiffies(100); - } if (command == PS2_CMD_GETID && - ps2dev->cmdbuf[receive - 1] != 0xab && /* Regular keyboards */ - ps2dev->cmdbuf[receive - 1] != 0xac && /* NCD Sun keyboard */ - ps2dev->cmdbuf[receive - 1] != 0x2b && /* Trust keyboard, translated */ - ps2dev->cmdbuf[receive - 1] != 0x5d && /* Trust keyboard */ - ps2dev->cmdbuf[receive - 1] != 0x60 && /* NMB SGI keyboard, translated */ - ps2dev->cmdbuf[receive - 1] != 0x47) { /* NMB SGI keyboard */ + ps2dev->cmdbuf[receive - 1] != 0xab && ps2dev->cmdbuf[receive - 1] != 0xac) { /* * Device behind the port is not a keyboard * so we don't need to wait for the 2nd byte diff -u b/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c --- b/drivers/usb/input/hid-core.c 2004-10-21 14:32:30 -07:00 +++ b/drivers/usb/input/hid-core.c 2004-10-21 14:25:52 -07:00 @@ -1466,12 +1466,11 @@ #define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 #define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 -#define USB_VENDOR_ID_CODEMERCS 0x07c0 -#define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500 -#define USB_DEVICE_ID_CODEMERCS_IOW24 0x1501 -#define USB_DEVICE_ID_CODEMERCS_IOW48 0x1502 -#define USB_DEVICE_ID_CODEMERCS_IOW28 0x1503 - +#define USB_VENDOR_ID_CODEMERCS 0x07c0 +#define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500 +#define USB_DEVICE_ID_CODEMERCS_IOW24 0x1501 +#define USB_DEVICE_ID_CODEMERCS_IOW48 0x1502 +#define USB_DEVICE_ID_CODEMERCS_IOW28 0x1503 static struct hid_blacklist { __u16 idVendor; diff -u b/include/linux/libps2.h b/include/linux/libps2.h --- b/include/linux/libps2.h 2004-10-21 14:32:30 -07:00 +++ b/include/linux/libps2.h 2004-10-21 14:25:52 -07:00 @@ -40,7 +40,7 @@ }; void ps2_init(struct ps2dev *ps2dev, struct serio *serio); -int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout); +int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte); int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int command); int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data);