Commit 62ecae09 authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: wacom - properly enable runtime PM

We need to always call usb_autopm_put_interface() in wacom_open(),
not only when initialization fails, otherwise the device will be
marked as PM-busy and will never be put in suspended state.

Based on patch by Oliver Neukum.
Acked-by: default avatarOliver Neukum <oneukum@suse.de>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 3136baf8
...@@ -120,14 +120,16 @@ static int wacom_open(struct input_dev *dev) ...@@ -120,14 +120,16 @@ static int wacom_open(struct input_dev *dev)
out: out:
mutex_unlock(&wacom->lock); mutex_unlock(&wacom->lock);
if (retval) usb_autopm_put_interface(wacom->intf);
usb_autopm_put_interface(wacom->intf);
return retval; return retval;
} }
static void wacom_close(struct input_dev *dev) static void wacom_close(struct input_dev *dev)
{ {
struct wacom *wacom = input_get_drvdata(dev); struct wacom *wacom = input_get_drvdata(dev);
int autopm_error;
autopm_error = usb_autopm_get_interface(wacom->intf);
mutex_lock(&wacom->lock); mutex_lock(&wacom->lock);
usb_kill_urb(wacom->irq); usb_kill_urb(wacom->irq);
...@@ -135,7 +137,8 @@ static void wacom_close(struct input_dev *dev) ...@@ -135,7 +137,8 @@ static void wacom_close(struct input_dev *dev)
wacom->intf->needs_remote_wakeup = 0; wacom->intf->needs_remote_wakeup = 0;
mutex_unlock(&wacom->lock); mutex_unlock(&wacom->lock);
usb_autopm_put_interface(wacom->intf); if (!autopm_error)
usb_autopm_put_interface(wacom->intf);
} }
static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc, static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
......
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