Skip to content
  • Kevin Hilman's avatar
    OMAP3: PM: Enable GPIO module-level wakeups · eb350f74
    Kevin Hilman authored
    Currently, only GPIOs in the wakeup domain (GPIOs in bank 0) are
    enabled as wakups.  This patch also enables GPIOs in the PER
    powerdomain (banks 2-6) to be used as possible wakeup sources.
    
    In addition, this patch ensures that all GPIO wakeups can wakeup
    the MPU using the PM_MPUGRPSEL_<pwrdm> registers.
    
    NOTE: this doesn't enable the individual GPIOs as wakeups, this simply
    enables the per-bank wakeups at the powerdomain level.
    
    This problem was discovered by Mike Chan when preventing the CORE
    powerdomain from going into retention/off.  When CORE was allowed to
    hit retention, GPIO wakeups via IO pad were working fine, but when
    CORE remained on, GPIO module-level wakeups were not working properly.
    
    To test, prevent CORE from going inactive/retention/off, thus
    preventing the IO chain from being armed:
    
      # echo 3 > /debug/pm_debug/core_pwrdm/suspend
    
    This ensures that GPIO wakeups happen via module-level wakeups and
    not via IO pad.
    
    Tested on 3430SDP using the touchscreen GPIO (gpio 2, in WKUP)
    Tested on Zoom2 using the QUART interrup GPIO  (gpio 102, in PER)
    
    Also, c.f. OMAP PM wiki for troubleshooting GPIO wakeup issues:
    http://elinux.org/OMAP_Power_Management
    
    
    
    Reported-by: default avatarMike Chan <mikechan@google.com>
    Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
    eb350f74