aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/usbhid/hid-core.c4
-rw-r--r--drivers/hid/usbhid/hiddev.c16
-rw-r--r--drivers/hid/usbhid/usbhid.h2
3 files changed, 11 insertions, 11 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 83772fa7d92a..fb0cf5d70504 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -677,7 +677,7 @@ static int hid_get_class_descriptor(struct usb_device *dev, int ifnum,
677 return result; 677 return result;
678} 678}
679 679
680int usbhid_open(struct hid_device *hid) 680static int usbhid_open(struct hid_device *hid)
681{ 681{
682 struct usbhid_device *usbhid = hid->driver_data; 682 struct usbhid_device *usbhid = hid->driver_data;
683 int res = 0; 683 int res = 0;
@@ -722,7 +722,7 @@ done:
722 return res; 722 return res;
723} 723}
724 724
725void usbhid_close(struct hid_device *hid) 725static void usbhid_close(struct hid_device *hid)
726{ 726{
727 struct usbhid_device *usbhid = hid->driver_data; 727 struct usbhid_device *usbhid = hid->driver_data;
728 728
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
index 0e06368d1fbb..b4f714752245 100644
--- a/drivers/hid/usbhid/hiddev.c
+++ b/drivers/hid/usbhid/hiddev.c
@@ -237,7 +237,7 @@ static int hiddev_release(struct inode * inode, struct file * file)
237 mutex_lock(&list->hiddev->existancelock); 237 mutex_lock(&list->hiddev->existancelock);
238 if (!--list->hiddev->open) { 238 if (!--list->hiddev->open) {
239 if (list->hiddev->exist) { 239 if (list->hiddev->exist) {
240 usbhid_close(list->hiddev->hid); 240 hid_hw_close(list->hiddev->hid);
241 usbhid_put_power(list->hiddev->hid); 241 usbhid_put_power(list->hiddev->hid);
242 } else { 242 } else {
243 mutex_unlock(&list->hiddev->existancelock); 243 mutex_unlock(&list->hiddev->existancelock);
@@ -282,11 +282,9 @@ static int hiddev_open(struct inode *inode, struct file *file)
282 */ 282 */
283 if (list->hiddev->exist) { 283 if (list->hiddev->exist) {
284 if (!list->hiddev->open++) { 284 if (!list->hiddev->open++) {
285 res = usbhid_open(hiddev->hid); 285 res = hid_hw_open(hiddev->hid);
286 if (res < 0) { 286 if (res < 0)
287 res = -EIO;
288 goto bail; 287 goto bail;
289 }
290 } 288 }
291 } else { 289 } else {
292 res = -ENODEV; 290 res = -ENODEV;
@@ -306,10 +304,14 @@ static int hiddev_open(struct inode *inode, struct file *file)
306 res = -EIO; 304 res = -EIO;
307 goto bail_unlock; 305 goto bail_unlock;
308 } 306 }
309 usbhid_open(hid); 307 res = hid_hw_open(hid);
308 if (res < 0)
309 goto bail_put_power;
310 } 310 }
311 mutex_unlock(&hiddev->existancelock); 311 mutex_unlock(&hiddev->existancelock);
312 return 0; 312 return 0;
313bail_put_power:
314 usbhid_put_power(hid);
313bail_unlock: 315bail_unlock:
314 mutex_unlock(&hiddev->existancelock); 316 mutex_unlock(&hiddev->existancelock);
315bail: 317bail:
@@ -935,7 +937,7 @@ void hiddev_disconnect(struct hid_device *hid)
935 937
936 if (hiddev->open) { 938 if (hiddev->open) {
937 mutex_unlock(&hiddev->existancelock); 939 mutex_unlock(&hiddev->existancelock);
938 usbhid_close(hiddev->hid); 940 hid_hw_close(hiddev->hid);
939 wake_up_interruptible(&hiddev->wait); 941 wake_up_interruptible(&hiddev->wait);
940 } else { 942 } else {
941 mutex_unlock(&hiddev->existancelock); 943 mutex_unlock(&hiddev->existancelock);
diff --git a/drivers/hid/usbhid/usbhid.h b/drivers/hid/usbhid/usbhid.h
index fa47d666cfcf..83ef5c14aa92 100644
--- a/drivers/hid/usbhid/usbhid.h
+++ b/drivers/hid/usbhid/usbhid.h
@@ -34,8 +34,6 @@
34#include <linux/input.h> 34#include <linux/input.h>
35 35
36/* API provided by hid-core.c for USB HID drivers */ 36/* API provided by hid-core.c for USB HID drivers */
37void usbhid_close(struct hid_device *hid);
38int usbhid_open(struct hid_device *hid);
39void usbhid_init_reports(struct hid_device *hid); 37void usbhid_init_reports(struct hid_device *hid);
40int usbhid_get_power(struct hid_device *hid); 38int usbhid_get_power(struct hid_device *hid);
41void usbhid_put_power(struct hid_device *hid); 39void usbhid_put_power(struct hid_device *hid);