This is a note to let you know that I've just added the patch titled

     Subject: [PATCH 6/6] ehci-hcd: fix root-hub wakeup support

to my gregkh-2.6 tree.  Its filename is

     ehci-hcd-fix-root-hub-wakeup-support.patch

This tree can be found at 
    http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/


>From [EMAIL PROTECTED] Wed Aug 30 12:47:40 2006
Date: Wed, 30 Aug 2006 15:47:31 -0400 (EDT)
From: Alan Stern <[EMAIL PROTECTED]>
To: Greg KH <[EMAIL PROTECTED]>
cc: David Brownell <[EMAIL PROTECTED]>, USB development list 
<linux-usb-devel@lists.sourceforge.net>
Subject: [PATCH 6/6] ehci-hcd: fix root-hub wakeup support
Message-ID: <[EMAIL PROTECTED]>

This patch (as738) fixes the root-hub remote-wakeup support in ehci-hcd.
The existing code has two problems.  First, when the bus is suspended
all root-hub interrupts are disabled.  Second, the call to
usb_hcd_resume_root_hub() is in the wrong place -- it is invoked when a
wakeup request arrives on a suspended port rather than when the root hub
itself generates a wakeup request.

Working remote-wakeup support is an important part of autoresume and a
prerequisite for autosuspend.


Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
Cc: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

---
 drivers/usb/host/ehci-hcd.c |    3 +--
 drivers/usb/host/ehci-hub.c |    4 ++++
 2 files changed, 5 insertions(+), 2 deletions(-)

--- gregkh-2.6.orig/drivers/usb/host/ehci-hcd.c
+++ gregkh-2.6/drivers/usb/host/ehci-hcd.c
@@ -616,7 +616,7 @@ static irqreturn_t ehci_irq (struct usb_
                /* resume root hub? */
                status = readl (&ehci->regs->command);
                if (!(status & CMD_RUN))
-                       writel (status | CMD_RUN, &ehci->regs->command);
+                       usb_hcd_resume_root_hub(hcd);
 
                while (i--) {
                        int pstatus = readl (&ehci->regs->port_status [i]);
@@ -633,7 +633,6 @@ static irqreturn_t ehci_irq (struct usb_
                         */
                        ehci->reset_done [i] = jiffies + msecs_to_jiffies (20);
                        ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
-                       usb_hcd_resume_root_hub(hcd);
                }
        }
 
--- gregkh-2.6.orig/drivers/usb/host/ehci-hub.c
+++ gregkh-2.6/drivers/usb/host/ehci-hub.c
@@ -76,6 +76,10 @@ static int ehci_bus_suspend (struct usb_
        ehci_halt (ehci);
        hcd->state = HC_STATE_SUSPENDED;
 
+       /* allow remote wakeup */
+       if (device_may_wakeup(&hcd->self.root_hub->dev))
+               writel (INTR_MASK, &ehci->regs->intr_enable);
+
        ehci->next_statechange = jiffies + msecs_to_jiffies(10);
        spin_unlock_irq (&ehci->lock);
        return 0;


Patches currently in gregkh-2.6 which might be from [EMAIL PROTECTED] are

usb/usbcore-add-usb_device_driver-definition.patch
usb/usbcore-track-whether-interfaces-are-suspended.patch
usb/usbcore-add-configuration_string-to-attribute-group.patch
usb/usbcore-rename-usb_suspend_device-to-usb_port_suspend.patch
usb/usbcore-move-code-among-source-files.patch
usb/usb-pl2303-remove-80-columns-limit-violations-in-pl2303-driver.patch
usb/usb-usbtouchscreen-version-0.4.patch
usb/usbcore-khubd-and-busy-port-handling.patch
usb/usbcore-make-hcd_endpoint_disable-wait-for-queue-to-drain.patch
usb/usb-skeleton-don-t-submit-urbs-after-disconnection.patch
usb/usbcore-fix-up-device-and-power-state-tests.patch
usb/usbcore-make-usb_generic-a-usb_device_driver.patch
usb/usbcore-resume-device-resume-recursion.patch
usb/usbcore-set-device-and-power-states-properly.patch
usb/usbcore-split-suspend-resume-for-device-and-interfaces.patch
usb/usbcore-suspending-devices-with-no-driver.patch
usb/usbfs-detect-device-unregistration.patch
usb/usbfs-private-mutex-for-open-release-and-remove.patch
usb/hub-driver-improve-use-of-ifdef.patch
usb/usb-properly-unregister-reboot-notifier-in-case-of-failure-in-ehci-hcd.patch
usb/wusb-hub-recognizes-wusb-ports.patch
usb/uhci-increase-resume-detect-off-delay.patch
usb/wusb-handle-wusb-device-ep0-speed-settings.patch
usb/wusb-pretty-print-new-devices.patch
usb/usb-deal-with-broken-config-descriptors.patch
usb/usb-hub-driver-perform-autosuspend.patch
usb/usb-storage-fix-for-ufi-lun-detection.patch
usb/usb-remove-struct-usb_operations.patch
usb/usb-usb-hub-driver-improve-use-of-ifdef-fix.patch
usb/usbcore-help-drivers-to-change-device-configs.patch
usb/usb-replace-kernel_thread-with-kthread_run-in-libusual.c.patch
usb/usbcore-add-autosuspend-autoresume-infrastructure.patch
usb/usbcore-add-flag-for-whether-a-host-controller-uses-dma.patch
usb/usbcore-non-hub-specific-uses-of-autosuspend.patch
usb/usbcore-remove-usb_suspend_root_hub.patch
usb/usbcore-store-each-usb_device-s-level-in-the-tree.patch
usb/usbcore-trim-down-usb_bus-structure.patch
usb/usbmon-don-t-call-mon_dmapeek-if-dma-isn-t-being-used.patch
usb/ehci-hcd-fix-root-hub-wakeup-support.patch

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to