Merge branch 'for-linus' into next
This commit is contained in:
@@ -483,6 +483,9 @@ static int joydev_handle_JSIOCSAXMAP(struct joydev *joydev,
|
|||||||
|
|
||||||
memcpy(joydev->abspam, abspam, len);
|
memcpy(joydev->abspam, abspam, len);
|
||||||
|
|
||||||
|
for (i = 0; i < joydev->nabs; i++)
|
||||||
|
joydev->absmap[joydev->abspam[i]] = i;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
kfree(abspam);
|
kfree(abspam);
|
||||||
return retval;
|
return retval;
|
||||||
|
@@ -404,6 +404,13 @@ static int uinput_setup_device(struct uinput_device *udev, const char __user *bu
|
|||||||
retval = uinput_validate_absbits(dev);
|
retval = uinput_validate_absbits(dev);
|
||||||
if (retval < 0)
|
if (retval < 0)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
if (test_bit(ABS_MT_SLOT, dev->absbit)) {
|
||||||
|
int nslot = input_abs_get_max(dev, ABS_MT_SLOT) + 1;
|
||||||
|
input_mt_create_slots(dev, nslot);
|
||||||
|
input_set_events_per_packet(dev, 6 * nslot);
|
||||||
|
} else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) {
|
||||||
|
input_set_events_per_packet(dev, 60);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
udev->state = UIST_SETUP_COMPLETE;
|
udev->state = UIST_SETUP_COMPLETE;
|
||||||
|
@@ -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)
|
|||||||
|
|
||||||
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;
|
||||||
|
@@ -103,27 +103,26 @@ static void wacom_sys_irq(struct urb *urb)
|
|||||||
static int wacom_open(struct input_dev *dev)
|
static int wacom_open(struct input_dev *dev)
|
||||||
{
|
{
|
||||||
struct wacom *wacom = input_get_drvdata(dev);
|
struct wacom *wacom = input_get_drvdata(dev);
|
||||||
|
int retval = 0;
|
||||||
|
|
||||||
|
if (usb_autopm_get_interface(wacom->intf) < 0)
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
mutex_lock(&wacom->lock);
|
mutex_lock(&wacom->lock);
|
||||||
|
|
||||||
wacom->irq->dev = wacom->usbdev;
|
|
||||||
|
|
||||||
if (usb_autopm_get_interface(wacom->intf) < 0) {
|
|
||||||
mutex_unlock(&wacom->lock);
|
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usb_submit_urb(wacom->irq, GFP_KERNEL)) {
|
if (usb_submit_urb(wacom->irq, GFP_KERNEL)) {
|
||||||
usb_autopm_put_interface(wacom->intf);
|
retval = -EIO;
|
||||||
mutex_unlock(&wacom->lock);
|
goto out;
|
||||||
return -EIO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wacom->open = true;
|
wacom->open = true;
|
||||||
wacom->intf->needs_remote_wakeup = 1;
|
wacom->intf->needs_remote_wakeup = 1;
|
||||||
|
|
||||||
|
out:
|
||||||
mutex_unlock(&wacom->lock);
|
mutex_unlock(&wacom->lock);
|
||||||
return 0;
|
if (retval)
|
||||||
|
usb_autopm_put_interface(wacom->intf);
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wacom_close(struct input_dev *dev)
|
static void wacom_close(struct input_dev *dev)
|
||||||
@@ -135,6 +134,8 @@ static void wacom_close(struct input_dev *dev)
|
|||||||
wacom->open = false;
|
wacom->open = false;
|
||||||
wacom->intf->needs_remote_wakeup = 0;
|
wacom->intf->needs_remote_wakeup = 0;
|
||||||
mutex_unlock(&wacom->lock);
|
mutex_unlock(&wacom->lock);
|
||||||
|
|
||||||
|
usb_autopm_put_interface(wacom->intf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
|
static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
|
||||||
|
@@ -442,8 +442,10 @@ static void wacom_intuos_general(struct wacom_wac *wacom)
|
|||||||
/* general pen packet */
|
/* general pen packet */
|
||||||
if ((data[1] & 0xb8) == 0xa0) {
|
if ((data[1] & 0xb8) == 0xa0) {
|
||||||
t = (data[6] << 2) | ((data[7] >> 6) & 3);
|
t = (data[6] << 2) | ((data[7] >> 6) & 3);
|
||||||
if (features->type >= INTUOS4S && features->type <= INTUOS4L)
|
if ((features->type >= INTUOS4S && features->type <= INTUOS4L) ||
|
||||||
|
features->type == WACOM_21UX2) {
|
||||||
t = (t << 1) | (data[1] & 1);
|
t = (t << 1) | (data[1] & 1);
|
||||||
|
}
|
||||||
input_report_abs(input, ABS_PRESSURE, t);
|
input_report_abs(input, ABS_PRESSURE, t);
|
||||||
input_report_abs(input, ABS_TILT_X,
|
input_report_abs(input, ABS_TILT_X,
|
||||||
((data[7] << 1) & 0x7e) | (data[8] >> 7));
|
((data[7] << 1) & 0x7e) | (data[8] >> 7));
|
||||||
|
Reference in New Issue
Block a user