Commit d36b7d4c authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Jiri Kosina

HID: hiddev: use hid_hw_open/close instead of usbhid_open/close

Instead of calling into usbhid code directly, let's use the standard
accessors for the transport HID drivers, and stop clobbering their errors
with -EIO.

This also allows us make usbhid_open and close static.
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 6df62e79
...@@ -677,7 +677,7 @@ static int hid_get_class_descriptor(struct usb_device *dev, int ifnum, ...@@ -677,7 +677,7 @@ static int hid_get_class_descriptor(struct usb_device *dev, int ifnum,
return result; return result;
} }
int usbhid_open(struct hid_device *hid) static int usbhid_open(struct hid_device *hid)
{ {
struct usbhid_device *usbhid = hid->driver_data; struct usbhid_device *usbhid = hid->driver_data;
int res = 0; int res = 0;
...@@ -722,7 +722,7 @@ int usbhid_open(struct hid_device *hid) ...@@ -722,7 +722,7 @@ int usbhid_open(struct hid_device *hid)
return res; return res;
} }
void usbhid_close(struct hid_device *hid) static void usbhid_close(struct hid_device *hid)
{ {
struct usbhid_device *usbhid = hid->driver_data; struct usbhid_device *usbhid = hid->driver_data;
......
...@@ -237,7 +237,7 @@ static int hiddev_release(struct inode * inode, struct file * file) ...@@ -237,7 +237,7 @@ static int hiddev_release(struct inode * inode, struct file * file)
mutex_lock(&list->hiddev->existancelock); mutex_lock(&list->hiddev->existancelock);
if (!--list->hiddev->open) { if (!--list->hiddev->open) {
if (list->hiddev->exist) { if (list->hiddev->exist) {
usbhid_close(list->hiddev->hid); hid_hw_close(list->hiddev->hid);
usbhid_put_power(list->hiddev->hid); usbhid_put_power(list->hiddev->hid);
} else { } else {
mutex_unlock(&list->hiddev->existancelock); mutex_unlock(&list->hiddev->existancelock);
...@@ -282,11 +282,9 @@ static int hiddev_open(struct inode *inode, struct file *file) ...@@ -282,11 +282,9 @@ static int hiddev_open(struct inode *inode, struct file *file)
*/ */
if (list->hiddev->exist) { if (list->hiddev->exist) {
if (!list->hiddev->open++) { if (!list->hiddev->open++) {
res = usbhid_open(hiddev->hid); res = hid_hw_open(hiddev->hid);
if (res < 0) { if (res < 0)
res = -EIO;
goto bail; goto bail;
}
} }
} else { } else {
res = -ENODEV; res = -ENODEV;
...@@ -306,10 +304,14 @@ static int hiddev_open(struct inode *inode, struct file *file) ...@@ -306,10 +304,14 @@ static int hiddev_open(struct inode *inode, struct file *file)
res = -EIO; res = -EIO;
goto bail_unlock; goto bail_unlock;
} }
usbhid_open(hid); res = hid_hw_open(hid);
if (res < 0)
goto bail_put_power;
} }
mutex_unlock(&hiddev->existancelock); mutex_unlock(&hiddev->existancelock);
return 0; return 0;
bail_put_power:
usbhid_put_power(hid);
bail_unlock: bail_unlock:
mutex_unlock(&hiddev->existancelock); mutex_unlock(&hiddev->existancelock);
bail: bail:
...@@ -935,7 +937,7 @@ void hiddev_disconnect(struct hid_device *hid) ...@@ -935,7 +937,7 @@ void hiddev_disconnect(struct hid_device *hid)
if (hiddev->open) { if (hiddev->open) {
mutex_unlock(&hiddev->existancelock); mutex_unlock(&hiddev->existancelock);
usbhid_close(hiddev->hid); hid_hw_close(hiddev->hid);
wake_up_interruptible(&hiddev->wait); wake_up_interruptible(&hiddev->wait);
} else { } else {
mutex_unlock(&hiddev->existancelock); mutex_unlock(&hiddev->existancelock);
......
...@@ -34,8 +34,6 @@ ...@@ -34,8 +34,6 @@
#include <linux/input.h> #include <linux/input.h>
/* API provided by hid-core.c for USB HID drivers */ /* API provided by hid-core.c for USB HID drivers */
void usbhid_close(struct hid_device *hid);
int usbhid_open(struct hid_device *hid);
void usbhid_init_reports(struct hid_device *hid); void usbhid_init_reports(struct hid_device *hid);
int usbhid_get_power(struct hid_device *hid); int usbhid_get_power(struct hid_device *hid);
void usbhid_put_power(struct hid_device *hid); void usbhid_put_power(struct hid_device *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