Commit e25c1733 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid

* 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: wiimote: fix invalid power_supply_powers call
  HID: wacom: Fix invalid power_supply_powers calls
  HID: hyperv: Properly disconnect the input device
  HID: usbhid: fix dead lock between open and disconect
parents abaaf3e1 217c8b2b
...@@ -548,6 +548,7 @@ static int mousevsc_remove(struct hv_device *dev) ...@@ -548,6 +548,7 @@ static int mousevsc_remove(struct hv_device *dev)
struct mousevsc_dev *input_dev = hv_get_drvdata(dev); struct mousevsc_dev *input_dev = hv_get_drvdata(dev);
vmbus_close(dev->channel); vmbus_close(dev->channel);
hid_hw_stop(input_dev->hid_device);
hid_destroy_device(input_dev->hid_device); hid_destroy_device(input_dev->hid_device);
mousevsc_free_device(input_dev); mousevsc_free_device(input_dev);
......
...@@ -531,7 +531,6 @@ static int wacom_probe(struct hid_device *hdev, ...@@ -531,7 +531,6 @@ static int wacom_probe(struct hid_device *hdev,
wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY; wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY;
wdata->battery.use_for_apm = 0; wdata->battery.use_for_apm = 0;
power_supply_powers(&wdata->battery, &hdev->dev);
ret = power_supply_register(&hdev->dev, &wdata->battery); ret = power_supply_register(&hdev->dev, &wdata->battery);
if (ret) { if (ret) {
...@@ -540,6 +539,8 @@ static int wacom_probe(struct hid_device *hdev, ...@@ -540,6 +539,8 @@ static int wacom_probe(struct hid_device *hdev,
goto err_battery; goto err_battery;
} }
power_supply_powers(&wdata->battery, &hdev->dev);
wdata->ac.properties = wacom_ac_props; wdata->ac.properties = wacom_ac_props;
wdata->ac.num_properties = ARRAY_SIZE(wacom_ac_props); wdata->ac.num_properties = ARRAY_SIZE(wacom_ac_props);
wdata->ac.get_property = wacom_ac_get_property; wdata->ac.get_property = wacom_ac_get_property;
...@@ -547,14 +548,14 @@ static int wacom_probe(struct hid_device *hdev, ...@@ -547,14 +548,14 @@ static int wacom_probe(struct hid_device *hdev,
wdata->ac.type = POWER_SUPPLY_TYPE_MAINS; wdata->ac.type = POWER_SUPPLY_TYPE_MAINS;
wdata->ac.use_for_apm = 0; wdata->ac.use_for_apm = 0;
power_supply_powers(&wdata->battery, &hdev->dev);
ret = power_supply_register(&hdev->dev, &wdata->ac); ret = power_supply_register(&hdev->dev, &wdata->ac);
if (ret) { if (ret) {
hid_warn(hdev, hid_warn(hdev,
"can't create ac battery attribute, err: %d\n", ret); "can't create ac battery attribute, err: %d\n", ret);
goto err_ac; goto err_ac;
} }
power_supply_powers(&wdata->ac, &hdev->dev);
#endif #endif
return 0; return 0;
......
...@@ -1226,14 +1226,14 @@ static int wiimote_hid_probe(struct hid_device *hdev, ...@@ -1226,14 +1226,14 @@ static int wiimote_hid_probe(struct hid_device *hdev,
wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY; wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY;
wdata->battery.use_for_apm = 0; wdata->battery.use_for_apm = 0;
power_supply_powers(&wdata->battery, &hdev->dev);
ret = power_supply_register(&wdata->hdev->dev, &wdata->battery); ret = power_supply_register(&wdata->hdev->dev, &wdata->battery);
if (ret) { if (ret) {
hid_err(hdev, "Cannot register battery device\n"); hid_err(hdev, "Cannot register battery device\n");
goto err_battery; goto err_battery;
} }
power_supply_powers(&wdata->battery, &hdev->dev);
ret = wiimote_leds_create(wdata); ret = wiimote_leds_create(wdata);
if (ret) if (ret)
goto err_free; goto err_free;
......
...@@ -922,11 +922,11 @@ void hiddev_disconnect(struct hid_device *hid) ...@@ -922,11 +922,11 @@ void hiddev_disconnect(struct hid_device *hid)
struct hiddev *hiddev = hid->hiddev; struct hiddev *hiddev = hid->hiddev;
struct usbhid_device *usbhid = hid->driver_data; struct usbhid_device *usbhid = hid->driver_data;
usb_deregister_dev(usbhid->intf, &hiddev_class);
mutex_lock(&hiddev->existancelock); mutex_lock(&hiddev->existancelock);
hiddev->exist = 0; hiddev->exist = 0;
usb_deregister_dev(usbhid->intf, &hiddev_class);
if (hiddev->open) { if (hiddev->open) {
mutex_unlock(&hiddev->existancelock); mutex_unlock(&hiddev->existancelock);
usbhid_close(hiddev->hid); usbhid_close(hiddev->hid);
......
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