• David Brownell's avatar
    [PATCH] usbcore and system sleep states · 3cf710a1
    David Brownell authored
    This patch makes usbcore behave better with system sleep states, fixing
    some PM/PCI integration problems as well as some PM/USB ones.
    
     - PCI HCDs should behave better, even if they don't support PCI PM;
       tested with both ACPI and APM suspend cycles, and swsusp.
    
     - Systems that advertise ACPI S1 support don't necessarily support the
       PCI D1 or D2 states for their USB controllers.  (Examples include
       Centrino laptops.)  This patch makes them suspend into D3hot, which
       always works (and won't take much longer to resume, either).
    
     - Handle the "go into deeper suspend" transition the way PCI drivers
       are supposed to.
    
     - Understand that USB only has one suspend state:  if the device is
       suspended, it can't do any better.
    
     - Export some symbols to HCDs, so they can reuse more of the existing
       usbcore framework.
    
    Plus minor related cleanups.
    
    The PCI D1/D2 state issue is a variant of an earlier problem, with the
    same root cause:  the PM core thinking there's a one-to-one mapping
    between system states (roughly:  ACPI S0/S1/S3/S4) and PCI states that
    a given device can support (only D0 is required, D3hot is common).
    That same issue comes up again with USB.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
    3cf710a1
usb.c 45.8 KB