As recently promised, updates to the TI OMAP OHCI driver PM code to
match what was discussed for Intel PXA27x OHCI PM.  Patch generated
against 2.6.12-rc6-omap1.  Needs more testing; I'm lacking the wacky
cable needed on OMAP1510 Innovator and not sure if my board has the
OHCI rework needed to be functional.  Thanks -- Todd

---
commit aee6d63b2b1f89d1982685018b971e00dbbd1bfd
tree afd55904c197515788e1b3c0daf0bdf1b20099df
parent 7a713aa2919578bcf7188a24c2977d700ea120ef
author Todd Poynor <[EMAIL PROTECTED]> Mon, 13 Jun 2005 18:51:59 -0700
committer Todd Poynor <[EMAIL PROTECTED]> Mon, 13 Jun 2005 18:51:59 -0700

OMAP OHCI PM updates to no longer treat the pm_message_t parameter as an
(ACPI-like) state.

 drivers/usb/host/ohci-omap.c |   53 +++++++++++++-----------------------------
 1 files changed, 16 insertions(+), 37 deletions(-)

diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -461,34 +461,22 @@ static int ohci_hcd_omap_drv_remove(stru
 
 #ifdef CONFIG_PM
 
-/* states match PCI usage, always suspending the root hub except that
- * 4 ~= D3cold (ACPI D3) with clock off (resume sees reset).
- *
- * FIXME: above comment is not right, and code is wrong, too :-(.
- */
-
-static int ohci_omap_suspend(struct device *dev, pm_message_t state, u32 level)
+static int ohci_omap_suspend(struct device *dev, pm_message_t message, u32 
level)
 {
        struct ohci_hcd *ohci = hcd_to_ohci(dev_get_drvdata(dev));
        int             status = -EINVAL;
 
        if (level != SUSPEND_POWER_DOWN)
                return 0;
-       if (state <= dev->power.power_state)
-               return 0;
 
-       dev_dbg(dev, "suspend to %d\n", state);
        down(&ohci_to_hcd(ohci)->self.root_hub->serialize);
        status = ohci_hub_suspend(ohci_to_hcd(ohci));
        if (status == 0) {
-               if (state >= 4) {
-                       omap_ohci_clock_power(0);
-                       ohci_to_hcd(ohci)->self.root_hub->state =
-                                       USB_STATE_SUSPENDED;
-                       state = 4;
-               }
+               omap_ohci_clock_power(0);
+               ohci_to_hcd(ohci)->self.root_hub->state =
+                       USB_STATE_SUSPENDED;
                ohci_to_hcd(ohci)->state = HC_STATE_SUSPENDED;
-               dev->power.power_state = state;
+               dev->power.power_state = PMSG_SUSPEND;
        }
        up(&ohci_to_hcd(ohci)->self.root_hub->serialize);
        return status;
@@ -502,29 +490,20 @@ static int ohci_omap_resume(struct devic
        if (level != RESUME_POWER_ON)
                return 0;
 
-       switch (dev->power.power_state) {
-       case 0:
-               break;
-       case 4:
-               if (time_before(jiffies, ohci->next_statechange))
-                       msleep(5);
-               ohci->next_statechange = jiffies;
-               omap_ohci_clock_power(1);
-               /* FALLTHROUGH */
-       default:
-               dev_dbg(dev, "resume from %d\n", dev->power.power_state);
+       if (time_before(jiffies, ohci->next_statechange))
+               msleep(5);
+       ohci->next_statechange = jiffies;
+       omap_ohci_clock_power(1);
 #ifdef CONFIG_USB_SUSPEND
-               /* get extra cleanup even if remote wakeup isn't in use */
-               status = usb_resume_device(ohci_to_hcd(ohci)->self.root_hub);
+       /* get extra cleanup even if remote wakeup isn't in use */
+       status = usb_resume_device(ohci_to_hcd(ohci)->self.root_hub);
 #else
-               down(&ohci_to_hcd(ohci)->self.root_hub->serialize);
-               status = ohci_hub_resume(ohci_to_hcd(ohci));
-               up(&ohci_to_hcd(ohci)->self.root_hub->serialize);
+       down(&ohci_to_hcd(ohci)->self.root_hub->serialize);
+       status = ohci_hub_resume(ohci_to_hcd(ohci));
+       up(&ohci_to_hcd(ohci)->self.root_hub->serialize);
 #endif
-               if (status == 0)
-                       dev->power.power_state = 0;
-               break;
-       }
+       if (status == 0)
+               dev->power.power_state = PMSG_ON;
        return status;
 }
 


-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
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