1. 30 Mar, 2017 2 commits
    • Varun Wadekar's avatar
      Tegra186: mce: Uncore Perfmon ARI Programming · c11e0ddf
      Varun Wadekar authored
      
      
      Uncore perfmon appears to the CPU as a set of uncore perfmon registers
      which can be read and written using the ARI interface. The MCE code
      sequence handles reads and writes to these registers by manipulating
      the underlying T186 uncore hardware.
      
      To access an uncore perfmon register, CPU software writes the ARI
      request registers to specify
      
      * whether the operation is a read or a write,
      * which uncore perfmon register to access,
      * the uncore perfmon unit, group, and counter number (if necessary),
      * the data to write (if the operation is a write).
      
      It then initiates an ARI request to run the uncore perfmon sequence in
      the MCE and reads the resulting value of the uncore perfmon register
      and any status information from the ARI response registers.
      
      The NS world's MCE driver issues MCE_CMD_UNCORE_PERFMON_REQ command
      for the EL3 layer to start the entire sequence. Once the request
      completes, the NS world would receive the command status in the X0
      register and the command data in the X1 register.
      
      Change-Id: I20bf2eca2385f7c8baa81e9445617ae711ecceea
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      c11e0ddf
    • Varun Wadekar's avatar
      Tegra186: mce: add the mce_update_cstate_info() helper function · 87a1df73
      Varun Wadekar authored
      
      
      This patch adds a helper function to the MCE driver to allow its
      clients to issue UPDATE_CSTATE_INFO requests, without having to
      setup the CPU context struct.
      
      We introduced a struct to encapsulate the request parameters, that
      clients can pass on to the MCE driver. The MCE driver gets the
      parameters from the struct and programs the hardware accordingly.
      
      Change-Id: I02bce57506c4ccd90da82127805d6b564375cbf1
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      87a1df73
  2. 23 Mar, 2017 3 commits
    • Varun Wadekar's avatar
      Tegra186: enable support for simulation environment · abd3a91d
      Varun Wadekar authored
      
      
      The Tegra simulation environment has limited capabilities. This patch
      checks the chip's major and minor versions to decide the features to
      enable/disable - MCE firmware version checking is disabled and limited
      Memory Controller settings are enabled
      
      Change-Id: I258a807cc3b83cdff14a9975b4ab4f9d1a9d7dcf
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      abd3a91d
    • Varun Wadekar's avatar
      Tegra186: check MCE firmware version during boot · 5cb89c56
      Varun Wadekar authored
      
      
      This patch checks that the system is running with the supported MCE
      firmware during boot. In case the firmware version does not match the
      interface header version, then the system halts.
      
      Change-Id: Ib82013fd1c1668efd6f0e4f36cd3662d339ac076
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      5cb89c56
    • Varun Wadekar's avatar
      Tegra186: mce: enable LATIC for chip verification · 66ec1125
      Varun Wadekar authored
      
      
      This patch adds a new interface to allow for making an ARI call that
      will enable LATIC for the chip verification software harness.
      
      LATIC allows some MINI ISMs to be read in the CCPLEX. The ISMs are
      used for various measurements relevant ot particular locations in
      Silicon. They are small counters which can be polled to determine
      how fast a particular location in the Silicon is.
      
      Original change by Guy Sotomayor <gsotomayor@nvidia.com>
      
      Change-Id: Ifb49b8863a009d4cdd5d1ba38a23b5374500a4b3
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      66ec1125
  3. 22 Mar, 2017 1 commit
    • Varun Wadekar's avatar
      Tegra186: implement support for System Suspend · 50402b17
      Varun Wadekar authored
      
      
      This patch adds the chip level support for System Suspend entry
      and exit. As part of the entry sequence we first query the MCE
      firmware to check if it is safe to enter system suspend. Once
      we get a green light, we save hardware block settings and enter
      the power state. As expected, all the hardware settings are
      restored once we exit the power state.
      
      Change-Id: I6d192d7568d6a555eb10efdfd45f6d79c20f74ea
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      50402b17
  4. 20 Mar, 2017 2 commits
    • Varun Wadekar's avatar
      Tegra186: support for C6/C7 CPU_SUSPEND states · 7afd4637
      Varun Wadekar authored
      
      
      This patch adds support for the C6 and C7 CPU_SUSPEND states. C6 is
      an idle state while C7 is a powerdown state.
      
      The MCE block takes care of the entry/exit to/from these core power
      states and hence we call the corresponding MCE handler to process
      these requests. The NS driver passes the tentative time that the
      core is expected to stay in this state as part of the power_state
      parameter, which we store in a per-cpu array and pass it to the
      MCE block.
      
      Change-Id: I152acb11ab93d91fb866da2129b1795843dfa39b
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7afd4637
    • Varun Wadekar's avatar
      Tegra186: mce: driver for the CPU complex power manager block · 7808b06b
      Varun Wadekar authored
      
      
      The CPU Complex (CCPLEX) Power Manager (Denver MCE, or DMCE) is an
      offload engine for BPMP to do voltage related sequencing and for
      hardware requests to be handled in a better latency than BPMP-firmware.
      
      There are two interfaces to the MCEs - Abstract Request Interface (ARI)
      and the traditional NVGINDEX/NVGDATA interface.
      
      MCE supports various commands which can be used by CPUs - ARM as well
      as Denver, for power management and reset functionality. Since the
      linux kernel is the master for all these scenarios, each MCE command
      can be issued by a corresponding SMC. These SMCs have been moved to
      SiP SMC space as they are specific to the Tegra186 SoC.
      
      Change-Id: I67bee83d2289a8ab63bc5556e5744e5043803e51
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7808b06b