1. 07 Feb, 2020 7 commits
    • Vijayenthiran Subramaniam's avatar
      board/rdn1edge: add support for dual-chip configuration · 2d4b719c
      Vijayenthiran Subramaniam authored
      
      
      RD-N1-Edge based platforms can operate in dual-chip configuration
      wherein two rdn1edge SoCs are connected through a high speed coherent
      CCIX link.
      
      This patch adds a function to check if the RD-N1-Edge platform is
      operating in multi-chip mode by reading the SID register's NODE_ID
      value. If operating in multi-chip mode, initialize GIC-600 multi-chip
      operation by overriding the default GICR frames with array of GICR
      frames and setting the chip 0 as routing table owner.
      
      The address space of the second RD-N1-Edge chip (chip 1) starts from the
      address 4TB. So increase the physical and virtual address space size to
      43 bits to accommodate the multi-chip configuration. If the multi-chip
      mode configuration is detected, dynamically add mmap entry for the
      peripherals memory region of the second RD-N1-Edge SoC. This is required
      to let the BL31 platform setup stage to configure the devices in the
      second chip.
      
      PLATFORM_CORE_COUNT macro is set to be multiple of CSS_SGI_CHIP_COUNT
      and topology changes are added to represent the dual-chip configuration.
      
      In order the build the dual-chip platform, CSS_SGI_CHIP_COUNT macro
      should be set to 2:
      export CROSS_COMPILE=<path-to-cross-compiler>
      make PLAT=rdn1edge CSS_SGI_CHIP_COUNT=2 ARCH=aarch64 all
      
      Change-Id: I576cdaf71f0b0e41b9a9181fa4feb7091f8c7bb4
      Signed-off-by: default avatarAditya Angadi <aditya.angadi@arm.com>
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      2d4b719c
    • Aditya Angadi's avatar
      drivers/arm/scmi: allow use of multiple SCMI channels · 31e703f9
      Aditya Angadi authored
      
      
      On systems that have multiple platform components that can interpret the
      SCMI messages, there is a need to support multiple SCMI channels (one
      each to those platform components). Extend the existing SCMI interface
      that currently supports only a single SCMI channel to support multiple
      SCMI channels.
      
      Change-Id: Ice4062475b903aef3b5e5bc37df364c9778a62c5
      Signed-off-by: default avatarAditya Angadi <aditya.angadi@arm.com>
      31e703f9
    • Vijayenthiran Subramaniam's avatar
      plat/arm/sgi: include AFF3 affinity in core position calculation · 80151c27
      Vijayenthiran Subramaniam authored
      
      
      AFF3 bits of MPIDR corresponds to Chip-Id in Arm multi-chip platforms.
      For calculating linear core position of CPU cores from slave chips, AFF3
      bits has to be used. Update `plat_arm_calc_core_pos` assembly function
      to include AFF3 bits in calculation.
      
      Change-Id: I4af2bd82ab8e31e18bc61de22705a73893954260
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      80151c27
    • Vijayenthiran Subramaniam's avatar
      plat/arm/sgi: add macros for remote chip device region · e4854153
      Vijayenthiran Subramaniam authored
      
      
      Some of the Reference Design platforms like RD-N1-Edge can operate in
      multi-chip configuration wherein two or more SoCs are connected through
      a high speed coherent CCIX link. For the RD platforms, the remote chip
      address space is at the offset of 4TB per chip. In order for the primary
      chip to access the device memory region on the remote chip, the required
      memory region entries need to be added as mmap entry. This patch adds
      macros related to the remote chip device memory region.
      
      Change-Id: I833810b96f1a0e7c3c289ac32597b6ba03344c80
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      e4854153
    • Vijayenthiran Subramaniam's avatar
      plat/arm/sgi: add chip_id and multi_chip_mode to platform variant info · 6daeec70
      Vijayenthiran Subramaniam authored
      
      
      Multi-chip platforms have two or more identical chips connected using a
      high speed coherent link. In order to identify such platforms,
      add chip_id and multi_chip_mode information in the platform variant
      info structure. The values of these two new elements is populated
      during boot.
      
      Change-Id: Ie6e89cb33b3f0f408814f6239cd06647053e23ed
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      6daeec70
    • Vijayenthiran Subramaniam's avatar
      plat/arm/sgi: move bl31_platform_setup to board file · c7d4a217
      Vijayenthiran Subramaniam authored
      
      
      For SGI-575 and RD platforms, move bl31_platform_setup handler to
      individual board files to allow the platforms to perform board specific
      bl31 setup.
      
      Change-Id: Ia44bccc0a7f40a155b33909bcb438a0909b20d42
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      c7d4a217
    • Vijayenthiran Subramaniam's avatar
      plat/arm/sgi: introduce number of chips macro · 4d37aa76
      Vijayenthiran Subramaniam authored
      
      
      Introduce macro 'CSS_SGI_CHIP_COUNT' to allow Arm CSS platforms with
      multi-chip support to define number of chiplets on the platform. By
      default, this flag is set to 1 and does not affect the existing single
      chip platforms.
      
      For multi-chip platforms, override the default value of
      CSS_SGI_CHIP_COUNT with the number of chiplets supported on the
      platform. As an example, the command below sets the number of chiplets
      to two on the RD-N1-Edge multi-chip platform:
      
      export CROSS_COMPILE=<path-to-cross-compiler>
      make PLAT=rdn1edge CSS_SGI_CHIP_COUNT=2 ARCH=aarch64 all
      
      Change-Id: If364dc36bd34b30cc356f74b3e97633933e6c8ee
      Signed-off-by: default avatarVijayenthiran Subramaniam <vijayenthiran.subramaniam@arm.com>
      4d37aa76
  2. 27 Jan, 2020 1 commit
  3. 20 Dec, 2019 5 commits
    • Paul Beesley's avatar
      spm-mm: Remove mm_svc.h header · 962c44e7
      Paul Beesley authored
      
      
      The contents of this header have been merged into the spm_mm_svc.h
      header file.
      
      Change-Id: I01530b2e4ec1b4c091ce339758025e2216e740a4
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      962c44e7
    • Paul Beesley's avatar
      spm-mm: Refactor spm_svc.h and its contents · 0bf9f567
      Paul Beesley authored
      
      
      Change-Id: I91c192924433226b54d33e57d56d146c1c6df81b
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      0bf9f567
    • Paul Beesley's avatar
      spm-mm: Refactor secure_partition.h and its contents · aeaa225c
      Paul Beesley authored
      
      
      Before adding any new SPM-related components we should first do
      some cleanup around the existing SPM-MM implementation. The aim
      is to make sure that any SPM-MM components have names that clearly
      indicate that they are MM-related. Otherwise, when adding new SPM
      code, it could quickly become confusing as it would be unclear to
      which component the code belongs.
      
      The secure_partition.h header is a clear example of this, as the
      name is generic so it could easily apply to any SPM-related code,
      when it is in fact SPM-MM specific.
      
      This patch renames the file and the two structures defined within
      it, and then modifies any references in files that use the header.
      
      Change-Id: I44bd95fab774c358178b3e81262a16da500fda26
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      aeaa225c
    • Paul Beesley's avatar
      spm: Remove SPM Alpha 1 prototype and support files · 538b0020
      Paul Beesley authored
      
      
      The Secure Partition Manager (SPM) prototype implementation is
      being removed. This is preparatory work for putting in place a
      dispatcher component that, in turn, enables partition managers
      at S-EL2 / S-EL1.
      
      This patch removes:
      
      - The core service files (std_svc/spm)
      - The Resource Descriptor headers (include/services)
      - SPRT protocol support and service definitions
      - SPCI protocol support and service definitions
      
      Change-Id: Iaade6f6422eaf9a71187b1e2a4dffd7fb8766426
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      Signed-off-by: default avatarArtsem Artsemenka <artsem.artsemenka@arm.com>
      538b0020
    • Paul Beesley's avatar
      Remove dependency between SPM_MM and ENABLE_SPM build flags · 3f3c341a
      Paul Beesley authored
      
      
      There are two different implementations of Secure Partition
      management in TF-A. One is based on the "Management Mode" (MM)
      design, the other is based on the Secure Partition Client Interface
      (SPCI) specification. Currently there is a dependency between their
      build flags that shouldn't exist, making further development
      harder than it should be. This patch removes that
      dependency, making the two flags function independently.
      
      Before: ENABLE_SPM=1 is required for using either implementation.
              By default, the SPCI-based implementation is enabled and
              this is overridden if SPM_MM=1.
      
      After: ENABLE_SPM=1 enables the SPCI-based implementation.
             SPM_MM=1 enables the MM-based implementation.
             The two build flags are mutually exclusive.
      
      Note that the name of the ENABLE_SPM flag remains a bit
      ambiguous - this will be improved in a subsequent patch. For this
      patch the intention was to leave the name as-is so that it is
      easier to track the changes that were made.
      
      Change-Id: I8e64ee545d811c7000f27e8dc8ebb977d670608a
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      3f3c341a
  4. 01 Aug, 2019 1 commit
    • Julius Werner's avatar
      Replace __ASSEMBLY__ with compiler-builtin __ASSEMBLER__ · d5dfdeb6
      Julius Werner authored
      
      
      NOTE: __ASSEMBLY__ macro is now deprecated in favor of __ASSEMBLER__.
      
      All common C compilers predefine a macro called __ASSEMBLER__ when
      preprocessing a .S file. There is no reason for TF-A to define it's own
      __ASSEMBLY__ macro for this purpose instead. To unify code with the
      export headers (which use __ASSEMBLER__ to avoid one extra dependency),
      let's deprecate __ASSEMBLY__ and switch the code base over to the
      predefined standard.
      
      Change-Id: Id7d0ec8cf330195da80499c68562b65cb5ab7417
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      d5dfdeb6
  5. 17 Apr, 2019 1 commit
    • Aditya Angadi's avatar
      plat/arm: introduce wrapper functions to setup secure watchdog · b0c97daf
      Aditya Angadi authored
      
      
      The BL1 stage setup code for ARM platforms sets up the SP805 watchdog
      controller as the secure watchdog. But not all ARM platforms use SP805
      as the secure watchdog controller.
      
      So introduce two new ARM platform code specific wrapper functions to
      start and stop the secure watchdog. These functions then replace the
      calls to SP805 driver in common BL1 setup code. All the ARM platforms
      implement these wrapper functions by either calling into SP805 driver
      or the SBSA watchdog driver.
      
      Change-Id: I1a9a11b124cf3fac2a84f22ca40acd440a441257
      Signed-off-by: default avatarAditya Angadi <aditya.angadi@arm.com>
      b0c97daf
  6. 01 Apr, 2019 1 commit
    • Ambroise Vincent's avatar
      Remove several warnings reported with W=1 · 609e053c
      Ambroise Vincent authored
      
      
      Improved support for W=1 compilation flag by solving missing-prototypes
      and old-style-definition warnings.
      
      The libraries are compiling with warnings (which turn into errors with
      the Werror flag).
      
      Outside of libraries, some warnings cannot be fixed without heavy
      structural changes.
      
      Change-Id: I1668cf99123ac4195c2a6a1d48945f7a64c67f16
      Signed-off-by: default avatarAmbroise Vincent <ambroise.vincent@arm.com>
      609e053c
  7. 28 Feb, 2019 1 commit
  8. 19 Feb, 2019 1 commit
  9. 01 Feb, 2019 1 commit
  10. 25 Jan, 2019 3 commits
  11. 23 Jan, 2019 1 commit
    • Sathees Balya's avatar
      plat/arm: Save BL2 descriptors to reserved memory. · 5b8d50e4
      Sathees Balya authored
      
      
      On ARM platforms, the BL2 memory can be overlaid by BL31/BL32. The memory
      descriptors describing the list of executable images are created in BL2
      R/W memory, which could be possibly corrupted later on by BL31/BL32 due
      to overlay. This patch creates a reserved location in SRAM for these
      descriptors and are copied over by BL2 before handing over to next BL
      image.
      
      Also this patch increases the PLAT_ARM_MAX_BL2_SIZE for juno when TBBR
      is enabled.
      
      Fixes ARM-Software/tf-issues#626
      
      Change-Id: I755735706fa702024b4032f51ed4895b3687377f
      Signed-off-by: default avatarSathees Balya <sathees.balya@arm.com>
      5b8d50e4
  12. 15 Jan, 2019 2 commits
    • Antonio Nino Diaz's avatar
      plat/arm: Fix header dependencies · 234bc7f8
      Antonio Nino Diaz authored
      
      
      From now on, platform_def.h must include any header with definitions that
      are platform-specific (like arm_def.h) and the included headers mustn't
      include back platform_def.h, and shouldn't be used by other files. Only
      platform_def.h should be included in other files. This will ensure that all
      needed definitions are present, rather than needing to include all the
      headers in all the definitions' headers just in case.
      
      This also prevents problems like cyclic dependencies.
      
      Change-Id: I9d3cf4d1de4b956fa035c79545222697acdaf5ca
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      234bc7f8
    • Antonio Nino Diaz's avatar
      Move BL1 and BL2 private defines to bl_common.h · c9f9d9ea
      Antonio Nino Diaz authored
      
      
      The definitions in bl1/bl1_private.h and bl2/bl2_private.h are useful for
      platforms that may need to access them.
      
      Change-Id: Ifd1880f855ddafcb3bfcaf1ed4a4e0f121eda174
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c9f9d9ea
  13. 08 Jan, 2019 1 commit
  14. 07 Jan, 2019 1 commit
  15. 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
  16. 06 Dec, 2018 2 commits
  17. 05 Dec, 2018 1 commit
    • Chandni Cherukuri's avatar
      plat/arm/sgi: Use NT_FW_CONFIG instead of HW_CONFIG · 77ab969a
      Chandni Cherukuri authored
      
      
      With the two new APIs 'plat_arm_sgi_get_platform_id' and
      'plat_arm_sgi_get_config_id' that are available now, BL31 need not
      depend on hw_config device tree to identify the platform. In addition
      to this, the existing hardware description in hw_config can be limited
      to use by BL33 and not by the operating system.
      
      So the hardware description from hw_config dts can be moved into
      nt_fw_config dts and the use of hw_config dts can be removed.
      
      Change-Id: I873b7e1e72823d3ec5d253a848e85ae724f09e49
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      77ab969a
  18. 03 Dec, 2018 1 commit
    • Chandni Cherukuri's avatar
      plat/arm/sgi: Use platform specific functions to get platform ids · 699223a2
      Chandni Cherukuri authored
      
      
      Add two new functions 'plat_arm_sgi_get_platform_id' and
      'plat_arm_sgi_get_config_id' which will be implemented by all the
      SGI platforms. These functions can be used to determine the part
      number and configuration id of the SGI platforms.
      
      In BL2, these functions are used to populate the 'system-id' node.
      In BL31, these functions are used to populate the 'sgi_plat_info_t'
      structure with the part number and configuration id of the platform.
      
      Change-Id: I3bacda933527724a3b4074ad4ed5b53a81ea4689
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      699223a2
  19. 29 Nov, 2018 1 commit
  20. 27 Nov, 2018 2 commits
  21. 21 Nov, 2018 1 commit
  22. 14 Nov, 2018 1 commit
    • Sughosh Ganu's avatar
      SPM: Register Secure Partition priority level with ehf module · 5681b292
      Sughosh Ganu authored
      
      
      Register a priority level, PLAT_SP_PRI, for secure partition with EL3
      exception handling framework(ehf) module.
      
      The secure partition manager(SPM) would raise the core's priority to
      PLAT_SP_PRI before entering the secure partition, to protect the core
      from getting interrupted while in secure partition.
      
      Change-Id: I686897f052a4371e0efa9b929c07d3ad77249e95
      Signed-off-by: default avatarSughosh Ganu <sughosh.ganu@arm.com>
      5681b292
  23. 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
  24. 26 Oct, 2018 2 commits
    • Chandni Cherukuri's avatar
      plat/arm/sgi: add support for SGI-Clark platform · 7c294f95
      Chandni Cherukuri authored
      
      
      SGI-Clark platform is the next version in the Arm's SGI platform
      series. One of the primary difference between the SGI-575 platform and
      the SGI-Clark platform is the MHU version (MHUv2 in case of SGI-Clark).
      Add the required base support for SGI-Clark platform.
      
      Change-Id: If396e5279fdf801d586662dad0b55195e81371e4
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      7c294f95
    • Chandni Cherukuri's avatar
      plat/arm/sgi: disable Ares cpu power down bit in reset handler · 20a8f7a8
      Chandni Cherukuri authored
      
      
      On SGI platforms that include Ares CPUs, the 'CORE_PWRDN_EN' bit of
      'CPUPWRCTLR_EL1' register requires an explicit write to clear it to
      enable hotplug and idle to function correctly.
      
      The reset value of the CORE_PWRDN_EN bit is zero but it still requires
      this explicit clear to zero. This indicates that this could be a model
      related issue but for now this issue can be fixed be clearing the
      CORE_PWRDN_EN bit in the platform specific reset handler function.
      
      Change-Id: I8b9884ae27a2986d789bfec2e9ae792ef930944e
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      20a8f7a8