1. 01 9月, 2014 1 次提交
  2. 25 4月, 2014 1 次提交
  3. 26 11月, 2013 1 次提交
    • D
      ARM: vexpress/TC2: Implement MCPM power_down_finish() · 33cb667a
      Dave Martin 提交于
      This patch implements the power_down_finish() method for TC2, to
      enable the kernel to confirm when CPUs are safely powered down.
      
      The information required for determining when a CPU is parked
      cannot be obtained from any single place, so a few sources of
      information must be combined:
      
        * mcpm_cpu_power_down() must be pending for the CPU, so that we
          don't get confused by false STANDBYWFI positives arising from
          CPUidle.  This is detected by waiting for the tc2_pm use count
          for the target CPU to reach 0.
      
        * Either the SPC must report that the CPU has asserted
          STANDBYWFI, or the TC2 tile's reset control logic must be
          holding the CPU in reset.
      
          Just checking for STANDBYWFI is not sufficient, because this
          signal is not latched when the the cluster is clamped off and
          powered down: the relevant status bits just drop to zero.  This
          means that STANDBYWFI status cannot be used for reliable
          detection of the last CPU in a cluster reaching WFI.
      
      This patch is required in order for kexec to work with MCPM on TC2.
      
      MCPM code was changed in commit 0de0d646 ('ARM: 7848/1: mcpm:
      Implement cpu_kill() to synchronise on powerdown'), and since then it
      will hit a WARN_ON_ONCE() due to power_down_finish not being implemented
      on the TC2 platform.
      Signed-off-by: NDave Martin <Dave.Martin@arm.com>
      Acked-by: NPawel Moll <pawel.moll@arm.com>
      Reviewed-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      33cb667a
  4. 30 10月, 2013 3 次提交
  5. 07 8月, 2013 1 次提交
    • L
      ARM: vexpress/TC2: add Serial Power Controller (SPC) support · 63819cb1
      Lorenzo Pieralisi 提交于
      The TC2 versatile express core tile integrates a logic block that provides
      the interface between the dual cluster test-chip and the M3 microcontroller
      that carries out power management. The logic block, called Serial Power
      Controller (SPC), contains several memory mapped registers to control among
      other things low-power states, wake-up irqs and per-CPU jump addresses
      registers.
      
      This patch provides a driver that enables run-time control of features
      implemented by the SPC power management control logic with an API to
      be used by different subsystem drivers on top.
      
      The SPC control logic is required to be programmed very early in the boot
      process to reset secondary CPUs on the TC2 testchip, set-up jump addresses
      and wake-up IRQs for power management. Hence, waiting for core changes to
      be made in the device core code to enable early registration of platform
      devices, the driver puts in place an early init scheme that allows kernel
      drivers to initialize the SPC driver directly from the components requiring
      it, if their initialization routine is called before this driver init
      function during the boot process.
      
      Device tree bindings documentation for the SPC component is also provided.
      
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Amit Kucheria <amit.kucheria@linaro.org>
      Cc: Jon Medhurst <tixy@linaro.org>
      Signed-off-by: NAchin Gupta <achin.gupta@arm.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: NSudeep KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com>
      Acked-by: NPawel Moll <pawel.moll@arm.com>
      [ np: moved from drivers/mfd/ to drivers/platform/vexpress/ ]
      Signed-off-by: NNicolas Pitre <nico@linaro.org>
      [ PM: moved again to arch/arm/mach-vexpress, requested by Olof ]
      [ PM: removed useless printk, from Olof ]
      [ PM: made the driver SPC-only ]
      Signed-off-by: NPawel Moll <pawel.moll@arm.com>
      63819cb1