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: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
6df62e7916
commit
d36b7d4c27
|
@ -677,7 +677,7 @@ static int hid_get_class_descriptor(struct usb_device *dev, int ifnum,
|
|||
return result;
|
||||
}
|
||||
|
||||
int usbhid_open(struct hid_device *hid)
|
||||
static int usbhid_open(struct hid_device *hid)
|
||||
{
|
||||
struct usbhid_device *usbhid = hid->driver_data;
|
||||
int res = 0;
|
||||
|
@ -722,7 +722,7 @@ int usbhid_open(struct hid_device *hid)
|
|||
return res;
|
||||
}
|
||||
|
||||
void usbhid_close(struct hid_device *hid)
|
||||
static void usbhid_close(struct hid_device *hid)
|
||||
{
|
||||
struct usbhid_device *usbhid = hid->driver_data;
|
||||
|
||||
|
|
|
@ -237,7 +237,7 @@ static int hiddev_release(struct inode * inode, struct file * file)
|
|||
mutex_lock(&list->hiddev->existancelock);
|
||||
if (!--list->hiddev->open) {
|
||||
if (list->hiddev->exist) {
|
||||
usbhid_close(list->hiddev->hid);
|
||||
hid_hw_close(list->hiddev->hid);
|
||||
usbhid_put_power(list->hiddev->hid);
|
||||
} else {
|
||||
mutex_unlock(&list->hiddev->existancelock);
|
||||
|
@ -282,11 +282,9 @@ static int hiddev_open(struct inode *inode, struct file *file)
|
|||
*/
|
||||
if (list->hiddev->exist) {
|
||||
if (!list->hiddev->open++) {
|
||||
res = usbhid_open(hiddev->hid);
|
||||
if (res < 0) {
|
||||
res = -EIO;
|
||||
res = hid_hw_open(hiddev->hid);
|
||||
if (res < 0)
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
res = -ENODEV;
|
||||
|
@ -306,10 +304,14 @@ static int hiddev_open(struct inode *inode, struct file *file)
|
|||
res = -EIO;
|
||||
goto bail_unlock;
|
||||
}
|
||||
usbhid_open(hid);
|
||||
res = hid_hw_open(hid);
|
||||
if (res < 0)
|
||||
goto bail_put_power;
|
||||
}
|
||||
mutex_unlock(&hiddev->existancelock);
|
||||
return 0;
|
||||
bail_put_power:
|
||||
usbhid_put_power(hid);
|
||||
bail_unlock:
|
||||
mutex_unlock(&hiddev->existancelock);
|
||||
bail:
|
||||
|
@ -935,7 +937,7 @@ void hiddev_disconnect(struct hid_device *hid)
|
|||
|
||||
if (hiddev->open) {
|
||||
mutex_unlock(&hiddev->existancelock);
|
||||
usbhid_close(hiddev->hid);
|
||||
hid_hw_close(hiddev->hid);
|
||||
wake_up_interruptible(&hiddev->wait);
|
||||
} else {
|
||||
mutex_unlock(&hiddev->existancelock);
|
||||
|
|
|
@ -34,8 +34,6 @@
|
|||
#include <linux/input.h>
|
||||
|
||||
/* 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);
|
||||
int usbhid_get_power(struct hid_device *hid);
|
||||
void usbhid_put_power(struct hid_device *hid);
|
||||
|
|
Loading…
Reference in New Issue