1. 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
  2. 09 Jan, 2020 1 commit
  3. 28 Nov, 2019 1 commit
    • Varun Wadekar's avatar
      Tegra: introduce plat_enable_console() · 117dbe6c
      Varun Wadekar authored
      
      
      This patch introduces the 'plat_enable_console' handler to allow
      the platform to enable the right console. Tegra194 platform supports
      multiple console, while all the previous platforms support only one
      console.
      
      For Tegra194 platforms, the previous bootloader checks the platform
      config and sets the uart-id boot parameter, to 0xFE. On seeing this
      boot parameter, the platform port uses the proper memory aperture
      base address to communicate with the SPE. This functionality is
      currently protected by a platform macro, ENABLE_CONSOLE_SPE.
      
      Change-Id: I3972aa376d66bd10d868495f561dc08fe32fcb10
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      117dbe6c
  4. 24 Oct, 2019 1 commit
  5. 15 Aug, 2019 1 commit
  6. 31 Jan, 2019 2 commits
    • Varun Wadekar's avatar
      Tegra: support for System Suspend using sc7entry-fw binary · 3ca3c27c
      Varun Wadekar authored
      
      
      This patch adds support to enter System Suspend on Tegra210 platforms
      without the traditional BPMP firmware. The BPMP firmware will no longer
      be supported on Tegra210 platforms and its functionality will be
      divided across the CPU and sc7entry-fw.
      
      The sc7entry-fw takes care of performing the hardware sequence required
      to enter System Suspend (SC7 power state) from the COP. The CPU is required
      to load this firmware to the internal RAM of the COP and start the sequence.
      The CPU also make sure that the COP is off after cold boot and is only
      powered on when we want to start the actual System Suspend sequence.
      
      The previous bootloader loads the firmware to TZDRAM and passes its base and
      size as part of the boot parameters. The EL3 layer is supposed to sanitize
      the parameters before touching the firmware blob.
      
      To assist the warmboot code with the PMIC discovery, EL3 is also supposed to
      program PMC's scratch register #210, with appropriate values. Without these
      settings the warmboot code wont be able to get the device out of System
      Suspend.
      
      Change-Id: I5a7b868512dbfd6cfefd55acf3978a1fd7ebf1e2
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      3ca3c27c
    • Varun Wadekar's avatar
      Tegra: default platform handler for the CPU_STANDBY state · 0887026e
      Varun Wadekar authored
      
      
      This patch adds a default implementation for the platform specific
      CPU standby power handler. Tegra SoCs can override this handler
      with their own implementations.
      
      Change-Id: I91e513842f194b1e2b1defa2d833bb4d9df5f06b
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      0887026e
  7. 23 Jan, 2019 1 commit
    • Dilan Lee's avatar
      Tegra: add 'late' platform setup handler · 3e1923d9
      Dilan Lee authored
      
      
      This patch adds a platform setup handler that gets called after
      the MMU is enabled. Platforms wanting to make use of this handler
      should declare 'plat_late_platform_setup' handler in their platform
      files, to override the default weakly defined handler.
      
      Change-Id: Ibc97a2e5a24608ddea856d0bd543a9d5876f604c
      Signed-off-by: default avatarDilan Lee <dilee@nvidia.com>
      3e1923d9
  8. 18 Jan, 2019 4 commits
    • Varun Wadekar's avatar
      Tegra: lib: library for profiling the cold boot path · 087cf68a
      Varun Wadekar authored
      
      
      The non secure world would like to profile the boot path for
      the EL3 and S-EL1 firmwares. To allow it to do that, a non-secure
      DRAM region (4K) is allocated and the base address is passed to
      the EL3 firmware.
      
      This patch adds a library to allow the platform code to store the
      tag:timestamp pair to the shared memory. The tegra platform code
      then uses the `record` method to add timestamps.
      
      Original change by Akshay Sharan <asharan@nvidia.com>
      
      Change-Id: Idbbef9c83ed84a508b04d85a6637775960dc94ba
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      087cf68a
    • Steven Kao's avatar
      Tegra: read-modify-write ACTLR_ELx registers · 75516c3e
      Steven Kao authored
      
      
      This patch changes direct writes to ACTLR_ELx registers to use
      read-modify-write instead.
      
      Change-Id: I6e0eaa6974583f3035cb3724088f3f1c849da229
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      75516c3e
    • Anthony Zhou's avatar
      Tegra: pm: fix MISRA defects · b36aea5a
      Anthony Zhou authored
      
      
      Main fixes:
      
      * Use int32_t replace int, use uint32_t replace unsign int
        [Rule 4.6]
      * Add function define to header file [Rule 8.4]
      * Added curly braces ({}) around if statements in order to
        make them compound [Rule 15.6]
      * Voided non c-library functions whose return types are not used
        [Rule 17.7]
      
      Change-Id: Ifa3ba4e75046697cfede885096bee9a30efe6519
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      b36aea5a
    • Varun Wadekar's avatar
      Tegra: fix MISRA defects in tegra_bl31_setup.c · fcf23a14
      Varun Wadekar authored
      
      
      Main fixes:
      
      Add parentheses to avoid implicit operator precedence [Rule 12.1]
      
      Fixed if statement conditional to be essentially boolean [Rule 14.4]
      
      Added curly braces ({}) around if statements in order to
      make them compound [Rule 15.6]
      
      Voided non c-library functions whose return types are not used [Rule 17.7]
      
      Bug 200272157
      
      Change-Id: Ic3ab5a3de95aeb6d2265df940f7fb35ea0f19ab0
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      fcf23a14
  9. 16 Jan, 2019 5 commits
    • Anthony Zhou's avatar
      Tegra186: setup: fix defects flagged by MISRA scan · d6102295
      Anthony Zhou authored
      
      
      Main fixes:
      
      Added explicit casts (e.g. 0U) to integers in order for them to be
      compatible with whatever operation they're used in [Rule 10.1]
      
      Force operands of an operator to the same type category [Rule 10.4]
      
      Added curly braces ({}) around if statements in order to
      make them compound [Rule 15.6]
      
      Change-Id: I4840c3122939f736113d61f1462af3bd7b0b5085
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      d6102295
    • Anthony Zhou's avatar
      Tegra186: PM: fix MISRA defects in plat_psci_handlers.c · 214e8464
      Anthony Zhou authored
      
      
      Main fixes:
      
      Added explicit casts (e.g. 0U) to integers in order for them to be
      compatible with whatever operation they're used in [Rule 10.1]
      
      convert object type to match the type of function parameters
      [Rule 10.3]
      
      Force operands of an operator to the same type category [Rule 10.4]
      
      Fix implicit widening of composite assignment [Rule 10.6]
      
      Change-Id: I5840a07f37beefc3326ac56d0b4a4701602bd8a8
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      214e8464
    • Anthony Zhou's avatar
      Tegra186: secondary: fix MISRA defects · 592035d0
      Anthony Zhou authored
      
      
      Main fixes:
      
      Added explicit casts (e.g. 0U) to integers in order for them to be
      compatible with whatever operation they're used in [Rule 10.1]
      
      Force operands of an operator to the same type category [Rule 10.4]
      
      Voided non c-library functions whose return types are not used [Rule 17.7]
      
      Change-Id: I758e7ef6d45dd2edf4cd5580e2af15219246e75c
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      592035d0
    • Anthony Zhou's avatar
      Tegra: sip_calls: fix defects flagged by MISRA scan · 1d49112b
      Anthony Zhou authored
      
      
      Main fixes:
      
      * Expressions resulting from the expansion of macro parameters
        shall be enclosed in parentheses [Rule 20.7]
      * Added explicit casts (e.g. 0U) to integers in order for them
        to be compatible with whatever operation they're used in [Rule
        10.1]
      * Fix implicit widening of composite assignment [Rule 10.6]
      
      Change-Id: Ia83c3ab6e4c8c03c19c950978a7936ebfc290590
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      1d49112b
    • Harvey Hsieh's avatar
      Tegra: support to set the L2 ECC and Parity enable bit · b495791b
      Harvey Hsieh authored
      
      
      This patch adds capability to read the boot flag to enable L2 ECC
      and Parity Protection bit for the Cortex-A57 CPUs. The previous
      bootloader sets this flag value for the platform.
      
      * with some coverity fix:
      MISRA C-2012 Directive 4.6
      MISRA C-2012 Rule 2.5
      MISRA C-2012 Rule 10.3
      MISRA C-2012 Rule 10.4
      
      Change-Id: Id7303bbbdc290b52919356c31625847b8904b073
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      b495791b
  10. 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
  11. 18 Dec, 2018 1 commit
  12. 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
  13. 28 Sep, 2018 1 commit
  14. 17 Feb, 2018 1 commit
    • Andreas Färber's avatar
      tegra: Fix mmap_region_t struct mismatch · 28db3e96
      Andreas Färber authored
      Commit fdb1964c
      
       ("xlat: Introduce
      MAP_REGION2() macro") added a granularity field to mmap_region_t.
      
      Tegra platforms were using the v2 xlat_tables implementation in
      common/tegra_common.mk, but v1 xlat_tables.h headers in soc/*/plat_setup.c
      where arrays are being defined. This caused the next physical address to
      be read as granularity, causing EINVAL error and triggering an assert.
      
      Consistently use xlat_tables_v2.h header to avoid this.
      
      Fixes ARM-software/tf-issues#548.
      Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
      28db3e96
  15. 15 Jun, 2017 2 commits
    • Varun Wadekar's avatar
      Tegra: gic: fix MISRA defects · 9a8f05e4
      Varun Wadekar authored
      
      
      Main fixes:
      
      * Use int32_t replace int, use uint32_t replace unsign int [Rule 4.6]
      * Added explicit casts (e.g. 0U) to integers in order for them to be
        compatible with whatever operation they're used in [Rule 10.1]
      * Force operands of an operator to the same type category [Rule 10.4]
      * Fixed assert/if statements conditions to be essentially boolean [Rule 14.4]
      * Added curly braces ({}) around if statements in order to
        make them compound [Rule 15.6]
      * Convert macros form headers to unsigned ints
      
      Change-Id: I8051cc16499cece2039c9751bd347645f40f0901
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      9a8f05e4
    • Varun Wadekar's avatar
      Tegra: add explicit casts for integer macros · 70cb692e
      Varun Wadekar authored
      
      
      This patch adds explicit casts (U(x)) to integers in the tegra_def.h
      headers, to make them compatible with whatever operation they're used
      in [MISRA-C Rule 10.1]
      
      Change-Id: Ic5fc611aad986a2c6e6e6f625e0753ab9b69eb02
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      70cb692e
  16. 03 May, 2017 1 commit
  17. 13 Apr, 2017 2 commits
    • Anthony Zhou's avatar
      Tegra: fix trivial misra issues · 50e91633
      Anthony Zhou authored
      
      
      Not having U or ULL as a suffix for these enums causes
      a lot of unnecessary MISRA issues. This patch adds U or
      ULL suffix to these common enums to reduce number of
      MISRA issues.
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      50e91633
    • Vignesh Radhakrishnan's avatar
      Tegra: Add support for fake system suspend · a9e0260c
      Vignesh Radhakrishnan authored
      
      
      This patch adds support for fake system suspend (SC7).
      This is a debug mode, to ensure that a different code path is
      executed for cases like pre-silicon development, where a
      full-fledged SC7 is not possible in early stages.
      
      This particular patch ensures that, if fake system suspend is
      enabled (denoted by tegra_fake_system_suspend variable
      having a non-zero value), instead of calling WFI, a request
      for a warm reset is made for starting the SC7 exit procedure.
      
      This ensures that the code path of kernel->ATF and back to
      kernel is executed without depending on other components
      involved in SC7 code path.
      
      Additionally, this patch also adds support for SMC call
      from kernel, enabling fake system suspend mode.
      Signed-off-by: default avatarVignesh Radhakrishnan <vigneshr@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      a9e0260c
  18. 23 Mar, 2017 1 commit
    • Varun Wadekar's avatar
      Tegra186: save/restore BL31 context to/from TZDRAM · 68c7de6f
      Varun Wadekar authored
      
      
      This patch adds support to save the BL31 state to the TZDRAM
      before entering system suspend. The TZRAM loses state during
      system suspend and so we need to copy the entire BL31 code to
      TZDRAM before entering the state.
      
      In order to restore the state on exiting system suspend, a new
      CPU reset handler is implemented which gets copied to TZDRAM
      during boot. TO keep things simple we use this same reset handler
      for booting secondary CPUs too.
      
      Change-Id: I770f799c255d22279b5cdb9b4d587d3a4c54fad7
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      68c7de6f
  19. 28 Feb, 2017 5 commits
    • Varun Wadekar's avatar
      Tegra: get BL31 arguments from previous bootloader · 8ab06d2f
      Varun Wadekar authored
      
      
      This patch implements handlers which platforms can override to
      get the BL31 arguments passed by the previous bootloader.
      
      Change-Id: I6b9628a984644ce1b5de5aa6d7cd890e57241d89
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      8ab06d2f
    • Varun Wadekar's avatar
      Tegra: GIC: differentiate between FIQs targeted towards EL3/S-EL1 · 45eab456
      Varun Wadekar authored
      
      
      This patch modifies the secure IRQ registration process to allow platforms
      to specify the target CPUs as well as the owner of the IRQ. IRQs "owned"
      by the EL3 would return INTR_TYPE_EL3 whereas those owned by the Trusted
      OS would return INTR_TYPE_S_EL1 as a result.
      
      Change-Id: I528f7c8220d0ae0c0f354e78d69e188abb666ef6
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      45eab456
    • Varun Wadekar's avatar
      Tegra: implement FIQ interrupt handler · 78e2bd10
      Varun Wadekar authored
      
      
      This patch adds a handler for FIQ interrupts triggered when
      the CPU is in the NS world. The handler stores the NS world's
      context along with ELR_EL3/SPSR_EL3.
      
      The NS world driver issues an SMC initially to register it's
      handler. The monitor firmware stores this handler address and
      jumps to it when the FIQ interrupt fires. Upon entry into the
      NS world the driver then issues another SMC to get the CPU
      context when the FIQ fired. This allows the NS world driver to
      determine the CPU state and call stack when the interrupt
      fired. Generally, systems register watchdog interrupts as FIQs
      which are then used to get the CPU state during hangs/crashes.
      
      Change-Id: I733af61a08d1318c75acedbe9569a758744edd0c
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      78e2bd10
    • Varun Wadekar's avatar
      Tegra: GIC: enable FIQ interrupt handling · d3360301
      Varun Wadekar authored
      
      
      Tegra chips support multiple FIQ interrupt sources. These interrupts
      are enabled in the GICD/GICC interfaces by the tegra_gic driver. A
      new FIQ handler would be added in a subsequent change which can be
      registered by the platform code.
      
      This patch adds the GIC programming as part of the tegra_gic_setup()
      which now takes an array of all the FIQ interrupts to be enabled for
      the platform. The Tegra132 and Tegra210 platforms right now do not
      register for any FIQ interrupts themselves, but will definitely use
      this support in the future.
      
      Change-Id: I0ea164be901cd6681167028fea0567399f18d4b8
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      d3360301
    • Varun Wadekar's avatar
      Tegra: handler for per-soc early setup · 5ea0b028
      Varun Wadekar authored
      
      
      This patch adds a weak handler for early platform setup which
      can be overriden by the soc-specific handlers to perform any
      early setup tasks.
      
      Change-Id: I1a7a98d59b2332a3030c6dca5a9b7be977177326
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      5ea0b028
  20. 22 Feb, 2017 2 commits
    • Varun Wadekar's avatar
      Tegra: init normal/crash console for platforms · e1084216
      Varun Wadekar authored
      
      
      The BL2 fills in the UART controller ID to be used as the normal as
      well as the crash console on Tegra platforms. The controller ID to
      UART controller base address mapping is handled by each Tegra SoC
      the base addresses might change across Tegra chips.
      
      This patch adds the handler to parse the platform params to get the
      UART ID for the per-soc handlers.
      
      Change-Id: I4d167b20a59aaf52a31e2a8edf94d8d6f89598fa
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      e1084216
    • Varun Wadekar's avatar
      Tegra: add tzdram_base to plat_params_from_bl2 struct · e0d4158c
      Varun Wadekar authored
      
      
      This patch adds another member, tzdram_base, to the plat_params_from_bl2 struct
      in order to store the TZDRAM carveout base address used to load the Trusted OS.
      The monitor programs the memory controller with the TZDRAM base and size in order
      to deny any accesses from the NS world.
      
      Change-Id: If39b8674d548175d7ccb6525c18d196ae8a8506c
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      e0d4158c
  21. 20 May, 2016 1 commit
  22. 21 Apr, 2016 1 commit
    • Yatharth Kochar's avatar
      Move `plat_get_syscnt_freq()` to arm_common.c · c073fda1
      Yatharth Kochar authored
      This patch moves the definition for `plat_get_syscnt_freq()`
      from arm_bl31_setup.c to arm_common.c. This could be useful
      in case a delay timer needs to be installed based on the
      generic timer in other BLs.
      This patch also modifies the return type for this function
      from `uint64_t` to `unsigned long long` within ARM and other
      platform files.
      
      Change-Id: Iccdfa811948e660d4fdcaae60ad1d700e4eda80d
      c073fda1
  23. 09 Dec, 2015 1 commit
    • Yatharth Kochar's avatar
      Include psci.h from tegra platform header · ca8b7d51
      Yatharth Kochar authored
      The `plat/nvidia/tegra/include/tegra_private.h` file uses resources
      from psci.h (for example, psci_power_state_t) but does not explicitly
      include psci.h. This does not currently cause a problem since psci.h
      is indirectly included via other headers. However, this may not be
      the case in future.
      
      This patch explicitly includes psci.h from tegra_private.h
      
      Change-Id: Ia991147898dbd117c1d3496a95850995a5554c05
      ca8b7d51
  24. 04 Dec, 2015 1 commit
  25. 31 Jul, 2015 1 commit