Subject: Re: linux-next: USB mouse won't work after resume.

From: Oliver Neukum <[email-masked]>
Date: Tue, 17 Feb 2009 21:42:55 +0100

Am Tuesday 17 February 2009 14:37:04 schrieb Laurent Riffard:
> Le 17.02.2009 11:35, Oliver Neukum a écrit :
> > Am Tuesday 17 February 2009 10:55:57 schrieb Laurent Riffard:
> >> My USB mouse won't work after suspend to disk and resume. I must unload and reload the ohci_hcd module to get it back.
> > 
> > Please recompile your kernel with CONFIG_USB_DEBUG and
> > send me your dmesg.
> > 
> > 	Regards
> > 		Oliver
> > 
> 
> Here is it:
> 

Please try the attached patch.

	Regards
		Oliver
--- nexttree/drivers/hid/usbhid/hid-core.c.alt	2009-02-17 21:39:45.000000000 +0100
+++ nexttree/drivers/hid/usbhid/hid-core.c	2009-02-17 21:39:57.000000000 +0100
@@ -1333,6 +1333,15 @@ static int hid_post_reset(struct usb_int
 	return 0;
 }
 
+static int hid_reset_resume(struct usb_interface *intf)
+{
+	struct hid_device *hid = usb_get_intfdata(intf);
+	struct usbhid_device *usbhid = hid->driver_data;
+
+	clear_bit(HID_REPORTED_IDLE, &usbhid->iofl);
+	return hid_post_reset(intf);
+}
+
 int usbhid_get_power(struct hid_device *hid)
 {
 	struct usbhid_device *usbhid = hid->driver_data;
@@ -1362,7 +1371,7 @@ static struct usb_driver hid_driver = {
 #ifdef CONFIG_PM
 	.suspend =	hid_suspend,
 	.resume =	hid_resume,
-	.reset_resume =	hid_post_reset,
+	.reset_resume =	hid_reset_resume,
 #endif
 	.pre_reset =	hid_pre_reset,
 	.post_reset =	hid_post_reset,