1. 19 10月, 2013 2 次提交
  2. 08 10月, 2013 1 次提交
  3. 18 9月, 2013 7 次提交
    • S
      ARM: tegra: make tegra_init_fuse() __init · 5875df17
      Stephen Warren 提交于
      It's a one-time initialization function, called early during boot.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      5875df17
    • S
      ARM: tegra: remove much of iomap.h · 4cf6791a
      Stephen Warren 提交于
      iomap.h defines the base address of Tegra peripherals. Most of this
      information comes from device tree now, and hence can be deleted.
      Entries are kept for various system peripherals that low-level code
      (such as initial boot, system suspend/resume, debug) still requires.
      
      Removing the values removes the temptation for someone to use them.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      4cf6791a
    • S
      ARM: tegra: move resume vector define to irammap.h · fddb770d
      Stephen Warren 提交于
      irammap.h's purpose is to define the layout/usage of IRAM. As such,
      TEGRA_IRAM_CODE_AREA should have been added there rather than iomap.h.
      Move the define, and rename it something more descriptive.
      
      Cc: Joseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      fddb770d
    • S
      ARM: tegra: delete gpio-names.h · 6ae89416
      Stephen Warren 提交于
      gpio-names.h defines IDs for GPIOs. This information now comes from
      device tree, so delete this stale header. The one remaining use-case is
      board-paz00.c's wifi_rfkill device. Isolate the knowledge of those GPIO
      IDs into that file. Let's hope the values stay valid:-)
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      6ae89416
    • S
      ARM: tegra: delete stale header content · 6163afd5
      Stephen Warren 提交于
      A few function prototypes were left in header files during code re-
      organization. Delete them.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      6163afd5
    • 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. 30 8月, 2013 1 次提交
  5. 14 8月, 2013 2 次提交
  6. 13 8月, 2013 6 次提交
    • J
      ARM: tegra: add LP1 suspend support for Tegra114 · e9f62449
      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. 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: Bo Yan <byan@nvidia.com>
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      e9f62449
    • J
      ARM: tegra: add LP1 suspend support for Tegra20 · 731a9274
      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
      * putting SDRAM into self-refresh
      * storing some EMC registers and SCLK burst policy
      * switching CPU to CLK_M (12MHz OSC)
      * switching SCLK to CLK_S (32KHz OSC)
      * tunning off PLLM, PLLP and PLLC
      * shutting off the CPU rail
      
      The sequence of LP1 resuming:
      
      * re-enabling PLLM, PLLP, and PLLC
      * restoring some EMC registers and SCLK burst policy
      * setting up CCLK burst policy to PLLP
      * 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 PLLP. 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:
      Colin Cross <ccross@android.com>
      Gary King <gking@nvidia.com>
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      731a9274
    • 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
    • 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
    • J
      ARM: tegra: add common resume handling code for LP1 resuming · 5b795d05
      Joseph Lo 提交于
      Add support to the Tegra CPU reset vector to detect whether the CPU is
      resuming from LP1 suspend state. If it is, branch to the LP1-specific
      resume code.
      
      When Tegra enters the LP1 suspend state, the SDRAM controller is placed
      into a self-refresh state. For this reason, we must place the LP1 resume
      code into IRAM, so that it is accessible before SDRAM access has been
      re-enabled.
      Signed-off-by: NJoseph Lo <josephl@nvidia.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      5b795d05
  7. 09 8月, 2013 1 次提交
    • S
      ARM: tegra: unify Tegra's Kconfig a bit more · 20984c44
      Stephen Warren 提交于
      Move all common select clauses from ARCH_TEGRA_*_SOC to ARCH_TEGRA to
      eliminate duplication. The USB-related selects all should have been
      common too, but were missing from Tegra114 previously. Move these to
      ARCH_TEGRA too. The latter fixes a build break when only Tegra114
      support was enabled, but not Tegra20 or Tegra30 support.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      20984c44
  8. 29 7月, 2013 1 次提交
  9. 20 7月, 2013 12 次提交
  10. 16 7月, 2013 1 次提交
  11. 15 7月, 2013 1 次提交
    • P
      arm: delete __cpuinit/__CPUINIT usage from all ARM users · 8bd26e3a
      Paul Gortmaker 提交于
      The __cpuinit type of throwaway sections might have made sense
      some time ago when RAM was more constrained, but now the savings
      do not offset the cost and complications.  For example, the fix in
      commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time")
      is a good example of the nasty type of bugs that can be created
      with improper use of the various __init prefixes.
      
      After a discussion on LKML[1] it was decided that cpuinit should go
      the way of devinit and be phased out.  Once all the users are gone,
      we can then finally remove the macros themselves from linux/init.h.
      
      Note that some harmless section mismatch warnings may result, since
      notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
      and are flagged as __cpuinit  -- so if we remove the __cpuinit from
      the arch specific callers, we will also get section mismatch warnings.
      As an intermediate step, we intend to turn the linux/init.h cpuinit
      related content into no-ops as early as possible, since that will get
      rid of these warnings.  In any case, they are temporary and harmless.
      
      This removes all the ARM uses of the __cpuinit macros from C code,
      and all __CPUINIT from assembly code.  It also had two ".previous"
      section statements that were paired off against __CPUINIT
      (aka .section ".cpuinit.text") that also get removed here.
      
      [1] https://lkml.org/lkml/2013/5/20/589
      
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      8bd26e3a
  12. 10 7月, 2013 1 次提交
  13. 26 6月, 2013 1 次提交
  14. 25 6月, 2013 1 次提交
  15. 18 6月, 2013 1 次提交
  16. 07 6月, 2013 1 次提交