1. 13 8月, 2013 1 次提交
    • J
      ARM: tegra: add LP1 suspend support for Tegra30 · e7a932b1
      Joseph Lo 提交于
      The LP1 suspend mode will power off the CPU, clock gated the PLLs and put
      SDRAM to self-refresh mode. Any interrupt can wake up device from LP1. The
      sequence when LP1 suspending:
      
      * tunning off L1 data cache and the MMU
      * storing some EMC registers, DPD (deep power down) status, clk source of
        mselect and SCLK burst policy
      * putting SDRAM into self-refresh
      * switching CPU to CLK_M (12MHz OSC)
      * tunning off PLLM, PLLP, PLLA, PLLC and PLLX
      * switching SCLK to CLK_S (32KHz OSC)
      * shutting off the CPU rail
      
      The sequence of LP1 resuming:
      
      * re-enabling PLLM, PLLP, PLLA, PLLC and PLLX
      * restoring the clk source of mselect and SCLK burst policy
      * setting up CCLK burst policy to PLLX
      * restoring DPD status and some EMC registers
      * resuming SDRAM to normal mode
      * jumping to the "tegra_resume" from PMC_SCRATCH41
      
      Due to the SDRAM will be put into self-refresh mode, the low level
      procedures of LP1 suspending and resuming should be copied to
      TEGRA_IRAM_CODE_AREA (TEGRA_IRAM_BASE + SZ_4K) when suspending. Before
      restoring the CPU context when resuming, the SDRAM needs to be switched
      back to normal mode. And the PLLs need to be re-enabled, SCLK burst policy
      be restored, CCLK burst policy be set in PLLX. Then jumping to
      "tegra_resume" that was expected to be stored in PMC_SCRATCH41 to restore
      CPU context and back to kernel.
      
      Based on the work by: Scott Williams <scwilliams@nvidia.com>
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      e7a932b1
  2. 20 7月, 2013 2 次提交
  3. 23 5月, 2013 1 次提交
  4. 29 1月, 2013 2 次提交
    • J
      ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode · 1d328606
      Joseph Lo 提交于
      The "powered-down" cpuidle mode of Tegra20 needs the CPU0 be the last one
      core to go into this mode before other core. The coupled cpuidle framework
      can help to sync the MPCore to coupled state then go into "powered-down"
      idle mode together. The driver can just assume the MPCore come into
      "powered-down" mode at the same time. No need to take care if the CPU_0
      goes into this mode along and only can put it into safe idle mode (WFI).
      
      The powered-down state of Tegra20 requires power gating both CPU cores.
      When the secondary CPU requests to enter powered-down state, it saves
      its own contexts and then enters WFI for waiting CPU0 in the same state.
      When the CPU0 requests powered-down state, it attempts to put the secondary
      CPU into reset to prevent it from waking up. Then power down both CPUs
      together and power off the cpu rail.
      
      Be aware of that, you may see the legacy power state "LP2" in the code
      which is exactly the same meaning of "CPU power down".
      
      Based on the work by:
      Colin Cross <ccross@android.com>
      Gary King <gking@nvidia.com>
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Acked-by: NColin Cross <ccross@android.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      1d328606
    • J
      ARM: tegra: update the cache maintenance order for CPU shutdown · 57886616
      Joseph Lo 提交于
      Updating the cache maintenance order before CPU shutdown when doing CPU
      hotplug.
      The old order:
      * clean L1 by flush_cache_all
      * exit SMP
      * CPU shutdown
      Adapt to:
      * disable L1 data cache by clear C bit
      * clean L1 by v7_flush_dcache_louis
      * exit SMP
      * CPU shutdown
      
      For CPU hotplug case, it's no need to do "flush_cache_all". And we should
      disable L1 data cache before clean L1 data cache. Then leaving the SMP
      coherency.
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Acked-by: NPeter De Schrijver <pdeschrijver@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      57886616
  5. 16 11月, 2012 3 次提交
  6. 06 11月, 2012 1 次提交
    • S
      ARM: tegra: move iomap.h to mach-tegra · 2be39c07
      Stephen Warren 提交于
      Nothing outside mach-tegra uses this file, so there's no need for it to
      be in <mach/>.
      
      Since uncompress.h and debug-macro.S remain in include/mach, they need
      to include "../../iomap.h" becaue of this change. uncompress.h will soon
      be deleted in later multi-platform/single-zImage patches. debug-macro.S
      will need to continue to include this header using an explicit relative
      path, to avoid duplicating the physical->virtual address mapping that
      iomap.h dictates.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      2be39c07
  7. 14 9月, 2012 1 次提交
  8. 12 6月, 2012 1 次提交
  9. 26 3月, 2012 1 次提交
    • S
      ARM: tegra: Include assembler.h in sleep.S to fix build break · 7175f80b
      Stephen Warren 提交于
      Commit 6f6f6a70 "ARM: create a common IOMEM definition" moved macro
      IOMEM(), and requires users to include <asm/assembler.h>. Fix Tegra's
      sleep.S to do so. This fixes:
      
      arch/arm/mach-tegra/sleep.S: Assembler messages:
      arch/arm/mach-tegra/sleep.S:77: Error: missing ')'
      arch/arm/mach-tegra/sleep.S:77: Error: garbage following instruction
          -- `movw r0,#:lower16:(0x60007000-0x60000000+IOMEM(0xFE200000))'
      
      Note: This only shows up after 0a258935 "ARM: tegra: update defconfig"
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      7175f80b
  10. 07 2月, 2012 1 次提交