Commit e51ec143 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://kernel.bkbits.net/vojtech/for-linus

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents 1a9fa650 323d8fe1
...@@ -482,7 +482,7 @@ static int i8042_set_mux_mode(unsigned int mode, unsigned char *mux_version) ...@@ -482,7 +482,7 @@ static int i8042_set_mux_mode(unsigned int mode, unsigned char *mux_version)
if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0x0f) if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0x0f)
return -1; return -1;
param = mode ? 0x56 : 0xf6; param = mode ? 0x56 : 0xf6;
if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0xa9) if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != (mode ? 0xa9 : 0x09))
return -1; return -1;
param = mode ? 0xa4 : 0xa5; param = mode ? 0xa4 : 0xa5;
if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param == (mode ? 0x5b : 0x5a)) if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param == (mode ? 0x5b : 0x5a))
...@@ -787,7 +787,8 @@ void i8042_controller_reset(void) ...@@ -787,7 +787,8 @@ void i8042_controller_reset(void)
* Disable MUX mode if present. * Disable MUX mode if present.
*/ */
i8042_set_mux_mode(0, NULL); if (i8042_mux_present)
i8042_set_mux_mode(0, NULL);
/* /*
* Restore the original control register setting. * Restore the original control register setting.
......
...@@ -60,9 +60,9 @@ int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout) ...@@ -60,9 +60,9 @@ int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout)
serio_continue_rx(ps2dev->serio); serio_continue_rx(ps2dev->serio);
if (serio_write(ps2dev->serio, byte) == 0) if (serio_write(ps2dev->serio, byte) == 0)
wait_event_interruptible_timeout(ps2dev->wait, wait_event_timeout(ps2dev->wait,
!(ps2dev->flags & PS2_FLAG_ACK), !(ps2dev->flags & PS2_FLAG_ACK),
msecs_to_jiffies(timeout)); msecs_to_jiffies(timeout));
serio_pause_rx(ps2dev->serio); serio_pause_rx(ps2dev->serio);
ps2dev->flags &= ~PS2_FLAG_ACK; ps2dev->flags &= ~PS2_FLAG_ACK;
...@@ -115,8 +115,8 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command) ...@@ -115,8 +115,8 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command)
*/ */
timeout = msecs_to_jiffies(command == PS2_CMD_RESET_BAT ? 4000 : 500); timeout = msecs_to_jiffies(command == PS2_CMD_RESET_BAT ? 4000 : 500);
wait_event_interruptible_timeout(ps2dev->wait, timeout = wait_event_timeout(ps2dev->wait,
!(ps2dev->flags & PS2_FLAG_CMD1), timeout); !(ps2dev->flags & PS2_FLAG_CMD1), timeout);
if (ps2dev->cmdcnt && timeout > 0) { if (ps2dev->cmdcnt && timeout > 0) {
...@@ -147,8 +147,8 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command) ...@@ -147,8 +147,8 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command)
serio_continue_rx(ps2dev->serio); serio_continue_rx(ps2dev->serio);
} }
wait_event_interruptible_timeout(ps2dev->wait, wait_event_timeout(ps2dev->wait,
!(ps2dev->flags & PS2_FLAG_CMD), timeout); !(ps2dev->flags & PS2_FLAG_CMD), timeout);
} }
if (param) if (param)
...@@ -259,7 +259,7 @@ int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data) ...@@ -259,7 +259,7 @@ int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data)
ps2dev->flags |= PS2_FLAG_CMD | PS2_FLAG_CMD1; ps2dev->flags |= PS2_FLAG_CMD | PS2_FLAG_CMD1;
ps2dev->flags &= ~PS2_FLAG_ACK; ps2dev->flags &= ~PS2_FLAG_ACK;
wake_up_interruptible(&ps2dev->wait); wake_up(&ps2dev->wait);
if (data != PS2_RET_ACK) if (data != PS2_RET_ACK)
ps2_handle_response(ps2dev, data); ps2_handle_response(ps2dev, data);
...@@ -281,12 +281,12 @@ int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data) ...@@ -281,12 +281,12 @@ int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data)
if (ps2dev->flags & PS2_FLAG_CMD1) { if (ps2dev->flags & PS2_FLAG_CMD1) {
ps2dev->flags &= ~PS2_FLAG_CMD1; ps2dev->flags &= ~PS2_FLAG_CMD1;
if (ps2dev->cmdcnt) if (ps2dev->cmdcnt)
wake_up_interruptible(&ps2dev->wait); wake_up(&ps2dev->wait);
} }
if (!ps2dev->cmdcnt) { if (!ps2dev->cmdcnt) {
ps2dev->flags &= ~PS2_FLAG_CMD; ps2dev->flags &= ~PS2_FLAG_CMD;
wake_up_interruptible(&ps2dev->wait); wake_up(&ps2dev->wait);
} }
return 1; return 1;
...@@ -298,7 +298,7 @@ void ps2_cmd_aborted(struct ps2dev *ps2dev) ...@@ -298,7 +298,7 @@ void ps2_cmd_aborted(struct ps2dev *ps2dev)
ps2dev->nak = 1; ps2dev->nak = 1;
if (ps2dev->flags & (PS2_FLAG_ACK | PS2_FLAG_CMD)) if (ps2dev->flags & (PS2_FLAG_ACK | PS2_FLAG_CMD))
wake_up_interruptible(&ps2dev->wait); wake_up(&ps2dev->wait);
ps2dev->flags = 0; ps2dev->flags = 0;
} }
......
...@@ -64,6 +64,9 @@ static int serport_ldisc_open(struct tty_struct *tty) ...@@ -64,6 +64,9 @@ static int serport_ldisc_open(struct tty_struct *tty)
struct serio *serio; struct serio *serio;
char name[64]; char name[64];
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
serport = kmalloc(sizeof(struct serport), GFP_KERNEL); serport = kmalloc(sizeof(struct serport), GFP_KERNEL);
serio = kmalloc(sizeof(struct serio), GFP_KERNEL); serio = kmalloc(sizeof(struct serio), GFP_KERNEL);
if (unlikely(!serport || !serio)) { if (unlikely(!serport || !serio)) {
......
...@@ -86,12 +86,12 @@ static const struct hid_usage_entry hid_usage_table[] = { ...@@ -86,12 +86,12 @@ static const struct hid_usage_entry hid_usage_table[] = {
{0, 0x92, "D-PadRight"}, {0, 0x92, "D-PadRight"},
{0, 0x93, "D-PadLeft"}, {0, 0x93, "D-PadLeft"},
{ 7, 0, "Keyboard" }, { 7, 0, "Keyboard" },
{ 8, 0, "LED" },
{0, 0x01, "NumLock"}, {0, 0x01, "NumLock"},
{0, 0x02, "CapsLock"}, {0, 0x02, "CapsLock"},
{0, 0x03, "ScrollLock"}, {0, 0x03, "ScrollLock"},
{0, 0x04, "Compose"}, {0, 0x04, "Compose"},
{0, 0x05, "Kana"}, {0, 0x05, "Kana"},
{ 8, 0, "LED" },
{ 9, 0, "Button" }, { 9, 0, "Button" },
{ 10, 0, "Ordinal" }, { 10, 0, "Ordinal" },
{ 12, 0, "Consumer" }, { 12, 0, "Consumer" },
......
...@@ -185,9 +185,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel ...@@ -185,9 +185,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
break; break;
case HID_UP_LED: case HID_UP_LED:
if (usage->hid - 1 >= LED_MAX) if (((usage->hid - 1) & 0xffff) >= LED_MAX)
goto ignore; goto ignore;
map_led(usage->hid - 1); map_led((usage->hid - 1) & 0xffff);
break; break;
case HID_UP_DIGITIZER: case HID_UP_DIGITIZER:
...@@ -492,6 +492,9 @@ static int hidinput_input_event(struct input_dev *dev, unsigned int type, unsign ...@@ -492,6 +492,9 @@ static int hidinput_input_event(struct input_dev *dev, unsigned int type, unsign
if (type == EV_FF) if (type == EV_FF)
return hid_ff_event(hid, dev, type, code, value); return hid_ff_event(hid, dev, type, code, value);
if (type != EV_LED)
return -1;
if ((offset = hid_find_field(hid, type, code, &field)) == -1) { if ((offset = hid_find_field(hid, type, code, &field)) == -1) {
warn("event field not found"); warn("event field not found");
return -1; return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment