Commit cc491e27 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: i8042 - fix device removal on unload
  Input: bcm5974 - adjust major/minor to scale
  Input: MT - initialize slots to unused
  Input: use PIT_TICK_RATE in vt beep ioctl
  Input: wacom - fix mousewheel handling for old wacom tablets
parents 2c20130f af045b86
...@@ -533,11 +533,14 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, ...@@ -533,11 +533,14 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
case KIOCSOUND: case KIOCSOUND:
if (!perm) if (!perm)
goto eperm; goto eperm;
/* FIXME: This is an old broken API but we need to keep it /*
supported and somehow separate the historic advertised * The use of PIT_TICK_RATE is historic, it used to be
tick rate from any real one */ * the platform-dependent CLOCK_TICK_RATE between 2.6.12
* and 2.6.36, which was a minor but unfortunate ABI
* change.
*/
if (arg) if (arg)
arg = CLOCK_TICK_RATE / arg; arg = PIT_TICK_RATE / arg;
kd_mksound(arg, 0); kd_mksound(arg, 0);
break; break;
...@@ -553,11 +556,8 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, ...@@ -553,11 +556,8 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
*/ */
ticks = HZ * ((arg >> 16) & 0xffff) / 1000; ticks = HZ * ((arg >> 16) & 0xffff) / 1000;
count = ticks ? (arg & 0xffff) : 0; count = ticks ? (arg & 0xffff) : 0;
/* FIXME: This is an old broken API but we need to keep it
supported and somehow separate the historic advertised
tick rate from any real one */
if (count) if (count)
count = CLOCK_TICK_RATE / count; count = PIT_TICK_RATE / count;
kd_mksound(count, ticks); kd_mksound(count, ticks);
break; break;
} }
......
...@@ -1599,11 +1599,14 @@ EXPORT_SYMBOL(input_free_device); ...@@ -1599,11 +1599,14 @@ EXPORT_SYMBOL(input_free_device);
* @dev: input device supporting MT events and finger tracking * @dev: input device supporting MT events and finger tracking
* @num_slots: number of slots used by the device * @num_slots: number of slots used by the device
* *
* This function allocates all necessary memory for MT slot handling * This function allocates all necessary memory for MT slot handling in the
* in the input device, and adds ABS_MT_SLOT to the device capabilities. * input device, and adds ABS_MT_SLOT to the device capabilities. All slots
* are initially marked as unused iby setting ABS_MT_TRACKING_ID to -1.
*/ */
int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots) int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots)
{ {
int i;
if (!num_slots) if (!num_slots)
return 0; return 0;
...@@ -1614,6 +1617,10 @@ int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots) ...@@ -1614,6 +1617,10 @@ int input_mt_create_slots(struct input_dev *dev, unsigned int num_slots)
dev->mtsize = num_slots; dev->mtsize = num_slots;
input_set_abs_params(dev, ABS_MT_SLOT, 0, num_slots - 1, 0, 0); input_set_abs_params(dev, ABS_MT_SLOT, 0, num_slots - 1, 0, 0);
/* Mark slots as 'unused' */
for (i = 0; i < num_slots; i++)
dev->mt[i].abs[ABS_MT_TRACKING_ID - ABS_MT_FIRST] = -1;
return 0; return 0;
} }
EXPORT_SYMBOL(input_mt_create_slots); EXPORT_SYMBOL(input_mt_create_slots);
......
...@@ -337,10 +337,14 @@ static void report_finger_data(struct input_dev *input, ...@@ -337,10 +337,14 @@ static void report_finger_data(struct input_dev *input,
const struct bcm5974_config *cfg, const struct bcm5974_config *cfg,
const struct tp_finger *f) const struct tp_finger *f)
{ {
input_report_abs(input, ABS_MT_TOUCH_MAJOR, raw2int(f->force_major)); input_report_abs(input, ABS_MT_TOUCH_MAJOR,
input_report_abs(input, ABS_MT_TOUCH_MINOR, raw2int(f->force_minor)); raw2int(f->force_major) << 1);
input_report_abs(input, ABS_MT_WIDTH_MAJOR, raw2int(f->size_major)); input_report_abs(input, ABS_MT_TOUCH_MINOR,
input_report_abs(input, ABS_MT_WIDTH_MINOR, raw2int(f->size_minor)); raw2int(f->force_minor) << 1);
input_report_abs(input, ABS_MT_WIDTH_MAJOR,
raw2int(f->size_major) << 1);
input_report_abs(input, ABS_MT_WIDTH_MINOR,
raw2int(f->size_minor) << 1);
input_report_abs(input, ABS_MT_ORIENTATION, input_report_abs(input, ABS_MT_ORIENTATION,
MAX_FINGER_ORIENTATION - raw2int(f->orientation)); MAX_FINGER_ORIENTATION - raw2int(f->orientation));
input_report_abs(input, ABS_MT_POSITION_X, raw2int(f->abs_x)); input_report_abs(input, ABS_MT_POSITION_X, raw2int(f->abs_x));
......
...@@ -1485,8 +1485,8 @@ static int __init i8042_init(void) ...@@ -1485,8 +1485,8 @@ static int __init i8042_init(void)
static void __exit i8042_exit(void) static void __exit i8042_exit(void)
{ {
platform_driver_unregister(&i8042_driver);
platform_device_unregister(i8042_platform_device); platform_device_unregister(i8042_platform_device);
platform_driver_unregister(&i8042_driver);
i8042_platform_exit(); i8042_platform_exit();
panic_blink = NULL; panic_blink = NULL;
......
...@@ -243,10 +243,10 @@ static int wacom_graphire_irq(struct wacom_wac *wacom) ...@@ -243,10 +243,10 @@ static int wacom_graphire_irq(struct wacom_wac *wacom)
if (features->type == WACOM_G4 || if (features->type == WACOM_G4 ||
features->type == WACOM_MO) { features->type == WACOM_MO) {
input_report_abs(input, ABS_DISTANCE, data[6] & 0x3f); input_report_abs(input, ABS_DISTANCE, data[6] & 0x3f);
rw = (signed)(data[7] & 0x04) - (data[7] & 0x03); rw = (data[7] & 0x04) - (data[7] & 0x03);
} else { } else {
input_report_abs(input, ABS_DISTANCE, data[7] & 0x3f); input_report_abs(input, ABS_DISTANCE, data[7] & 0x3f);
rw = -(signed)data[6]; rw = -(signed char)data[6];
} }
input_report_rel(input, REL_WHEEL, rw); input_report_rel(input, REL_WHEEL, rw);
} }
......
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