1. 04 Jul, 2020 1 commit
    • Thomas Hebb's avatar
      rockchip: don't crash if we get an FDT we can't parse · e7b58698
      Thomas Hebb authored
      
      
      When we parse the param from BL2, we try to parse it as a FDT and then,
      if that fails, as aux params. However, we don't sufficiently distinguish
      between failure modes in the first step: specifically, if we are given
      an FDT with good magic that we can't parse for some other reason (e.g.
      not enough space in our buffer), we still attempt to parse it as aux
      params even though that's guaranteed to fatal. Instead, we should either
      fail with a more descriptive message or continue to boot without parsing
      the FDT.
      
      This patch takes the latter approach, since all we currently get from
      the FDT is non-critical UART params.
      Signed-off-by: default avatarThomas Hebb <tommyhebb@gmail.com>
      Change-Id: I1e98f1fcda4f78e6b45e86956288bafe58b113e4
      e7b58698
  2. 09 Jun, 2020 1 commit
  3. 08 Jun, 2020 1 commit
    • Hugh Cole-Baker's avatar
      rockchip: increase FDT buffer size · 8109f738
      Hugh Cole-Baker authored
      
      
      The size of buffer currently used to store the FDT passed from U-Boot as
      a platform parameter is not large enough to store some RK3399 device
      trees. The largest RK3399 device tree currently in U-Boot (for the
      Pinebook Pro) is about 70KB in size when passed to TF-A, so increase the
      buffer size to 128K which gives some headroom for possibly larger FDTs
      in future.
      Signed-off-by: default avatarHugh Cole-Baker <sigmaris@gmail.com>
      Change-Id: I414caf20683cd47c02ee470dfa988544f3809919
      8109f738
  4. 05 Jun, 2020 1 commit
  5. 30 Mar, 2020 1 commit
    • Alexei Fedorov's avatar
      TF-A GICv3 driver: Introduce makefile · a6ea06f5
      Alexei Fedorov authored
      
      
      This patch moves all GICv3 driver files into new added
      'gicv3.mk' makefile for the benefit of the generic driver
      which can evolve in the future without affecting platforms.
      The patch adds GICv3 driver configuration flags
      'GICV3_IMPL', 'GICV3_IMPL_GIC600_MULTICHIP' and
      'GICV3_OVERRIDE_DISTIF_PWR_OPS' described in
      'GICv3 driver options' section of 'build-option.rst'
      document.
      
      NOTE: Platforms with GICv3 driver need to be modified to
      include 'drivers/arm/gic/v3/gicv3.mk' in their makefiles.
      
      Change-Id: If055f6770ff20f5dee5a3c99ae7ced7cdcac5c44
      Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
      a6ea06f5
  6. 10 Mar, 2020 1 commit
  7. 25 Feb, 2020 1 commit
  8. 17 Feb, 2020 1 commit
  9. 28 Jan, 2020 1 commit
  10. 24 Jan, 2020 1 commit
  11. 09 Jan, 2020 1 commit
  12. 17 Dec, 2019 6 commits
    • Simon South's avatar
      rockchip: rk3328: Enable workaround for erratum 855873 · 4c4cff6b
      Simon South authored
      
      
      Enable the workaround for Cortex-A53 erratum 855873 for the Rockchip
      RK3328, silencing a warning at startup.
      
      Change-Id: I5aa29d674d23c096c599abcb5e7dac970f9607d8
      Signed-off-by: default avatarSimon South <simon@simonsouth.net>
      4c4cff6b
    • Heiko Stuebner's avatar
      rockchip: make miniloader ddr_parameter handling optional · df5a9683
      Heiko Stuebner authored
      
      
      Transfering the regions of ddr memory to additionally protect is very much
      specific to some rockchip internal first stage bootloader and doesn't get
      used in either mainline uboot or even Rockchip's published vendor uboot
      sources.
      
      This results in a big error
          ERROR:   over or zero region, nr=0, max=10
      getting emitted on every boot for most users and such a message coming
      from early firmware might actually confuse developers working with the
      system.
      
      As this mechanism seems to be only be used by Rockchip's internal miniloader
      hide it behind a build conditional, so it doesn't confuse people too much.
      Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
      Change-Id: I52c02decc60fd431ea78c7486cad5bac82bdbfbe
      df5a9683
    • Heiko Stuebner's avatar
      rockchip: px30: cleanup securing of ddr regions · f55ef85e
      Heiko Stuebner authored
      
      
      So far the px30-related ddr security was loading data for regions to secure
      from a pre-specified memory location and also setting region0 to secure
      the first megabyte of memory in hard-coded setting (top=0, end=0, meaning
      1MB).
      
      To make things more explicit and easier to read add a function doing
      the settings for specified memory areas, like other socs have and also
      add an assert to make sure any descriptor read from memory does not
      overlap the TZRAM security in region0 and TEE security in region1.
      Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
      Change-Id: I78441875112bf66a62fde5f1789f4e52a78ef95f
      f55ef85e
    • Heiko Stuebner's avatar
      rockchip: px30: move secure init to separate file · d2483afa
      Heiko Stuebner authored
      
      
      Similar to others like rk3399 and rk3288 move the secure init to a
      separate file to unclutter the soc init a bit.
      Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
      Change-Id: Iebb38e24f1c7fe5353f139c896fb8ca769bf9691
      d2483afa
    • Heiko Stuebner's avatar
      rockchip: really use base+size for secure ddr regions · 7f0b2e78
      Heiko Stuebner authored
      
      
      The calls to secure ddr regions on rk3288 and rk3399 use parameters of
      base and size - as it custom for specifying memory regions, but the
      functions themself expect start and endpoints of the area.
      
      This only works by chance for the TZRAM, as it starts a 0x0 and therefore
      its end location is the same as its size.
      
      To not fall into a trap later on adapt the functions to really take
      base+size parameters.
      Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
      Change-Id: Idb9fab38aa081f3335a4eca971e7b7f6757fbbab
      7f0b2e78
    • Heiko Stuebner's avatar
      rockchip: bring TZRAM_SIZE values in line · c6ee020e
      Heiko Stuebner authored
      
      
      The agreed upon division of early boot locations is 0x40000 for bl31
      to leave enough room for u-boot-spl and 0x100000 for bl33 (u-boot).
      
      rk3288 and rk3399 already correctly secure the ddr up to the 1MB boundary
      so pull the other platforms along to also give the Rockchip TF-A enough
      room to comfortably live in.
      Signed-off-by: default avatarHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
      Change-Id: Ie9e0c927d3074a418b6fd23b599d2ed7c15c8c6f
      c6ee020e
  13. 13 Dec, 2019 2 commits
  14. 10 Dec, 2019 1 commit
  15. 27 Nov, 2019 1 commit
  16. 19 Nov, 2019 1 commit
    • Justin Chadwell's avatar
      Enable -Wshadow always · b7f6525d
      Justin Chadwell authored
      
      
      Variable shadowing is, according to the C standard, permitted and valid
      behaviour. However, allowing a local variable to take the same name as a
      global one can cause confusion and can make refactoring and bug hunting
      more difficult.
      
      This patch moves -Wshadow from WARNING2 into the general warning group
      so it is always used. It also fixes all warnings that this introduces
      by simply renaming the local variable to a new name
      
      Change-Id: I6b71bdce6580c6e58b5e0b41e4704ab0aa38576e
      Signed-off-by: default avatarJustin Chadwell <justin.chadwell@arm.com>
      b7f6525d
  17. 17 Nov, 2019 1 commit
  18. 20 Sep, 2019 2 commits
    • Kever Yang's avatar
      rockchip: Update BL31_BASE to 0x40000 · 0aad563c
      Kever Yang authored
      
      
      Rockchip platform is using the first 1MB of DRAM as secure ram space,
      and there is a vendor loader who loads and runs the BL31/BL32/BL33,
      this loader is usually load by SoC BootRom to the start addres of DRAM,
      we need to reserve enough space for this loader so that it doesn't need
      to do the relocate when loading the BL31. eg.
      We use U-Boot SPL to load ATF BL31 and U-Boot proper as BL33, the SPL
      TEXT BASE is offset 0 of DRAM which is decide by Bootrom; if we update
      the BL31_BASE to offset 0x40000(256KB), then the 0~0x40000 should be
      enough for SPL and no need to do the relocate while the space size
      0x10000(64KB) may not enough for SPL.
      After this update, the BL31 can use the rest 768KB of the first 1MB,
      which is also enough, and the loader who is using BL31 elf file can
      support this update without any change.
      
      Change-Id: I66dc685594d77f10f9a49c3be015fd6729250ece
      Signed-off-by: default avatarKever Yang <kever.yang@rock-chips.com>
      0aad563c
    • Kever Yang's avatar
      rockchip: Fix typo for TF content text · 382ddb3d
      Kever Yang authored
      
      
      The 'txet' should be 'text'.
      
      Change-Id: I2217a1adf50c3b86f3087b83c77d9291b280627c
      Signed-off-by: default avatarKever Yang <kever.yang@rock-chips.com>
      382ddb3d
  19. 09 Aug, 2019 2 commits
    • Heiko Stuebner's avatar
      rockchip: rk3399: store actual debug uart information on suspend · 0eb7fa91
      Heiko Stuebner authored
      
      
      The rk3399 suspend code saves and restores the debug uart settings, but
      right now always does this for the default uart. Right now this works
      only by chance for the majority of rk3399 boards, which do not deviate
      from that default.
      
      But both Coreboot as well as U-Boot-based platforms can actually use
      different uarts for their output, which can be configured from either
      devicetree or Coreboot-variables.
      
      To fix this, just use the stored uart-base information instead of the
      default constant.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Change-Id: I1ea059d59a1126f6f8702315df7e620e632b686e
      0eb7fa91
    • Heiko Stuebner's avatar
      rockchip: move dt-coreboot uart distinction into param handling code · dd4a0d16
      Heiko Stuebner authored
      
      
      Rockchip platforms can be booted from either u-boot or coreboot.
      
      So far the Coreboot-console was initizalized from a coreboot data struct
      in the early_param2 callbacks and dt-based consoles with data from the
      rockchip_get_uart_* functions.
      
      But later code may also need this console information for example for
      special suspend handling. To make this easy follow a suggestion from
      Julius Werner and move the coreboot<->dt distinction into the
      rockchip_get_uart_* functions, thus making correct data about the used
      uart available to all Rockchip platform code at all times.
      
      This includes a new rockchip_get_uart_clock as well, because while the
      dt-platforms right now always just default the rate defined in a constant
      Coreboot provides its own field for the clock rate and we don't want to
      loose that information for the console init. Similarly the rk_uart_*
      variables should move into the non-Coreboot code, to prevent them from
      being marked as unused, which also requires the rk_get_uart_* functions
      to move below the actual dt-parsing.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Change-Id: I278d595d2aa6c6864187fc8979a9fbff9814feac
      dd4a0d16
  20. 05 Aug, 2019 2 commits
    • Heiko Stuebner's avatar
      rockchip: make uart baudrate configurable · 30970e0f
      Heiko Stuebner authored
      
      
      A previous patch already allowed to configure the uart output from the
      devicetree, but on Rockchip platforms we also have the issue of different
      vendors using different baudrates for their uarts.
      
      For example, rk3399 has a default baudrate of 115200 which is true for
      ChromeOS-devices and boards from Theobroma-Systems, while all the boards
      using the vendor boot chain actually use a baudrate of 1500000.
      
      Similarly the newly added px30 has a default of said 1500000 but some
      boards may want to use the more widely used 115200.
      
      The devicetree stdout-path node already contains the desired baudrate,
      so add simple code to parse it from there and override the default,
      which stays unchanged.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Change-Id: I7412139c3df3073a1996eb508ec08642ec6af90d
      30970e0f
    • Heiko Stuebner's avatar
      rockchip: px30: add uart5 as option for serial output · 5f441a7b
      Heiko Stuebner authored
      
      
      The px30 mini-evb can use either uart2 (muxed with the sd-card pins) or
      uart5 via its pin header for serial output. Uart5 is especially useful
      when needing to boot from the sd-card, where uart2 obviously is not
      useable.
      
      So add the uart5 constants and it as uart option for the serial-param
      handler.
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Change-Id: Ib88df7a55d761ee104d312c9953a13de3beba1c4
      5f441a7b
  21. 01 Aug, 2019 2 commits
    • Julius Werner's avatar
      Switch AARCH32/AARCH64 to __aarch64__ · 402b3cf8
      Julius Werner authored
      
      
      NOTE: AARCH32/AARCH64 macros are now deprecated in favor of __aarch64__.
      
      All common C compilers pre-define the same macros to signal which
      architecture the code is being compiled for: __arm__ for AArch32 (or
      earlier versions) and __aarch64__ for AArch64. There's no need for TF-A
      to define its own custom macros for this. In order to unify code with
      the export headers (which use __aarch64__ to avoid another dependency),
      let's deprecate the AARCH32 and AARCH64 macros and switch the code base
      over to the pre-defined standard macro. (Since it is somewhat
      unintuitive that __arm__ only means AArch32, let's standardize on only
      using __aarch64__.)
      
      Change-Id: Ic77de4b052297d77f38fc95f95f65a8ee70cf200
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      402b3cf8
    • 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
  22. 29 Jul, 2019 1 commit
  23. 25 Jul, 2019 1 commit
    • Ambroise Vincent's avatar
      rockchip: px30: Fix build error · 8a079e88
      Ambroise Vincent authored
      "result of '1 << 31' requires 33 bits to represent, but 'int' only has
      32 bits [-Werror=shift-overflow=]"
      
      This is treated as an error since commit 93c690eb
      
       ("Enable
      -Wshift-overflow=2 to check for undefined shift behavior")
      
      Only the actual errors are being tackled by this patch. It is up to the
      platform to choose whether there needs to be further modifications to
      the code.
      
      Change-Id: I70860ae5f2a34d7c684bd491b76da50aa04f778e
      Signed-off-by: default avatarAmbroise Vincent <ambroise.vincent@arm.com>
      8a079e88
  24. 24 Jul, 2019 3 commits
    • Julius Werner's avatar
      plat/rockchip: Use new bl31_params_parse_helper() · 3e02c743
      Julius Werner authored
      
      
      The Rockchip platform is a prime candidate for switching to the new
      bl31_params_parse_helper(), so switch it over. This will allow BL2
      implementations on this platform to transparently switch over to the
      version 2 parameter structure.
      
      Change-Id: I540741d2425c93f66c8697ce749a351eb2b3a7e8
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      3e02c743
    • Julius Werner's avatar
      Factor out cross-BL API into export headers suitable for 3rd party code · 57bf6057
      Julius Werner authored
      
      
      This patch adds a new include/export/ directory meant for inclusion in
      third-party code. This is useful for cases where third-party code needs
      to interact with TF-A interfaces and data structures (such as a custom
      BL2-implementation like coreboot handing off to BL31). Directly
      including headers from the TF-A repository avoids having to duplicate
      all these definitions (and risk them going stale), but with the current
      header structure this is not possible because handoff API definitions
      are too deeply intertwined with other TF code/headers and chain-include
      other headers that will not be available in the other environment.
      
      The new approach aims to solve this by separating only the parts that
      are really needed into these special headers that are self-contained and
      will not chain-include other (non-export) headers. TF-A code should
      never include them directly but should instead always include the
      respective wrapper header, which will include the required prerequisites
      (like <stdint.h>) before including the export header. Third-party code
      can include the export headers via its own wrappers that make sure the
      necessary definitions are available in whatever way that environment can
      provide them.
      
      Change-Id: Ifd769320ba51371439a8e5dd5b79c2516c3b43ab
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      57bf6057
    • Julius Werner's avatar
      plat/rockchip: Switch to use new common BL aux parameter library · c1185ffd
      Julius Werner authored
      
      
      This patch changes all Rockchip platforms to use the new common BL aux
      parameter helpers. Since the parameter space is now cleanly split in
      generic and vendor-specific parameters and the COREBOOT_TABLE
      parameter is now generic, the parameter type number for that parameter
      has to change. Since it only affects coreboot which always builds TF as
      a submodule and includes its headers directly to get these constants,
      this should not cause any issues. In general, after this point, we
      should avoid changing already assigned parameter type numbers whenever
      possible.
      
      Change-Id: Ic99ddd1e91ff5e5fe212fa30c793a0b8394c9dad
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      c1185ffd
  25. 11 Jul, 2019 1 commit
  26. 09 Jul, 2019 1 commit
    • XiaoDong Huang's avatar
      rockchip: px30: support px30 · 010d6ae3
      XiaoDong Huang authored
      
      
      px30 is a Quad-core soc and Cortex-a53 inside.
      This patch supports the following functions:
      1. basic platform setup
      2. power up/off cpus
      3. suspend/resume cpus
      4. suspend/resume system
      5. reset system
      6. power off system
      
      Change-Id: I73d55aa978096c078242be921abe0ddca9e8f67e
      Signed-off-by: default avatarXiaoDong Huang <derrick.huang@rock-chips.com>
      010d6ae3
  27. 28 Jun, 2019 1 commit
  28. 29 May, 2019 1 commit