Loading drivers/hid/hid-magicmouse.c +7 −0 Original line number Original line Diff line number Diff line Loading @@ -405,6 +405,13 @@ static void magicmouse_setup_input(struct input_dev *input, struct hid_device *h __set_bit(REL_HWHEEL, input->relbit); __set_bit(REL_HWHEEL, input->relbit); } } } else { /* USB_DEVICE_ID_APPLE_MAGICTRACKPAD */ } else { /* USB_DEVICE_ID_APPLE_MAGICTRACKPAD */ /* input->keybit is initialized with incorrect button info * for Magic Trackpad. There really is only one physical * button (BTN_LEFT == BTN_MOUSE). Make sure we don't * advertise buttons that don't exist... */ __clear_bit(BTN_RIGHT, input->keybit); __clear_bit(BTN_MIDDLE, input->keybit); __set_bit(BTN_MOUSE, input->keybit); __set_bit(BTN_MOUSE, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); Loading drivers/hid/hid-wacom.c +43 −38 Original line number Original line Diff line number Diff line Loading @@ -304,11 +304,51 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, return 1; return 1; } } static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { struct input_dev *input = hi->input; __set_bit(INPUT_PROP_POINTER, input->propbit); /* Basics */ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL); __set_bit(REL_WHEEL, input->relbit); __set_bit(BTN_TOOL_PEN, input->keybit); __set_bit(BTN_TOUCH, input->keybit); __set_bit(BTN_STYLUS, input->keybit); __set_bit(BTN_STYLUS2, input->keybit); __set_bit(BTN_LEFT, input->keybit); __set_bit(BTN_RIGHT, input->keybit); __set_bit(BTN_MIDDLE, input->keybit); /* Pad */ input->evbit[0] |= BIT(EV_MSC); __set_bit(MSC_SERIAL, input->mscbit); __set_bit(BTN_0, input->keybit); __set_bit(BTN_1, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); /* Distance, rubber and mouse */ __set_bit(BTN_TOOL_RUBBER, input->keybit); __set_bit(BTN_TOOL_MOUSE, input->keybit); input_set_abs_params(input, ABS_X, 0, 16704, 4, 0); input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0); input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0); input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0); return 0; } static int wacom_probe(struct hid_device *hdev, static int wacom_probe(struct hid_device *hdev, const struct hid_device_id *id) const struct hid_device_id *id) { { struct hid_input *hidinput; struct input_dev *input; struct wacom_data *wdata; struct wacom_data *wdata; int ret; int ret; Loading Loading @@ -370,42 +410,6 @@ static int wacom_probe(struct hid_device *hdev, goto err_ac; goto err_ac; } } #endif #endif hidinput = list_entry(hdev->inputs.next, struct hid_input, list); input = hidinput->input; __set_bit(INPUT_PROP_POINTER, input->propbit); /* Basics */ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL); __set_bit(REL_WHEEL, input->relbit); __set_bit(BTN_TOOL_PEN, input->keybit); __set_bit(BTN_TOUCH, input->keybit); __set_bit(BTN_STYLUS, input->keybit); __set_bit(BTN_STYLUS2, input->keybit); __set_bit(BTN_LEFT, input->keybit); __set_bit(BTN_RIGHT, input->keybit); __set_bit(BTN_MIDDLE, input->keybit); /* Pad */ input->evbit[0] |= BIT(EV_MSC); __set_bit(MSC_SERIAL, input->mscbit); __set_bit(BTN_0, input->keybit); __set_bit(BTN_1, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); /* Distance, rubber and mouse */ __set_bit(BTN_TOOL_RUBBER, input->keybit); __set_bit(BTN_TOOL_MOUSE, input->keybit); input_set_abs_params(input, ABS_X, 0, 16704, 4, 0); input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0); input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0); input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0); return 0; return 0; #ifdef CONFIG_HID_WACOM_POWER_SUPPLY #ifdef CONFIG_HID_WACOM_POWER_SUPPLY Loading Loading @@ -448,6 +452,7 @@ static struct hid_driver wacom_driver = { .probe = wacom_probe, .probe = wacom_probe, .remove = wacom_remove, .remove = wacom_remove, .raw_event = wacom_raw_event, .raw_event = wacom_raw_event, .input_mapped = wacom_input_mapped, }; }; static int __init wacom_init(void) static int __init wacom_init(void) Loading drivers/hid/hidraw.c +5 −3 Original line number Original line Diff line number Diff line Loading @@ -272,8 +272,10 @@ static int hidraw_open(struct inode *inode, struct file *file) dev = hidraw_table[minor]; dev = hidraw_table[minor]; if (!dev->open++) { if (!dev->open++) { err = hid_hw_power(dev->hid, PM_HINT_FULLON); err = hid_hw_power(dev->hid, PM_HINT_FULLON); if (err < 0) if (err < 0) { dev->open--; goto out_unlock; goto out_unlock; } err = hid_hw_open(dev->hid); err = hid_hw_open(dev->hid); if (err < 0) { if (err < 0) { Loading Loading @@ -510,13 +512,12 @@ void hidraw_disconnect(struct hid_device *hid) { { struct hidraw *hidraw = hid->hidraw; struct hidraw *hidraw = hid->hidraw; mutex_lock(&minors_lock); hidraw->exist = 0; hidraw->exist = 0; device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); mutex_lock(&minors_lock); hidraw_table[hidraw->minor] = NULL; hidraw_table[hidraw->minor] = NULL; mutex_unlock(&minors_lock); if (hidraw->open) { if (hidraw->open) { hid_hw_close(hid); hid_hw_close(hid); Loading @@ -524,6 +525,7 @@ void hidraw_disconnect(struct hid_device *hid) } else { } else { kfree(hidraw); kfree(hidraw); } } mutex_unlock(&minors_lock); } } EXPORT_SYMBOL_GPL(hidraw_disconnect); EXPORT_SYMBOL_GPL(hidraw_disconnect); Loading drivers/hid/usbhid/hid-core.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1270,7 +1270,7 @@ static void hid_cancel_delayed_stuff(struct usbhid_device *usbhid) static void hid_cease_io(struct usbhid_device *usbhid) static void hid_cease_io(struct usbhid_device *usbhid) { { del_timer(&usbhid->io_retry); del_timer_sync(&usbhid->io_retry); usb_kill_urb(usbhid->urbin); usb_kill_urb(usbhid->urbin); usb_kill_urb(usbhid->urbctrl); usb_kill_urb(usbhid->urbctrl); usb_kill_urb(usbhid->urbout); usb_kill_urb(usbhid->urbout); Loading drivers/hid/usbhid/hiddev.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -641,6 +641,8 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) struct usb_device *dev = hid_to_usb_dev(hid); struct usb_device *dev = hid_to_usb_dev(hid); struct usbhid_device *usbhid = hid->driver_data; struct usbhid_device *usbhid = hid->driver_data; memset(&dinfo, 0, sizeof(dinfo)); dinfo.bustype = BUS_USB; dinfo.bustype = BUS_USB; dinfo.busnum = dev->bus->busnum; dinfo.busnum = dev->bus->busnum; dinfo.devnum = dev->devnum; dinfo.devnum = dev->devnum; Loading Loading
drivers/hid/hid-magicmouse.c +7 −0 Original line number Original line Diff line number Diff line Loading @@ -405,6 +405,13 @@ static void magicmouse_setup_input(struct input_dev *input, struct hid_device *h __set_bit(REL_HWHEEL, input->relbit); __set_bit(REL_HWHEEL, input->relbit); } } } else { /* USB_DEVICE_ID_APPLE_MAGICTRACKPAD */ } else { /* USB_DEVICE_ID_APPLE_MAGICTRACKPAD */ /* input->keybit is initialized with incorrect button info * for Magic Trackpad. There really is only one physical * button (BTN_LEFT == BTN_MOUSE). Make sure we don't * advertise buttons that don't exist... */ __clear_bit(BTN_RIGHT, input->keybit); __clear_bit(BTN_MIDDLE, input->keybit); __set_bit(BTN_MOUSE, input->keybit); __set_bit(BTN_MOUSE, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); Loading
drivers/hid/hid-wacom.c +43 −38 Original line number Original line Diff line number Diff line Loading @@ -304,11 +304,51 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, return 1; return 1; } } static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { struct input_dev *input = hi->input; __set_bit(INPUT_PROP_POINTER, input->propbit); /* Basics */ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL); __set_bit(REL_WHEEL, input->relbit); __set_bit(BTN_TOOL_PEN, input->keybit); __set_bit(BTN_TOUCH, input->keybit); __set_bit(BTN_STYLUS, input->keybit); __set_bit(BTN_STYLUS2, input->keybit); __set_bit(BTN_LEFT, input->keybit); __set_bit(BTN_RIGHT, input->keybit); __set_bit(BTN_MIDDLE, input->keybit); /* Pad */ input->evbit[0] |= BIT(EV_MSC); __set_bit(MSC_SERIAL, input->mscbit); __set_bit(BTN_0, input->keybit); __set_bit(BTN_1, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); /* Distance, rubber and mouse */ __set_bit(BTN_TOOL_RUBBER, input->keybit); __set_bit(BTN_TOOL_MOUSE, input->keybit); input_set_abs_params(input, ABS_X, 0, 16704, 4, 0); input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0); input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0); input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0); return 0; } static int wacom_probe(struct hid_device *hdev, static int wacom_probe(struct hid_device *hdev, const struct hid_device_id *id) const struct hid_device_id *id) { { struct hid_input *hidinput; struct input_dev *input; struct wacom_data *wdata; struct wacom_data *wdata; int ret; int ret; Loading Loading @@ -370,42 +410,6 @@ static int wacom_probe(struct hid_device *hdev, goto err_ac; goto err_ac; } } #endif #endif hidinput = list_entry(hdev->inputs.next, struct hid_input, list); input = hidinput->input; __set_bit(INPUT_PROP_POINTER, input->propbit); /* Basics */ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL); __set_bit(REL_WHEEL, input->relbit); __set_bit(BTN_TOOL_PEN, input->keybit); __set_bit(BTN_TOUCH, input->keybit); __set_bit(BTN_STYLUS, input->keybit); __set_bit(BTN_STYLUS2, input->keybit); __set_bit(BTN_LEFT, input->keybit); __set_bit(BTN_RIGHT, input->keybit); __set_bit(BTN_MIDDLE, input->keybit); /* Pad */ input->evbit[0] |= BIT(EV_MSC); __set_bit(MSC_SERIAL, input->mscbit); __set_bit(BTN_0, input->keybit); __set_bit(BTN_1, input->keybit); __set_bit(BTN_TOOL_FINGER, input->keybit); /* Distance, rubber and mouse */ __set_bit(BTN_TOOL_RUBBER, input->keybit); __set_bit(BTN_TOOL_MOUSE, input->keybit); input_set_abs_params(input, ABS_X, 0, 16704, 4, 0); input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0); input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0); input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0); return 0; return 0; #ifdef CONFIG_HID_WACOM_POWER_SUPPLY #ifdef CONFIG_HID_WACOM_POWER_SUPPLY Loading Loading @@ -448,6 +452,7 @@ static struct hid_driver wacom_driver = { .probe = wacom_probe, .probe = wacom_probe, .remove = wacom_remove, .remove = wacom_remove, .raw_event = wacom_raw_event, .raw_event = wacom_raw_event, .input_mapped = wacom_input_mapped, }; }; static int __init wacom_init(void) static int __init wacom_init(void) Loading
drivers/hid/hidraw.c +5 −3 Original line number Original line Diff line number Diff line Loading @@ -272,8 +272,10 @@ static int hidraw_open(struct inode *inode, struct file *file) dev = hidraw_table[minor]; dev = hidraw_table[minor]; if (!dev->open++) { if (!dev->open++) { err = hid_hw_power(dev->hid, PM_HINT_FULLON); err = hid_hw_power(dev->hid, PM_HINT_FULLON); if (err < 0) if (err < 0) { dev->open--; goto out_unlock; goto out_unlock; } err = hid_hw_open(dev->hid); err = hid_hw_open(dev->hid); if (err < 0) { if (err < 0) { Loading Loading @@ -510,13 +512,12 @@ void hidraw_disconnect(struct hid_device *hid) { { struct hidraw *hidraw = hid->hidraw; struct hidraw *hidraw = hid->hidraw; mutex_lock(&minors_lock); hidraw->exist = 0; hidraw->exist = 0; device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor)); mutex_lock(&minors_lock); hidraw_table[hidraw->minor] = NULL; hidraw_table[hidraw->minor] = NULL; mutex_unlock(&minors_lock); if (hidraw->open) { if (hidraw->open) { hid_hw_close(hid); hid_hw_close(hid); Loading @@ -524,6 +525,7 @@ void hidraw_disconnect(struct hid_device *hid) } else { } else { kfree(hidraw); kfree(hidraw); } } mutex_unlock(&minors_lock); } } EXPORT_SYMBOL_GPL(hidraw_disconnect); EXPORT_SYMBOL_GPL(hidraw_disconnect); Loading
drivers/hid/usbhid/hid-core.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1270,7 +1270,7 @@ static void hid_cancel_delayed_stuff(struct usbhid_device *usbhid) static void hid_cease_io(struct usbhid_device *usbhid) static void hid_cease_io(struct usbhid_device *usbhid) { { del_timer(&usbhid->io_retry); del_timer_sync(&usbhid->io_retry); usb_kill_urb(usbhid->urbin); usb_kill_urb(usbhid->urbin); usb_kill_urb(usbhid->urbctrl); usb_kill_urb(usbhid->urbctrl); usb_kill_urb(usbhid->urbout); usb_kill_urb(usbhid->urbout); Loading
drivers/hid/usbhid/hiddev.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -641,6 +641,8 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) struct usb_device *dev = hid_to_usb_dev(hid); struct usb_device *dev = hid_to_usb_dev(hid); struct usbhid_device *usbhid = hid->driver_data; struct usbhid_device *usbhid = hid->driver_data; memset(&dinfo, 0, sizeof(dinfo)); dinfo.bustype = BUS_USB; dinfo.bustype = BUS_USB; dinfo.busnum = dev->bus->busnum; dinfo.busnum = dev->bus->busnum; dinfo.devnum = dev->devnum; dinfo.devnum = dev->devnum; Loading