Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;

+9 −7
Original line number Diff line number Diff line
@@ -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,12 +282,10 @@ 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;
		goto bail;
@@ -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);
+0 −2
Original line number Diff line number Diff line
@@ -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);