1. 07 5月, 2014 1 次提交
    • T
      ARM: tegra: Support reboot modes · 498bb3da
      Thierry Reding 提交于
      The boot ROM on Tegra SoCs supports booting into forced recovery mode
      (RCM) by setting a bit in the PMC scratch register 0. Similarily, the
      Android bootloader examines some of the bits in this register to disable
      autoboot or enter recovery mode.
      
      Support these modes by setting the corresponding bits depending on the
      specified reboot command (forced-recovery, bootloader, recovery). Recent
      systemd-based distributions allow this to be specified using an optional
      argument to the reboot command.
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Tested-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      498bb3da
  2. 19 10月, 2013 2 次提交
  3. 18 9月, 2013 2 次提交
    • S
      ARM: tegra: remove common.c · 51100bdc
      Stephen Warren 提交于
      common.c was create to contain code shared across the various Tegra board
      files. There is now only one board file, tegra.c. So, move the code there.
      One exception is the PMC reboot routine, which moves to pmc.c, and now
      takes advantage of the 'standard' tegra_pmc_readl/writel functions.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      51100bdc
    • S
      ARM: tegra: split tegra_pmc_init() in two · d2207071
      Stephen Warren 提交于
      Tegra's board file currently initializes clocks much earlier than those
      for most other ARM SoCs. The reason is:
      
      * The PMC HW block is involved in the path of some interrupts (i.e. it
      inverts, or not, the IRQ input pin dedicated to the PMIC).
      
      * So, that part of the PMC must be initialized early so that the IRQ
      polarity is correct.
      
      * The PMC initialization is currently monolithic, and the PMC has some
      clock inputs, so the init routine ends up calling of_clk_get_by_name(),
      and hence clocks must be set up early too.
      
      In order to defer clock initialization to the more typical location,
      split out the portions of tegra_pmc_init() that are truly IRQ-related
      into a separate tegra_pmc_init_irq(), which can be called from the
      machine descriptor's .init_irq() function, and defer the rest until
      the machine descriptor's .init_machine() function. This allows the
      clock initiliazation to happen from the machine descriptor's
      .init_time() function, as is typical.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      d2207071
  4. 13 8月, 2013 2 次提交
    • J
      ARM: tegra: add common LP1 suspend support · 95872f42
      Joseph Lo 提交于
      The LP1 suspending mode on Tegra means CPU rail off, devices and PLLs are
      clock gated and SDRAM in self-refresh mode. That means the low level LP1
      suspending and resuming code couldn't be run on DRAM and the CPU must
      switch to the always on clock domain (a.k.a. CLK_M 12MHz oscillator). And
      the system clock (SCLK) would be switched to CLK_S, a 32KHz oscillator.
      The LP1 low level handling code need to be moved to IRAM area first. And
      marking the LP1 mask for indicating the Tegra device is in LP1. The CPU
      power timer needs to be re-calculated based on 32KHz that was originally
      based on PCLK.
      
      When resuming from LP1, the LP1 reset handler will resume PLLs and then
      put DRAM to normal mode. Then jumping to the "tegra_resume" that will
      restore full context before back to kernel. The "tegra_resume" handler
      was expected to be found in PMC_SCRATCH41 register.
      
      This is common LP1 procedures for Tegra, so we do these jobs mainly in
      this patch:
      * moving LP1 low level handling code to IRAM
      * marking LP1 mask
      * copying the physical address of "tegra_resume" to PMC_SCRATCH41
      * re-calculate the CPU power timer based on 32KHz
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      [swarren, replaced IRAM_CODE macro with IO_ADDRESS(TEGRA_IRAM_CODE_AREA)]
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      95872f42
    • J
      ARM: tegra: config the polarity of the request of sys clock · 444f9a80
      Joseph Lo 提交于
      When suspending to LP1 mode, the SYSCLK will be clock gated. And different
      board may have different polarity of the request of SYSCLK, this patch
      configure the polarity from the DT for the board.
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      444f9a80
  5. 20 7月, 2013 1 次提交
  6. 26 6月, 2013 1 次提交
  7. 04 4月, 2013 3 次提交
  8. 12 3月, 2013 3 次提交
  9. 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
  10. 07 2月, 2012 1 次提交