1. 11 Mar, 2020 1 commit
  2. 09 Mar, 2020 2 commits
    • Jeetesh Burman's avatar
      Tegra186: add SE support to generate SHA256 of TZRAM · 4eed9c84
      Jeetesh Burman authored
      
      
      The BL3-1 firmware code is stored in TZSRAM on Tegra186 platforms. This
      memory loses power when we enter System Suspend and so its contents are
      stored to TZDRAM, before entry. This opens up an attack vector where the
      TZDRAM contents might be tampered with when we are in the System Suspend
      mode. To mitigate this attack the SE engine calculates the hash of entire
      TZSRAM and stores it in PMC scratch, before we copy data to TZDRAM. The
      WB0 code will validate the TZDRAM and match the hash with the one in PMC
      scratch.
      
      This patch adds driver for the SE engine, with APIs to calculate the hash
      and store SE SHA256 hash-result to PMC scratch registers.
      
      Change-Id: Ib487d5629225d3d99bd35d44f0402d6d3cf27ddf
      Signed-off-by: default avatarJeetesh Burman <jburman@nvidia.com>
      4eed9c84
    • Jeetesh Burman's avatar
      Tegra186: add support for bpmp_ipc driver · 3827aa8a
      Jeetesh Burman authored
      
      
      This patch enables the bpmp-ipc driver for Tegra186 platforms,
      to ask BPMP firmware to toggle SE clock.
      
      Change-Id: Ie63587346c4d9b7e54767dbee17d0139fa2818ae
      Signed-off-by: default avatarJeetesh Burman <jburman@nvidia.com>
      3827aa8a
  3. 31 Jan, 2020 1 commit
    • Varun Wadekar's avatar
      Tegra: per-SoC DRAM base values · 5f1803f9
      Varun Wadekar authored
      
      
      Tegra194 supports upto 64GB of DRAM, whereas the previous SoCs support
      upto 32GB DRAM. This patch moves the common DRAM base/end macros to
      individual Tegra SoC headers to fix this anomaly.
      
      Change-Id: I1a9f386b67c2311baab289e726d95cef6954071b
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      5f1803f9
  4. 31 Jan, 2019 2 commits
    • Steven Kao's avatar
      Tegra: platform dependent address space sizes · 1d11f73e
      Steven Kao authored
      
      
      This patch moves the PLAT_PHY_ADDR_SPACE_SIZE & PLAT_VIRT_ADDR_SPACE
      macros to tegra_def.h, to define the virtual/physical address space
      size on the platform.
      
      Change-Id: I1c5d264c7ffc1af0e7b14cc16ae2c0416efc76f6
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      1d11f73e
    • Jeetesh Burman's avatar
      Tegra: SiP: set GPU in reset after vpr resize · 3e28e935
      Jeetesh Burman authored
      
      
      Whenever the VPR memory is resized, the GPU is put into reset first
      and then the new VPR parameters are programmed to the memory controller
      block. There exists a scenario, where the GPU might be out before we
      program the new VPR parameters. This means, the GPU would still be
      using older settings and leak secrets.
      
      This patch puts the GPU back into reset, if it is out of reset after
      resizing VPR, to mitigate this hole.
      
      Change-Id: I38a1000e3803f80909efcb02e27da4bd46909931
      Signed-off-by: default avatarJeetesh Burman <jburman@nvidia.com>
      3e28e935
  5. 23 Jan, 2019 3 commits
    • Steven Kao's avatar
      Tegra: rename secure scratch register macros · 601a8e54
      Steven Kao authored
      
      
      This patch renames all the secure scratch registers to reflect their
      usage.
      
      This is a list of all the macros being renamed:
      
      - SECURE_SCRATCH_RSV1_* -> SCRATCH_RESET_VECTOR_*
      - SECURE_SCRATCH_RSV6 -> SCRATCH_SECURE_BOOTP_FCFG
      - SECURE_SCRATCH_RSV11_* -> SCRATCH_SMMU_TABLE_ADDR_*
      - SECURE_SCRATCH_RSV53_* -> SCRATCH_BOOT_PARAMS_ADDR_*
      - SECURE_SCRATCH_RSV55_* -> SCRATCH_TZDRAM_ADDR_*
      
      NOTE: Future SoCs will have to define these macros to
            keep the drivers functioning.
      
      Change-Id: Ib3ba40dd32e77b92b47825f19c420e6fdfa8b987
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      601a8e54
    • Steven Kao's avatar
      Tegra: memctrl_v2: allow CPU accesses to TZRAM · d6306d14
      Steven Kao authored
      
      
      This patch enables CPU access configuration register to allow
      accesses to the TZRAM aperture on chips after Tegra186.
      
      Change-Id: I0898582f8bd6fd35360ecf8ca5cee21fe35f7aab
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      d6306d14
    • Harvey Hsieh's avatar
      Tegra: memctrl_v2: pack TZDRAM base to RSVD55_SCRATCH · b886c7c5
      Harvey Hsieh authored
      
      
      This patch saves the TZDRAM_BASE value to secure RSVD55
      scratch register. The warmboot code uses this register to
      restore the settings on exiting System Suspend.
      
      Change-Id: Id76175c2a7d931227589468511365599e2908411
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      b886c7c5
  6. 18 Jan, 2019 4 commits
    • Harvey Hsieh's avatar
      Tegra: memctrl_v2: pack TZDRAM base into SCRATCH54_LO · 70da35b0
      Harvey Hsieh authored
      
      
      This patch moves the TZDRAM base address to SCRATCH55_LO due
      to security concerns. The HI and LO address bits are packed
      into SCRATCH55_LO for the warmboot firmware to restore.
      SCRATCH54_HI is still being used for backward compatibility,
      but would be removed eventually.
      
      The scratch registers are populated as:
      * RSV55_0 = CFG1[12:0] | CFG0[31:20]
      * RSV55_1 = CFG3[1:0]
      * RSV54_1 = CFG1[12:0]
      
      Change-Id: Idc20d165d8117488010fcc8dfd946f7ad475da58
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      70da35b0
    • Anthony Zhou's avatar
      Tegra: fix defects flagged by MISRA Rule 10.3 · aa64c5fb
      Anthony Zhou authored
      
      
      MISRA Rule 10.3, the value of an expression shall not be assigned to
      an object with a narrower essential type or of a different essential
      type category.
      
      The essential type of a enum member is anonymous enum, the enum member
      should be casted to the right type when using it.
      
      Both UL and ULL suffix equal to uint64_t constant in compiler
      aarch64-linux-gnu-gcc, to avoid confusing, only keep U and ULL suffix
      in platform code. So in some case, cast a constant to uint32_t is
      necessary.
      
      Change-Id: I1aae8cba81ef47481736e7f95f53570de7013187
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      aa64c5fb
    • Anthony Zhou's avatar
      Tegra: common: drivers: fix MISRA defects · 61beb3e0
      Anthony Zhou authored
      
      
      Main fixes:
      
      Add suffix U for constant [Rule 10.1]
      
      Match the operands type [Rule 10.4]
      
      Use UL replace U for that constant define that need do "~"
      operation [Rule 12.4]
      
      Voided non c-library functions whose return types are not used
       [Rule 17.7]
      
      Change-Id: Ia1e814ca3890eab7904be9c79030502408f30936
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      61beb3e0
    • Varun Wadekar's avatar
      Tegra: gpcdma: driver for general purpose DMA · 647d4a03
      Varun Wadekar authored
      
      
      This patch adds the driver for the general purpose DMA hardware
      block on newer Tegra SoCs. The GPCDMA is a special purpose DMA
      used to speed up memory copy operations to/from DRAM and TZSRAM.
      
      This patch introduces a macro 'USE_GPC_DMA' to allow platforms
      to override CPU based memory operations.
      
      Change-Id: I3170d409c83b77e785437b1002a8d70188fabbeb
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      647d4a03
  7. 04 Jan, 2019 1 commit
    • Antonio Nino Diaz's avatar
      Sanitise includes across codebase · 09d40e0e
      Antonio Nino Diaz authored
      Enforce full include path for includes. Deprecate old paths.
      
      The following folders inside include/lib have been left unchanged:
      
      - include/lib/cpus/${ARCH}
      - include/lib/el3_runtime/${ARCH}
      
      The reason for this change is that having a global namespace for
      includes isn't a good idea. It defeats one of the advantages of having
      folders and it introduces problems that are sometimes subtle (because
      you may not know the header you are actually including if there are two
      of them).
      
      For example, this patch had to be created because two headers were
      called the same way: e0ea0928 ("Fix gpio includes of mt8173 platform
      to avoid collision."). More recently, this patch has had similar
      problems: 46f9b2c3 ("drivers: add tzc380 support").
      
      This problem was introduced in commit 4ecca339
      
       ("Move include and
      source files to logical locations"). At that time, there weren't too
      many headers so it wasn't a real issue. However, time has shown that
      this creates problems.
      
      Platforms that want to preserve the way they include headers may add the
      removed paths to PLAT_INCLUDES, but this is discouraged.
      
      Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8f
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      09d40e0e
  8. 08 Nov, 2018 1 commit
    • Antonio Nino Diaz's avatar
      Standardise header guards across codebase · c3cf06f1
      Antonio Nino Diaz authored
      
      
      All identifiers, regardless of use, that start with two underscores are
      reserved. This means they can't be used in header guards.
      
      The style that this project is now to use the full name of the file in
      capital letters followed by 'H'. For example, for a file called
      "uart_example.h", the header guard is UART_EXAMPLE_H.
      
      The exceptions are files that are imported from other projects:
      
      - CryptoCell driver
      - dt-bindings folders
      - zlib headers
      
      Change-Id: I50561bf6c88b491ec440d0c8385c74650f3c106e
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c3cf06f1
  9. 15 Jun, 2017 2 commits
  10. 03 May, 2017 1 commit
  11. 01 May, 2017 2 commits
  12. 13 Apr, 2017 1 commit
  13. 07 Apr, 2017 3 commits
  14. 05 Apr, 2017 4 commits
  15. 30 Mar, 2017 4 commits
  16. 27 Mar, 2017 1 commit
  17. 23 Mar, 2017 2 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: re-configure MSS' client settings · e64ce3ab
      Varun Wadekar authored
      
      
      This patch reprograms MSS to make ROC deal with ordering of
      MC traffic after boot and system suspend exit. This is needed
      as device boots with MSS having all control but POR wants ROC
      to deal with the ordering. Performance is expected to improve
      with ROC but since no one has really tested the performance,
      keep the option configurable for now by introducing a platform
      level makefile variable.
      
      Change-Id: I2e782fea138ccf9d281eb043a6b2c3bb97c839a7
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      e64ce3ab
  18. 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
  19. 20 Mar, 2017 4 commits
    • Varun Wadekar's avatar
      Tegra186: register FIQ interrupt sources · 50cd8646
      Varun Wadekar authored
      
      
      This patch registers all the FIQ interrupt sources during platform
      setup. Currently we support AON and TOP watchdog timer interrupts.
      
      Change-Id: Ibccd866f00d6b08b574f765538525f95b49c5549
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      50cd8646
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: implement MC txn override WAR · be87d920
      Varun Wadekar authored
      
      
      This patch sets the Memory Controller's TXN_OVERRIDE registers
      for most write clients to CGID_ADR. This ensures ordering is maintained.
      In some cases WAW ordering problems could occur. There are different
      settings for Tegra version A01 v A02.
      
      Original changes by Alex Waterman <alexw@nvidia.com>
      
      Change-Id: I82ea02afa43a24250ed56985757b83e78e71178c
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      be87d920
    • 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
      Tegra: memctrl_v2: secure the on-chip TZSRAM memory · d48c0c45
      Varun Wadekar authored
      
      
      This patch programs the Memory controller's control registers
      to disable non-secure accesses to the TZRAM. In case these
      registers are already programmed by the BL2/BL30, then the
      driver just bails out.
      
      Change-Id: Ia1416988050e3d067296373060c717a260499122
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      d48c0c45