Skip to content
  1. Feb 24, 2010
  2. Feb 23, 2010
    • Sanjeev Premi's avatar
      OMAP3: cpuidle: Update statistics for correct state · 6af83b38
      Sanjeev Premi authored
      
      
      When 'enable_off_mode' is 0, the target power state for MPU
      and CORE was locally changed to PWRDM_POWER_RET but, the
      statistics are updated for idle state originally selected
      by the governor.
      
      This patch 'invalidates' the idle states that lead either of
      MPU or Core to PWRDM_POWER_OFF state when 'enable_off_mode'
      is '0'. The states are valid once 'enable_off_mode' is set
      to '1'.
      
      Added function next_valid_state() to check if current state
      is valid; else get the next valid state. It is called from
      omap3_enter_idle_bm().
      
      Signed-off-by: default avatarSanjeev Premi <premi@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
      6af83b38
  3. Jan 27, 2010
    • Paul Walmsley's avatar
      OMAP clockdomains: add usecounting for wakeup and sleep dependencies · 369d5614
      Paul Walmsley authored
      
      
      Add usecounting for wakeup and sleep dependencies.  In the current
      situation, if several functions add dependencies on the same
      clockdomains, when the first dependency removal function is called,
      the dependency will be incorrectly removed from the hardware.
      
      Add clkdm_clear_all_wkdeps() and clkdm_clear_all_sleepdeps(), which
      provide a fast and usecounting-consistent way to clear all hardware
      clockdomain dependencies, since accesses to these registers can be
      quite slow.  pm{2,3}4xx.c has been updated to use these new functions.
      The original version of this patch did not touch these files, which
      previously wrote directly to the wkdep registers, and thus confused
      the usecounting code.  This problem was found by Kevin Hilman
      <khilman@deeprootsystems.com>.
      
      N.B.: This patch introduces one significant functional difference over
      the previous pm34xx.c code: sleepdeps are now cleared during
      clockdomain initialization, whereas previously they were left
      untouched.  This has been tested by Kevin and confirmed to work.
      
      The original version of this patch also did not take into
      consideration that some clockdomains do not have sleep or wakeup
      dependency sources, which caused NULL pointer dereferences.  This
      problem was debugged and fixed by Kevin Hilman
      <khilman@deeprootsystems.com>.
      
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
      Cc: Jouni Högander <jouni.hogander@nokia.com>
      369d5614
    • Paul Walmsley's avatar
      OMAP2/3 clkdm/pwrdm: move wkdep/sleepdep handling from pwrdm to clkdm · 55ed9694
      Paul Walmsley authored
      
      
      Move clockdomain wakeup dependency and sleep dependency data
      structures from the powerdomain layer to the clockdomain layer, where
      they belong.  These dependencies were originally placed in the
      powerdomain layer due to unclear documentation; however, it is clear
      now that these dependencies are between clockdomains.  For OMAP2/3,
      this is not such a big problem, but for OMAP4 this needs to be fixed.
      
      Thanks to Benoît Cousson <b-cousson@ti.com> for his advice on this
      patch.
      
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Benoît Cousson <b-cousson@ti.com>
      55ed9694
    • Abhijit Pagare's avatar
      ARM: OMAP4: PM: OMAP4 Power Domain Porting Related Clean-up. · 37903009
      Abhijit Pagare authored
      
      
      Module offsets were same for OMAP2 and OMAP3 while they differ for OMAP4.
      Hence we need different macros for identifying platform specific offsets.
      
      Signed-off-by: default avatarAbhijit Pagare <abhijitpagare@ti.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Benoit Cousson <b-cousson@ti.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      37903009
  4. Jan 21, 2010
  5. Jan 08, 2010
  6. Nov 11, 2009
  7. Oct 22, 2009
    • Kevin Hilman's avatar
      omap3: PM: enable UART3 module wakeups · b427f92f
      Kevin Hilman authored
      
      
      UART3 is in the PER powerdomain.  If PER goes idle/inactive
      independently of CORE, for UART3 to wakeup it must have its wakeup
      enable bits setup in PM_WKEN_PER.  This patch enables these bits.
      
      The reason it works when PER and CORE work together is because when
      CORE goes inactive/retention, the IOPAD wakeups are enabled and
      trigger UART3 wakeup.
      
      Without this patch, when the UART inactivity timer fires for UART3,
      its clocks are disabled and it's unable to wakeup so will be unusable
      until PER is awoken by another source.
      
      Another way of testing is by keeping CORE on during suspend but
      allowing PER to hit retention
      
        # echo 3 > /debug/pm_debug/core_pwrdm/suspend
      
      then enter suspend
      
        # echo mem > /sys/power/state
      
      Without this patch, UART3 will be unable to wakeup the system.
      
      Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      b427f92f
  8. Oct 20, 2009
    • Tony Lindgren's avatar
      omap: headers: Move remaining headers from include/mach to include/plat · ce491cf8
      Tony Lindgren authored
      
      
      Move the remaining headers under plat-omap/include/mach
      to plat-omap/include/plat. Also search and replace the
      files using these headers to include using the right path.
      
      This was done with:
      
      #!/bin/bash
      mach_dir_old="arch/arm/plat-omap/include/mach"
      plat_dir_new="arch/arm/plat-omap/include/plat"
      headers=$(cd $mach_dir_old && ls *.h)
      omap_dirs="arch/arm/*omap*/ \
      drivers/video/omap \
      sound/soc/omap"
      other_files="drivers/leds/leds-ams-delta.c \
      drivers/mfd/menelaus.c \
      drivers/mfd/twl4030-core.c \
      drivers/mtd/nand/ams-delta.c"
      
      for header in $headers; do
      	old="#include <mach\/$header"
      	new="#include <plat\/$header"
      	for dir in $omap_dirs; do
      		find $dir -type f -name \*.[chS] | \
      			xargs sed -i "s/$old/$new/"
      	done
      	find drivers/ -type f -name \*omap*.[chS] | \
      		xargs sed -i "s/$old/$new/"
      	for file in $other_files; do
      		sed -i "s/$old/$new/" $file
      	done
      done
      
      for header in $(ls $mach_dir_old/*.h); do
      	git mv $header $plat_dir_new/
      done
      
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      ce491cf8
  9. Oct 05, 2009
    • 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
Loading