Re: suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Donnerstag, 3. April 2008 10:53:53 schrieb Stefan Schweizer:
> >  On second thought, this should be fixed by usb persist if the appletouch
> >  driver supported reset_resume. Would you be willing to test a kernel patch
> >  that implements reset_resume in the appletouch driver?
> 
> Sure, I would love to have this fixed :-)

Hi,

here I have another test request. This patch on top of the earlier patch
implements autosuspend for the appletouch driver. Can you try it? You
also need to activate it as described in Documentation/usb/power-management.txt

	Regards
		Oliver

---

--- linux-2.6.25-rc7-work/drivers/input/mouse/appletouch.c.alt	2008-04-03 12:46:06.000000000 +0200
+++ linux-2.6.25-rc7-work/drivers/input/mouse/appletouch.c	2008-04-03 12:46:24.000000000 +0200
@@ -572,16 +572,26 @@ exit:
 static int atp_open(struct input_dev *input)
 {
 	struct atp *dev = input_get_drvdata(input);
+	int rv;
 
 	mutex_lock(&dev->lock);
-	if (usb_submit_urb(dev->urb, GFP_KERNEL)) {
-		mutex_unlock(&dev->lock);
-		return -EIO;
-	}
+
+	rv = usb_autopm_get_interface(dev->intf);
+	if ( rv < 0)
+		goto err_out;
+
+	rv = usb_submit_urb(dev->urb, GFP_KERNEL);
+	if (rv < 0)
+		goto err_put;
 
 	dev->open = 1;
+	dev->intf->needs_remote_wakeup = 1;
+
+err_put:
+	usb_autopm_put_interface(dev->intf);
+err_out:
 	mutex_unlock(&dev->lock);
-	return 0;
+	return rv;
 }
 
 static void atp_close(struct input_dev *input)
@@ -592,6 +602,7 @@ static void atp_close(struct input_dev *
 	usb_kill_urb(dev->urb);
 	cancel_work_sync(&dev->work);
 	dev->open = 0;
+	dev->intf->needs_remote_wakeup = 0;
 	mutex_unlock(&dev->lock);
 }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux