Commit 82e8290d authored by Nathan Scott's avatar Nathan Scott

Merge nathans@xfs.org:/export/hose/bkroot/xfs-linux-2.6

into sgi.com:/source2/xfs-linux-2.6
parents 71d024d5 a6eebfd5
...@@ -201,8 +201,7 @@ int setkeycode(unsigned int scancode, unsigned int keycode) ...@@ -201,8 +201,7 @@ int setkeycode(unsigned int scancode, unsigned int keycode)
if (scancode < 0 || scancode >= dev->keycodemax) if (scancode < 0 || scancode >= dev->keycodemax)
return -EINVAL; return -EINVAL;
oldkey = INPUT_KEYCODE(dev, scancode); oldkey = SET_INPUT_KEYCODE(dev, scancode, keycode);
SET_INPUT_KEYCODE(dev, scancode, oldkey);
clear_bit(oldkey, dev->keybit); clear_bit(oldkey, dev->keybit);
set_bit(keycode, dev->keybit); set_bit(keycode, dev->keybit);
......
...@@ -209,7 +209,7 @@ static int evdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -209,7 +209,7 @@ static int evdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
struct evdev *evdev = list->evdev; struct evdev *evdev = list->evdev;
struct input_dev *dev = evdev->handle.dev; struct input_dev *dev = evdev->handle.dev;
struct input_absinfo abs; struct input_absinfo abs;
int i, t, u, v; int t, u, v;
if (!evdev->exist) return -ENODEV; if (!evdev->exist) return -ENODEV;
...@@ -231,10 +231,8 @@ static int evdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -231,10 +231,8 @@ static int evdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
if (get_user(t, ((int *) arg) + 0)) return -EFAULT; if (get_user(t, ((int *) arg) + 0)) return -EFAULT;
if (t < 0 || t > dev->keycodemax || !dev->keycodesize) return -EINVAL; if (t < 0 || t > dev->keycodemax || !dev->keycodesize) return -EINVAL;
if (get_user(v, ((int *) arg) + 1)) return -EFAULT; if (get_user(v, ((int *) arg) + 1)) return -EFAULT;
u = INPUT_KEYCODE(dev, t); u = SET_INPUT_KEYCODE(dev, t, v);
SET_INPUT_KEYCODE(dev, t, v); clear_bit(u, dev->keybit);
for (i = 0; i < dev->keycodemax; i++) if (v == u) break;
if (i == dev->keycodemax) clear_bit(u, dev->keybit);
set_bit(v, dev->keybit); set_bit(v, dev->keybit);
return 0; return 0;
......
...@@ -375,13 +375,14 @@ static char i8042_mux_phys[4][32]; ...@@ -375,13 +375,14 @@ static char i8042_mux_phys[4][32];
static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{ {
unsigned long flags; unsigned long flags;
unsigned char str, data; unsigned char str, data = 0;
unsigned int dfl; unsigned int dfl;
int ret; int ret;
spin_lock_irqsave(&i8042_lock, flags); spin_lock_irqsave(&i8042_lock, flags);
str = i8042_read_status(); str = i8042_read_status();
data = i8042_read_data(); if (str & I8042_STR_OBF)
data = i8042_read_data();
spin_unlock_irqrestore(&i8042_lock, flags); spin_unlock_irqrestore(&i8042_lock, flags);
if (~str & I8042_STR_OBF) { if (~str & I8042_STR_OBF) {
......
...@@ -752,25 +752,28 @@ struct ff_effect { ...@@ -752,25 +752,28 @@ struct ff_effect {
#define init_input_dev(dev) do { INIT_LIST_HEAD(&((dev)->h_list)); INIT_LIST_HEAD(&((dev)->node)); } while (0) #define init_input_dev(dev) do { INIT_LIST_HEAD(&((dev)->h_list)); INIT_LIST_HEAD(&((dev)->node)); } while (0)
#define SET_INPUT_KEYCODE(dev, scancode, val) \ #define SET_INPUT_KEYCODE(dev, scancode, val) \
do { \ ({ unsigned __old; \
switch (dev->keycodesize) { \ switch (dev->keycodesize) { \
case 1: { \ case 1: { \
u8 *k = (u8 *)dev->keycode; \ u8 *k = (u8 *)dev->keycode; \
__old = k[scancode]; \
k[scancode] = val; \ k[scancode] = val; \
break; \ break; \
} \ } \
case 2: { \ case 2: { \
u16 *k = (u16 *)dev->keycode; \ u16 *k = (u16 *)dev->keycode; \
__old = k[scancode]; \
k[scancode] = val; \ k[scancode] = val; \
break; \ break; \
} \ } \
case 4: { \ default: { \
u32 *k = (u32 *)dev->keycode; \ u32 *k = (u32 *)dev->keycode; \
__old = k[scancode]; \
k[scancode] = val; \ k[scancode] = val; \
break; \ break; \
} \ } \
} \ } \
} while (0) __old; })
struct input_dev { struct input_dev {
......
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