project/bcm63xx/atf.git
4 years agoMerge "plat/arm: Introduce corstone700 platform." into integration
Paul Beesley [Tue, 20 Aug 2019 14:47:56 +0000 (14:47 +0000)]
Merge "plat/arm: Introduce corstone700 platform." into integration

4 years agoMerge "rcar_gen3: plat: Rename RCAR_PRODUCT_* to PRR_PRODUCT_*" into integration
Paul Beesley [Tue, 20 Aug 2019 14:14:03 +0000 (14:14 +0000)]
Merge "rcar_gen3: plat: Rename RCAR_PRODUCT_* to PRR_PRODUCT_*" into integration

4 years agoplat/arm: Introduce corstone700 platform.
Manish Pandey [Wed, 28 Nov 2018 11:20:37 +0000 (11:20 +0000)]
plat/arm: Introduce corstone700 platform.

This patch adds support for Corstone-700 foundation IP, which integrates
both Cortex-M0+ and Cortex-A(Host) processors in one handy, flexible
subsystem.
This is an example implementation of Corstone-700 IP host firmware.

Cortex-M0+ will take care of boot stages 1 and 2(BL1/BL2) as well as
bringing Host out RESET. Host will start execution directly from BL32 and
then will jump to Linux.

It is an initial port and additional features are expected to be added
later.

Change-Id: I7b5c0278243d574284b777b2408375d007a7736e
Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
4 years agoMerge "rcar_gen3: plat: Factor out PRR_ macros into rcar_def.h" into integration
Paul Beesley [Tue, 20 Aug 2019 14:12:40 +0000 (14:12 +0000)]
Merge "rcar_gen3: plat: Factor out PRR_ macros into rcar_def.h" into integration

4 years agoMerge "intel: agilex: HMC driver calculate DDR size" into integration
Paul Beesley [Tue, 20 Aug 2019 09:38:32 +0000 (09:38 +0000)]
Merge "intel: agilex: HMC driver calculate DDR size" into integration

4 years agoMerge "console: add a flag to prepend '\r' in the multi-console framework" into integ...
Paul Beesley [Tue, 20 Aug 2019 09:37:37 +0000 (09:37 +0000)]
Merge "console: add a flag to prepend '\r' in the multi-console framework" into integration

4 years agoMerge "Fix for N1 1043202 Errata Workaround" into integration
Alexei Fedorov [Tue, 20 Aug 2019 09:31:16 +0000 (09:31 +0000)]
Merge "Fix for N1 1043202 Errata Workaround" into integration

4 years agoMerge "Coverity fix: Remove GGC ignore -Warray-bounds" into integration
Paul Beesley [Tue, 20 Aug 2019 09:25:00 +0000 (09:25 +0000)]
Merge "Coverity fix: Remove GGC ignore -Warray-bounds" into integration

4 years agoFix for N1 1043202 Errata Workaround
laurenw-arm [Mon, 19 Aug 2019 16:06:18 +0000 (11:06 -0500)]
Fix for N1 1043202 Errata Workaround

ISB instruction was removed from the N1 1043202 Errata Workaround [1], this
fix is adding the ISB instruction back in.

[1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.pjdoc-466751330-10325/index.html

Signed-off-by: Lauren Wehrmeister <lauren.wehrmeister@arm.com>
Change-Id: I74eac7f6ad38991c36d423ad6aa44558033ad388

4 years agointel: agilex: HMC driver calculate DDR size
Hadi Asyrafi [Fri, 16 Aug 2019 09:07:42 +0000 (17:07 +0800)]
intel: agilex: HMC driver calculate DDR size

Driver will calculate DDR size instead of using hardcoded value

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: I642cf2180929965ef12bd5ae4393b2f3d0dcddde

4 years agoconsole: add a flag to prepend '\r' in the multi-console framework
Masahiro Yamada [Tue, 23 Jul 2019 03:32:58 +0000 (12:32 +0900)]
console: add a flag to prepend '\r' in the multi-console framework

Currently, console drivers prepend '\r' to '\n' by themselves. This is
common enough to be supported in the framework.

Add a new flag, CONSOLE_FLAG_TRANSLATE_CRLF. A driver can set this
flag to ask the framework to transform LF into CRLF instead of doing
it by itself.

Change-Id: I4f5c5887591bc0a8749a105abe62b6562eaf503b
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
4 years agoCoverity fix: Remove GGC ignore -Warray-bounds
Deepika Bhavnani [Wed, 14 Aug 2019 21:56:46 +0000 (00:56 +0300)]
Coverity fix: Remove GGC ignore -Warray-bounds

GCC diagnostics were added to ignore array boundaries, instead
of ignoring GCC warning current code will check for array boundaries
and perform and array update only for valid elements.

Resolves: `CID 246574` `CID 246710` `CID 246651`

Signed-off-by: Deepika Bhavnani <deepika.bhavnani@arm.com>
Change-Id: I7530ecf7a1707351c6ee87e90cc3d33574088f57

4 years agoMerge "FVP: Add Delay Timer driver to BL1 and BL31" into integration
Paul Beesley [Fri, 16 Aug 2019 14:48:32 +0000 (14:48 +0000)]
Merge "FVP: Add Delay Timer driver to BL1 and BL31" into integration

4 years agoMerge "Reduce the number of memory leaks in cert_create" into integration
Paul Beesley [Fri, 16 Aug 2019 13:44:26 +0000 (13:44 +0000)]
Merge "Reduce the number of memory leaks in cert_create" into integration

4 years agoFVP: Add Delay Timer driver to BL1 and BL31
Alexei Fedorov [Fri, 16 Aug 2019 13:15:59 +0000 (14:15 +0100)]
FVP: Add Delay Timer driver to BL1 and BL31

SMMUv3 driver functions which are called from BL1 and BL31
currently use counter-based poll method for testing status
bits. Adding Delay Timer driver to BL1 and BL31 is required
for timeout-based implementation using timer delay functions
for SMMU and other drivers.
This patch adds new function `fvp_timer_init()` which
initialises either System level generic or SP804 timer based on
FVP_USE_SP804_TIMER build flag.
In BL2U `bl2u_early_platform_setup()` function the call to
`arm_bl2u_early_platform_setup()` (which calls
`generic_delay_timer_init()` ignoring FVP_USE_SP804_TIMER flag),
is replaced with `arm_console_boot_init()` and `fvp_timer_init()`.

Change-Id: Ifd8dcebf4019e877b9bc5641551deef77a44c0d1
Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
4 years agorcar_gen3: plat: Rename RCAR_PRODUCT_* to PRR_PRODUCT_*
Marek Vasut [Tue, 6 Aug 2019 17:13:22 +0000 (19:13 +0200)]
rcar_gen3: plat: Rename RCAR_PRODUCT_* to PRR_PRODUCT_*

Rename RCAR_PRODUCT_* to PRR_PRODUCT_* and drop the duplicate
RCAR_PRODUCT_* macro.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Change-Id: I6b2789790b85edb79c026f0860d70f323d113d96

4 years agorcar_gen3: plat: Factor out PRR_ macros into rcar_def.h
Marek Vasut [Tue, 6 Aug 2019 16:58:38 +0000 (18:58 +0200)]
rcar_gen3: plat: Factor out PRR_ macros into rcar_def.h

Pull out the PRR_* macros into rcar_def.h and remove multiple copies of
it. Now that there are still RCAR_* macros in rcar_def.h too and they
have the exact same meaning as the PRR_* macros, but that's for another
patch.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Change-Id: Icb7f61b971b1a23102bd1b9f58cda580660a55fc

4 years agoReduce the number of memory leaks in cert_create
Justin Chadwell [Mon, 12 Aug 2019 11:19:21 +0000 (12:19 +0100)]
Reduce the number of memory leaks in cert_create

The valgrind checks for cert_create have not been run in a long while -
as such there are a few memory leaks present. This patch fixes a few of
the major ones reported by valgrind. However, a few do remain.

Change-Id: Iab002fb2b0090043287d43fb54a4d18928c2ed85
Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
4 years agoMerge "FVP_Base_AEMv8A platform: Fix cache maintenance operations" into integration
Paul Beesley [Fri, 16 Aug 2019 12:41:45 +0000 (12:41 +0000)]
Merge "FVP_Base_AEMv8A platform: Fix cache maintenance operations" into integration

4 years agoFVP_Base_AEMv8A platform: Fix cache maintenance operations
Alexei Fedorov [Mon, 29 Jul 2019 16:22:53 +0000 (17:22 +0100)]
FVP_Base_AEMv8A platform: Fix cache maintenance operations

This patch fixes FVP_Base_AEMv8A model hang issue with
ARMv8.4+ with cache modelling enabled configuration.
Incorrect L1 cache flush operation to PoU, using CLIDR_EL1
LoUIS field, which is required by the architecture to be
zero for ARMv8.4-A with ARMv8.4-S2FWB feature is replaced
with L1 to L2 and L2 to L3 (if L3 is present) cache flushes.
FVP_Base_AEMv8A model can be configured with L3 enabled by
setting `cluster0.l3cache-size` and `cluster1.l3cache-size`
to non-zero values, and presence of L3 is checked in
`aem_generic_core_pwr_dwn` function by reading
CLIDR_EL1.Ctype3 field value.

Change-Id: If3de3d4eb5ed409e5b4ccdbc2fe6d5a01894a9af
Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
4 years agoMerge changes from topic "lm/juno_dyn_cfg" into integration
Paul Beesley [Fri, 16 Aug 2019 10:24:53 +0000 (10:24 +0000)]
Merge changes from topic "lm/juno_dyn_cfg" into integration

* changes:
  Juno: Use shared mbedtls heap between bl1 and bl2
  Juno: add basic support for dynamic config

4 years agoMerge "intel: agilex: Fix memory controller driver" into integration
Paul Beesley [Thu, 15 Aug 2019 15:30:51 +0000 (15:30 +0000)]
Merge "intel: agilex: Fix memory controller driver" into integration

4 years agoMerge changes from topic "rockchip-uart-fixes" into integration
Paul Beesley [Thu, 15 Aug 2019 15:30:13 +0000 (15:30 +0000)]
Merge changes from topic "rockchip-uart-fixes" into integration

* changes:
  rockchip: rk3399: store actual debug uart information on suspend
  rockchip: move dt-coreboot uart distinction into param handling code
  rockchip: make uart baudrate configurable
  rockchip: px30: add uart5 as option for serial output

4 years agoMerge "AArch64: Align crash reporting output" into integration
Paul Beesley [Thu, 15 Aug 2019 15:18:25 +0000 (15:18 +0000)]
Merge "AArch64: Align crash reporting output" into integration

4 years agoAArch64: Align crash reporting output
Alexei Fedorov [Mon, 29 Jul 2019 12:34:07 +0000 (13:34 +0100)]
AArch64: Align crash reporting output

This patch modifies crash reporting for AArch64 to provide
aligned output of register dump and GIC registers.

Change-Id: I8743bf1d2d6d56086e735df43785ef28051c5fc3
Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
4 years agointel: agilex: Fix memory controller driver
Hadi Asyrafi [Thu, 8 Aug 2019 10:52:31 +0000 (18:52 +0800)]
intel: agilex: Fix memory controller driver

Increase calibration delay, fix ddrio control config & nonsecure region
limit

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: Ibca3c247a3ad5104176ca9057d29755599f13c9b

4 years agoMerge "intel: agilex: Fix reliance on hard coded clock information" into integration
Paul Beesley [Wed, 14 Aug 2019 12:37:43 +0000 (12:37 +0000)]
Merge "intel: agilex: Fix reliance on hard coded clock information" into integration

4 years agointel: agilex: Fix reliance on hard coded clock information
Hadi Asyrafi [Wed, 14 Aug 2019 05:49:00 +0000 (13:49 +0800)]
intel: agilex: Fix reliance on hard coded clock information

Extract clock information for UART, MMC & Watchdog from the clock manager

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: I42d3d4ceeaf45788d457472f6ddcd3fe099f0133

4 years agoMerge changes from topic "jc/coverity-fixes" into integration
Paul Beesley [Tue, 13 Aug 2019 11:20:25 +0000 (11:20 +0000)]
Merge changes from topic "jc/coverity-fixes" into integration

* changes:
  Fix Coverity #261967, Infinite loop
  Fix Coverity #343017, Missing unlock
  Fix Coverity #343008, Side affect in assertion
  Fix Coverity #342970, Uninitialized scalar variable

4 years agoJuno: Use shared mbedtls heap between bl1 and bl2
Louis Mayencourt [Wed, 31 Jul 2019 14:03:44 +0000 (15:03 +0100)]
Juno: Use shared mbedtls heap between bl1 and bl2

Change-Id: Ia1ecad58ebf9de3f3a44b17ad1de57424b431125
Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
4 years agoJuno: add basic support for dynamic config
Louis Mayencourt [Mon, 29 Jul 2019 09:40:17 +0000 (10:40 +0100)]
Juno: add basic support for dynamic config

Add the disable_auth dynamic parameter, that allows to disable the
authentication when TBBR is enabled. This parameter is for development
only.

Change-Id: Ic24ad16738517f7e07c4f506dcf69a1ae8df7d2d
Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
4 years agoMerge "spd: opteed: enable NS_TIMER_SWITCH" into integration
Alexei Fedorov [Mon, 12 Aug 2019 08:50:51 +0000 (08:50 +0000)]
Merge "spd: opteed: enable NS_TIMER_SWITCH" into integration

4 years agorockchip: rk3399: store actual debug uart information on suspend
Heiko Stuebner [Mon, 5 Aug 2019 14:44:36 +0000 (16:44 +0200)]
rockchip: rk3399: store actual debug uart information on suspend

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: Heiko Stuebner <heiko@sntech.de>
Change-Id: I1ea059d59a1126f6f8702315df7e620e632b686e

4 years agorockchip: move dt-coreboot uart distinction into param handling code
Heiko Stuebner [Mon, 5 Aug 2019 14:40:35 +0000 (16:40 +0200)]
rockchip: move dt-coreboot uart distinction into param handling code

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: Heiko Stuebner <heiko@sntech.de>
Change-Id: I278d595d2aa6c6864187fc8979a9fbff9814feac

4 years agoMerge changes from topic "intel-plat-refactor" into integration
Sandrine Bailleux [Wed, 7 Aug 2019 14:20:01 +0000 (14:20 +0000)]
Merge changes from topic "intel-plat-refactor" into integration

* changes:
  intel: Platform common code refactor
  intel: Platform common code refactor

4 years agointel: Platform common code refactor
Hadi Asyrafi [Thu, 1 Aug 2019 06:48:39 +0000 (14:48 +0800)]
intel: Platform common code refactor

Pull out common code from aarch64 and include

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: I4d0f5e1bb01bcdacbedf8e6c359de594239b645f

4 years agoMerge changes from topic "qemu_sbsa" into integration
Sandrine Bailleux [Tue, 6 Aug 2019 14:54:35 +0000 (14:54 +0000)]
Merge changes from topic "qemu_sbsa" into integration

* changes:
  plat/qemu: add gicv3 support for qemu
  plat/qemu: move gicv2 codes to separate file

4 years agoFix Coverity #261967, Infinite loop
Justin Chadwell [Tue, 23 Jul 2019 13:56:48 +0000 (14:56 +0100)]
Fix Coverity #261967, Infinite loop

Coverity has identified that the __aeabi_imod function will loop forever
if the denominator is not a power of 2, which is probably not the
desired behaviour.

The functions in the rest of the file are compiler implementations of
division if ARMv7 does not implement division which is permitted by the
spec. However, while most of the functions in the file are documented
and referenced in other places online, __aeabi_uimod and __aeabi_imod
are not. For this reason, these functions have been removed from the
code base, which also removes the Coverity error.

Change-Id: I20066d72365329a8b03a5536d865c4acaa2139ae
Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
4 years agoFix Coverity #343017, Missing unlock
Justin Chadwell [Tue, 23 Jul 2019 08:54:07 +0000 (09:54 +0100)]
Fix Coverity #343017, Missing unlock

All other returns from this function unlock the responses_lock, so we
also should release the lock in this case.

Change-Id: Ie2cfa8755723fed79e809f9480190d11f373a217
Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
4 years agoFix Coverity #343008, Side affect in assertion
Justin Chadwell [Tue, 23 Jul 2019 08:48:38 +0000 (09:48 +0100)]
Fix Coverity #343008, Side affect in assertion

This patch simply splits off the increment of next_xlat into a separate
statement to ensure consistent behaviour if the assert was to ever be
removed.

Change-Id: I827f601ccea55f4da9442048419c9b8cc0c5d22e
Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
4 years agoFix Coverity #342970, Uninitialized scalar variable
Justin Chadwell [Tue, 23 Jul 2019 08:45:18 +0000 (09:45 +0100)]
Fix Coverity #342970, Uninitialized scalar variable

This ensures that probe_data starts with a reasonable default, as
opposed to whatever was left on the stack.

Change-Id: I5550efea5e2bec7717f9fa063cb11e6a7005cce5
Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
4 years agoMerge "meson: gxl: Fix CPU hotplug" into integration
Sandrine Bailleux [Tue, 6 Aug 2019 11:04:10 +0000 (11:04 +0000)]
Merge "meson: gxl: Fix CPU hotplug" into integration

4 years agorockchip: make uart baudrate configurable
Heiko Stuebner [Mon, 5 Aug 2019 12:46:00 +0000 (14:46 +0200)]
rockchip: make uart baudrate configurable

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: Heiko Stuebner <heiko@sntech.de>
Change-Id: I7412139c3df3073a1996eb508ec08642ec6af90d

4 years agospd: opteed: enable NS_TIMER_SWITCH
Sumit Garg [Mon, 5 Aug 2019 09:04:48 +0000 (14:34 +0530)]
spd: opteed: enable NS_TIMER_SWITCH

Enable dispatcher to save/restore unbanked timer registers. So that
both secure (OP-TEE) and non-secure (Linux) worlds can have independent
access control over timer registers.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Change-Id: I4d58d5ff8298587ed478c8433fcbc3aef538d668

4 years agorockchip: px30: add uart5 as option for serial output
Heiko Stuebner [Mon, 5 Aug 2019 07:45:09 +0000 (09:45 +0200)]
rockchip: px30: add uart5 as option for serial output

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: Heiko Stuebner <heiko@sntech.de>
Change-Id: Ib88df7a55d761ee104d312c9953a13de3beba1c4

4 years agoMerge "intel: stratix10: Fix BL31 memory mapping" into integration
Alexei Fedorov [Fri, 2 Aug 2019 12:50:31 +0000 (12:50 +0000)]
Merge "intel: stratix10: Fix BL31 memory mapping" into integration

4 years agoMerge "meson: gxl: Fix reset and power off" into integration
Alexei Fedorov [Fri, 2 Aug 2019 12:50:04 +0000 (12:50 +0000)]
Merge "meson: gxl: Fix reset and power off" into integration

4 years agointel: stratix10: Fix BL31 memory mapping
Hadi Asyrafi [Thu, 1 Aug 2019 03:29:48 +0000 (11:29 +0800)]
intel: stratix10: Fix BL31 memory mapping

Previous config blocks ATF runtime service communications with SDM mailbox

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: Ia857facd0bd0790056df94ed1e016bcf619a161e

4 years agomeson: gxl: Fix CPU hotplug
Remi Pommarel [Tue, 30 Jul 2019 16:04:38 +0000 (18:04 +0200)]
meson: gxl: Fix CPU hotplug

The CPU[1-3] are reset to initial/cold boot state (with their reset
address set to 0x0). In this state the cpus are waiting for another
one to set the reset address to bl31_warm_entrypoint and wake them up.

The CPU0 needs a bit of a workaround as changing the reset address
either through PSCI mailbox or the mmio mapped RVBAR (at 0xda834650)
does not seem to have any effect. Thus the workaround consists in
emulating the other CPUs' behavior with a WFE loop and manually jumping
to bl31_warm_entrypoint when woken back up by another one.

Change-Id: I11265620b5fd0619285e3993253a3f9a3ff6a7a4
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
4 years agomeson: gxl: Fix reset and power off
Remi Pommarel [Thu, 4 Apr 2019 21:12:56 +0000 (23:12 +0200)]
meson: gxl: Fix reset and power off

Before CPU enters standby state (wfi), the AP needs to signal the SCP
through PSCI mailbox.

Also at boot time the AP has to wait for the SCP to be ready before
sending the first scpi commands or it can crash.

Change-Id: Iacc99f5bec745ad71922c5ea07ca5b87088133b6
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
4 years agoMerge "Switch AARCH32/AARCH64 to __aarch64__" into integration
Alexei Fedorov [Fri, 2 Aug 2019 10:21:53 +0000 (10:21 +0000)]
Merge "Switch AARCH32/AARCH64 to __aarch64__" into integration

4 years agoMerge "Replace __ASSEMBLY__ with compiler-builtin __ASSEMBLER__" into integration
Alexei Fedorov [Fri, 2 Aug 2019 08:57:02 +0000 (08:57 +0000)]
Merge "Replace __ASSEMBLY__ with compiler-builtin __ASSEMBLER__" into integration

4 years agoSwitch AARCH32/AARCH64 to __aarch64__
Julius Werner [Tue, 9 Jul 2019 21:02:43 +0000 (14:02 -0700)]
Switch AARCH32/AARCH64 to __aarch64__

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: Julius Werner <jwerner@chromium.org>
4 years agoReplace __ASSEMBLY__ with compiler-builtin __ASSEMBLER__
Julius Werner [Tue, 9 Jul 2019 20:49:11 +0000 (13:49 -0700)]
Replace __ASSEMBLY__ with compiler-builtin __ASSEMBLER__

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: Julius Werner <jwerner@chromium.org>
4 years agoMerge "doc: Suggest to use the latest version 8.3 of GCC" into integration
Alexei Fedorov [Thu, 1 Aug 2019 10:41:59 +0000 (10:41 +0000)]
Merge "doc: Suggest to use the latest version 8.3 of GCC" into integration

4 years agodoc: Suggest to use the latest version 8.3 of GCC
Louis Mayencourt [Mon, 15 Jul 2019 09:23:58 +0000 (10:23 +0100)]
doc: Suggest to use the latest version 8.3 of GCC

At the time of writting, GCC 8.3-2019.03 is the latest version available
on developer.arm.com.

Switch to bare-metal toolchain (arm-eabi-) for AArch32. This allows to
have a finer control on the use of floating-point and SIMD instructions.

Change-Id: I4438401405eae1e5f6d531b0162e8fa06f69135e
Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
4 years agointel: Platform common code refactor
Hadi Asyrafi [Thu, 1 Aug 2019 07:21:20 +0000 (15:21 +0800)]
intel: Platform common code refactor

Pull out common code from agilex and stratix10

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: Iddc0a9e6eccb30823d7b15615d5ce9c6bedb2abc

4 years agoMerge "intel: agilex: Fix BL31 memory mapping" into integration
Alexei Fedorov [Wed, 31 Jul 2019 16:21:46 +0000 (16:21 +0000)]
Merge "intel: agilex: Fix BL31 memory mapping" into integration

4 years agoMerge "Enable AMU for Cortex-Hercules" into integration
Alexei Fedorov [Wed, 31 Jul 2019 16:15:44 +0000 (16:15 +0000)]
Merge "Enable AMU for Cortex-Hercules" into integration

4 years agoEnable AMU for Cortex-Hercules
Balint Dobszay [Mon, 15 Jul 2019 09:46:20 +0000 (11:46 +0200)]
Enable AMU for Cortex-Hercules

Change-Id: Ie0a94783d0c8e111ae19fd592304e6485f04ca29
Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
4 years agoMerge "uniphier: fix typo and coding style" into integration
Alexei Fedorov [Wed, 31 Jul 2019 14:28:26 +0000 (14:28 +0000)]
Merge "uniphier: fix typo and coding style" into integration

4 years agoMerge "uniphier: replace DIV_ROUND_UP() with div_round_up() from utils_def.h" into...
Alexei Fedorov [Wed, 31 Jul 2019 14:28:21 +0000 (14:28 +0000)]
Merge "uniphier: replace DIV_ROUND_UP() with div_round_up() from utils_def.h" into integration

4 years agoMerge "rockchip: px30: Use new bl31_params_parse functions" into integration
Alexei Fedorov [Wed, 31 Jul 2019 14:16:45 +0000 (14:16 +0000)]
Merge "rockchip: px30: Use new bl31_params_parse functions" into integration

4 years agouniphier: fix typo and coding style
Masahiro Yamada [Fri, 26 Jul 2019 11:04:28 +0000 (20:04 +0900)]
uniphier: fix typo and coding style

Fix the typo "warn" -> "warm".

Also fix the following checkpatch.pl warnings:

  CHECK: Prefer using the BIT macro
  CHECK: No space is necessary after a cast
  CHECK: Alignment should match open parenthesis
  CHECK: Unnecessary parentheses around uniphier_io_policies[image_id].dev_handle

Change-Id: Ic11eea2668c4bf2d1e8f089e6338ba7b7156d80b
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
4 years agouniphier: replace DIV_ROUND_UP() with div_round_up() from utils_def.h
Masahiro Yamada [Fri, 26 Jul 2019 11:07:08 +0000 (20:07 +0900)]
uniphier: replace DIV_ROUND_UP() with div_round_up() from utils_def.h

Use the helper in utils_def.h instead of the own macro.

Change-Id: I527f9e75914d60f66354e365006b960ba5e8cbae
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
4 years agointel: agilex: Fix BL31 memory mapping
Hadi Asyrafi [Tue, 30 Jul 2019 02:56:38 +0000 (10:56 +0800)]
intel: agilex: Fix BL31 memory mapping

Previous config blocks ATF runtime service communications with SDM mailbox

Signed-off-by: Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Change-Id: Ic97aa381d3ceb96395595ec192132859d626b8d1

4 years agorockchip: px30: Use new bl31_params_parse functions
Ambroise Vincent [Mon, 29 Jul 2019 13:52:20 +0000 (14:52 +0100)]
rockchip: px30: Use new bl31_params_parse functions

This change is needed for the platform to compile following the changes
made in commits cbdc72b559ab and 3e02c7436cf4.

Change-Id: I3468dd27f3b4f3095fb82f445d51cd8714311eb7
Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
4 years agoMerge "sgm775: Fix build fail for TSP support on sgm775" into integration
Soby Mathew [Fri, 26 Jul 2019 17:06:14 +0000 (17:06 +0000)]
Merge "sgm775: Fix build fail for TSP support on sgm775" into integration

4 years agoplat/qemu: add gicv3 support for qemu
Hongbo Zhang [Thu, 19 Apr 2018 06:42:23 +0000 (14:42 +0800)]
plat/qemu: add gicv3 support for qemu

This patch adds gicv3 support for qemu, in order not to break any legacy
use case, gicv2 is still set by default, gicv3 can be selected by
compiling parameter QEMU_USE_GIC_DRIVER=QEMU_GICV3.

Signed-off-by: Hongbo Zhang <hongbo.zhang@linaro.org>
Reviewed-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Tested-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Change-Id: Ic63f38abf16ed3c36aa60e80d50103cf05cf797b

4 years agoplat/qemu: move gicv2 codes to separate file
Hongbo Zhang [Thu, 19 Apr 2018 05:06:07 +0000 (13:06 +0800)]
plat/qemu: move gicv2 codes to separate file

This file moves gicv2 codes to a new separate files, target is to add
gicv3 support later.

Signed-off-by: Hongbo Zhang <hongbo.zhang@linaro.org>
Reviewed-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Tested-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Change-Id: I30eb1fda5ea5c2b35d79360c52f46601cbca1bcc

4 years agoMerge "rockchip: px30: Fix build error" into integration
Soby Mathew [Fri, 26 Jul 2019 10:26:37 +0000 (10:26 +0000)]
Merge "rockchip: px30: Fix build error" into integration

4 years agoMerge changes from topic "advk-serror" into integration
Soby Mathew [Fri, 26 Jul 2019 09:26:14 +0000 (09:26 +0000)]
Merge changes from topic "advk-serror" into integration

* changes:
  marvell/a3700: Prevent SError accessing PCIe link while it is down
  marvell: Switch to xlat_tables_v2

4 years agoMerge changes from topic "jun-add-imx7-pico" into integration
Soby Mathew [Fri, 26 Jul 2019 09:25:54 +0000 (09:25 +0000)]
Merge changes from topic "jun-add-imx7-pico" into integration

* changes:
  plat: imx7: Add PicoPi iMX7D basic support
  plat: imx7: refactor code for reuse

4 years agoMerge changes from topic "gby/cryptocell-multi-vers" into integration
Soby Mathew [Thu, 25 Jul 2019 15:38:10 +0000 (15:38 +0000)]
Merge changes from topic "gby/cryptocell-multi-vers" into integration

* changes:
  cryptocell: add product version awareness support
  cryptocell: move Cryptocell specific API into driver

4 years agorockchip: px30: Fix build error
Ambroise Vincent [Thu, 25 Jul 2019 15:06:50 +0000 (16:06 +0100)]
rockchip: px30: Fix build error

"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 93c690eba8ca ("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: Ambroise Vincent <ambroise.vincent@arm.com>
4 years agosgm775: Fix build fail for TSP support on sgm775
Madhukar Pappireddy [Mon, 22 Jul 2019 22:39:51 +0000 (17:39 -0500)]
sgm775: Fix build fail for TSP support on sgm775

Fixed the path to a source file specified in tsp makefile
Created a platform specific tsp makefile

Change-Id: I89565127c67eff510e48e21fd450af4c3088c2d4
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
4 years agoMerge "Romlib makefile refactoring and script rewriting" into integration
Soby Mathew [Thu, 25 Jul 2019 12:54:59 +0000 (12:54 +0000)]
Merge "Romlib makefile refactoring and script rewriting" into integration

4 years agocryptocell: add product version awareness support
Gilad Ben-Yossef [Tue, 14 May 2019 11:47:36 +0000 (14:47 +0300)]
cryptocell: add product version awareness support

Add support for multiple Cryptocell revisions which
use different APIs.

This commit only refactors the existing code in preperation to the addition
of another Cryptocell revisions later on.

Signed-off-by: Gilad Ben-Yossef <gilad.benyossef@arm.com>
Change-Id: I16d80b31afb6edd56dc645fee5ea619cc74f09b6

4 years agocryptocell: move Cryptocell specific API into driver
Gilad Ben-Yossef [Tue, 14 May 2019 07:48:18 +0000 (10:48 +0300)]
cryptocell: move Cryptocell specific API into driver

Code using Cryptocell specific APIs was used as part of the
arm common board ROT support, instead of being abstracted
in Cryptocell specific driver code, creating two problems:
- Any none arm board that uses Cryptocell wuld need to
  copy and paste the same code.
- Inability to cleanly support multiple versions of Cryptocell
  API and products.

Move over Cryptocell specific API calls into the Cryptocell
driver, creating abstraction API where needed.

Signed-off-by: Gilad Ben-Yossef <gilad.benyossef@arm.com>
Change-Id: I9e03ddce90fcc47cfdc747098bece86dbd11c58e

4 years agoMerge changes from topic "jts/spsr" into integration
Soby Mathew [Thu, 25 Jul 2019 09:13:49 +0000 (09:13 +0000)]
Merge changes from topic "jts/spsr" into integration

* changes:
  Refactor SPSR initialisation code
  SSBS: init SPSR register with default SSBS value

4 years agoMerge changes I0d17ba6c,I540741d2,I9e6475ad,Ifd769320,I12c04a85, ... into integration
Soby Mathew [Thu, 25 Jul 2019 09:04:21 +0000 (09:04 +0000)]
Merge changes I0d17ba6c,I540741d2,I9e6475ad,Ifd769320,I12c04a85, ... into integration

* changes:
  plat/mediatek/mt81*: Use new bl31_params_parse() helper
  plat/rockchip: Use new bl31_params_parse_helper()
  Add helper to parse BL31 parameters (both versions)
  Factor out cross-BL API into export headers suitable for 3rd party code
  Use explicit-width data types in AAPCS parameter structs
  plat/rockchip: Switch to use new common BL aux parameter library
  Introduce lightweight BL platform parameter library

4 years agoplat/mediatek/mt81*: Use new bl31_params_parse() helper
Julius Werner [Fri, 31 May 2019 00:34:08 +0000 (17:34 -0700)]
plat/mediatek/mt81*: Use new bl31_params_parse() helper

The Mediatek MT8173/MT8183 SoCs are prime candidates for switching to
the new bl31_params_parse() helper, so switch them over. This will allow
BL2 implementations on these platforms to transparently switch over to
the version 2 parameter structure.

Change-Id: I0d17ba6c455102d325a06503d2078a76d12b5deb
Signed-off-by: Julius Werner <jwerner@chromium.org>
4 years agoplat/rockchip: Use new bl31_params_parse_helper()
Julius Werner [Thu, 30 May 2019 23:57:15 +0000 (16:57 -0700)]
plat/rockchip: Use new bl31_params_parse_helper()

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: Julius Werner <jwerner@chromium.org>
4 years agoMerge "plat: imx8m: Add basic rdc module init driver" into integration
Soby Mathew [Wed, 24 Jul 2019 16:18:01 +0000 (16:18 +0000)]
Merge "plat: imx8m: Add basic rdc module init driver" into integration

4 years agoMerge "rockchip: px30: support px30" into integration
Soby Mathew [Wed, 24 Jul 2019 12:02:13 +0000 (12:02 +0000)]
Merge "rockchip: px30: support px30" into integration

4 years agoRefactor SPSR initialisation code
John Tsichritzis [Mon, 1 Jul 2019 13:27:33 +0000 (14:27 +0100)]
Refactor SPSR initialisation code

Change-Id: Ic3b30de13e314efca30fc71370227d3e76f1148b
Signed-off-by: John Tsichritzis <john.tsichritzis@arm.com>
4 years agoSSBS: init SPSR register with default SSBS value
John Tsichritzis [Tue, 23 Jul 2019 10:12:41 +0000 (11:12 +0100)]
SSBS: init SPSR register with default SSBS value

This patch introduces an additional precautionary step to further
enhance protection against variant 4. During the context initialisation
before we enter the various BL stages, the SPSR.SSBS bit is explicitly
set to zero. As such, speculative loads/stores are by default disabled
for all BL stages when they start executing. Subsequently, each BL
stage, can choose to enable speculative loads/stores or keep them
disabled.

This change doesn't affect the initial execution context of BL33 which
is totally platform dependent and, thus, it is intentionally left up to
each platform to initialise.

For Arm platforms, SPSR.SSBS is set to zero for BL33 too. This means
that, for Arm platforms, all BL stages start with speculative
loads/stores disabled.

Change-Id: Ie47d39c391d3f20fc2852fc59dbd336f8cacdd6c
Signed-off-by: John Tsichritzis <john.tsichritzis@arm.com>
4 years agoMerge "intel: agilex: Fix build error" into integration
Soby Mathew [Wed, 24 Jul 2019 11:02:17 +0000 (11:02 +0000)]
Merge "intel: agilex: Fix build error" into integration

4 years agointel: agilex: Fix build error
Ambroise Vincent [Tue, 23 Jul 2019 10:10:27 +0000 (11:10 +0100)]
intel: agilex: Fix build error

"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 93c690eba8ca ("Enable
-Wshift-overflow=2 to check for undefined shift behavior")

Change-Id: I141827a6711ab7759bfd6357e4ed9c1176da7c7b
Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
4 years agoAdd helper to parse BL31 parameters (both versions)
Julius Werner [Thu, 30 May 2019 00:01:46 +0000 (17:01 -0700)]
Add helper to parse BL31 parameters (both versions)

BL31 used to take a single bl31_params_t parameter structure with entry
point information in arg0. In commit 726002263 (Add new version of image
loading.) this API was changed to a more flexible linked list approach,
and the old parameter structure was copied into all platforms that still
used the old format. This duplicated code unnecessarily among all these
platforms.

This patch adds a helper function that platforms can optionally link to
outsource the task of interpreting arg0. Many platforms are just
interested in the BL32 and BL33 entry point information anyway. Since
some platforms still need to support the old version 1 parameters, the
helper will support both formats when ERROR_DEPRECATED == 0. This allows
those platforms to drop a bunch of boilerplate code and asynchronously
update their BL2 implementation to the newer format.

Change-Id: I9e6475adb1a7d4bccea666118bd1c54962e9fc38
Signed-off-by: Julius Werner <jwerner@chromium.org>
4 years agoFactor out cross-BL API into export headers suitable for 3rd party code
Julius Werner [Wed, 29 May 2019 04:03:58 +0000 (21:03 -0700)]
Factor out cross-BL API into export headers suitable for 3rd party code

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: Julius Werner <jwerner@chromium.org>
4 years agoUse explicit-width data types in AAPCS parameter structs
Julius Werner [Wed, 24 Jul 2019 03:00:13 +0000 (20:00 -0700)]
Use explicit-width data types in AAPCS parameter structs

It's not a good idea to use u_register_t for the members of
aapcs64_params_t and aapcs32_params_t, since the width of that type
always depends on the current execution environment. This would cause
problems if e.g. we used this structure to set up the entry point of an
AArch32 program from within an AArch64 program. (It doesn't seem like
any code is doing that today, but it's probably still a good idea to
write this defensively. Also, it helps with my next patch.)

Change-Id: I12c04a85611f2b6702589f3362bea3e6a7c9f776
Signed-off-by: Julius Werner <jwerner@chromium.org>
4 years agoplat/rockchip: Switch to use new common BL aux parameter library
Julius Werner [Sat, 25 May 2019 03:37:58 +0000 (20:37 -0700)]
plat/rockchip: Switch to use new common BL aux parameter library

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: Julius Werner <jwerner@chromium.org>
4 years agoplat: imx8m: Add basic rdc module init driver
Jacky Bai [Thu, 18 Jul 2019 05:43:17 +0000 (13:43 +0800)]
plat: imx8m: Add basic rdc module init driver

Add the basic support for RDC init/config driver,
this module driver can be enhanced more if necessary.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Change-Id: I290dc378d0d85671435f9de46d5aa790b4e006c8

4 years agoMerge "n1sdp: fix DMC ECC enablement sequence in N1SDP platform" into integration
Soby Mathew [Tue, 23 Jul 2019 15:18:58 +0000 (15:18 +0000)]
Merge "n1sdp: fix DMC ECC enablement sequence in N1SDP platform" into integration

4 years agoMerge "arm: Shorten the Firmware Update (FWU) process" into integration
Soby Mathew [Tue, 23 Jul 2019 12:37:25 +0000 (12:37 +0000)]
Merge "arm: Shorten the Firmware Update (FWU) process" into integration

4 years agoMerge "Fix BL31 crash reporting on AArch64 only machines" into integration
Soby Mathew [Tue, 23 Jul 2019 12:34:55 +0000 (12:34 +0000)]
Merge "Fix BL31 crash reporting on AArch64 only machines" into integration

4 years agon1sdp: fix DMC ECC enablement sequence in N1SDP platform
Manoj Kumar [Mon, 22 Jul 2019 15:10:12 +0000 (16:10 +0100)]
n1sdp: fix DMC ECC enablement sequence in N1SDP platform

The DMC-620 memory controllers in N1SDP platform has to be put
into CONFIG state before writing to ERR0CTLR0 register to enable
ECC.

This patch fixes the sequence so that DMCs are set to CONFIG
state before writing to ERR0CTLR0 register and moved back to
READY state after writing.

Change-Id: I1252f3ae0991603bb29234029cddb5fbf869c1b2
Signed-off-by: Manoj Kumar <manoj.kumar3@arm.com>
4 years agoarm: Shorten the Firmware Update (FWU) process
Ambroise Vincent [Thu, 4 Jul 2019 13:58:45 +0000 (14:58 +0100)]
arm: Shorten the Firmware Update (FWU) process

The watchdog is configured with a default value of 256 seconds in order
to implement the Trusted Board Boot Requirements.

For the FVP and Juno platforms, the FWU process relies on a watchdog
reset. In order to automate the test of FWU, the length of this process
needs to be as short as possible. Instead of waiting for those 4 minutes
to have a reset by the watchdog, tell it to reset immediately.

There are no side effects as the value of the watchdog's load register
resets to 0xFFFFFFFF.

Tested on Juno.

Change-Id: Ib1aea80ceddc18ff1e0813a5b98dd141ba8a3ff2
Signed-off-by: Ambroise Vincent <ambroise.vincent@arm.com>
4 years agoMerge "Cortex_hercules: Introduce preliminary cpu support" into integration
Soby Mathew [Tue, 23 Jul 2019 09:33:15 +0000 (09:33 +0000)]
Merge "Cortex_hercules: Introduce preliminary cpu support" into integration