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: Oliver Neukum <oneukum@suse.de> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
3136baf8d0
commit
62ecae09a0
|
@ -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)
|
||||||
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,
|
||||||
|
|
Loading…
Reference in New Issue