240 Commits

Author SHA1 Message Date
Manish Pandey
601e2d4325 Merge changes from topic "bk/warnings" into integration
* changes:
  docs: describe the new warning levels
  build: add -Wunused-const-variable=2 to W=2
  build: include -Wextra in generic builds
  docs(porting-guide): update a reference
  fix(st-usb): replace redundant checks with asserts
  fix(brcm): add braces around bodies of conditionals
  fix(renesas): align incompatible function pointers
  fix(zynqmp): remove redundant api_version check
  fix: remove old-style declarations
  fix: unify fallthrough annotations
2023-01-10 11:56:42 +01:00
Lucas Stach
8cfa94b7a7 feat(imx8mq): add BL31 PIE support
Enable PIE support so the BL31 firmware can be loaded from anywhere
within the OCRAM (SRAM). For the PIE support we only need to replace
the BL31_BASE define by the BL31_START symbol which is a relocatable
and we need to enable it by setting ENABLE_PIE := 1.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: Ie6a13e4ae0fdc6627a94798d7a86df7d5b310896
2022-12-13 11:08:42 +01:00
Lucas Stach
0445a4ab1f refactor(imx8mq): introduce BL31_SIZE
No functional change.

Introduce BL31_SIZE define and calculate the limits based on the
BL31_BASE and the BL31_SIZE define. Also make use of SZ_64K to make
it easier to read. This is required for later BL31 PIE support since
it drops the calculation based on the BL31_LIMIT and BL31_BASE.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: I517074b866b5bf11841b51777f87c926b304488d
2022-12-13 11:08:42 +01:00
Lucas Stach
c0fb887433 refactor(imx8mq): make use of setup_page_tables()
Improve code readability and align with other i.MX8M* platforms.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: Ifd29b74872e3a567288d208de4827403078164e9
2022-12-13 11:08:42 +01:00
Lucas Stach
36be10861e feat(imx8mq): always set up console
This aligns the i.MX8MQ platform behaviour with the other i.MX8M*
platforms by always setting up the console UART.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: I1279d9cb4feb6e789422b9844cab711b8daae74e
2022-12-13 11:08:37 +01:00
Lucas Stach
7698dbab96 feat(imx8mq): remove empty bl31_plat_runtime_setup
Having this empty definition is actively harmful, as it prevents the
default weak function to be used, which does a switch of the console
state.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: I3b78e0c524c4907714036dba573a44d8f9c48b09
2022-12-13 11:08:33 +01:00
Lucas Stach
202737efda feat(imx8mq): make IMX_BOOT_UART_BASE configurable via build parameter
This aligns the i.MX8MQ build with the other i.MX8M platforms by
allowing to override the default IMX_BOOT_UART_BASE value via a make
parameter.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Change-Id: Iad9b844517209fc7d051c61767f71ac9fa2b55c7
2022-12-13 11:07:02 +01:00
Boyan Karatotev
f4b8470fee fix: remove old-style declarations
TF-A wants to eventually enable -Wold-style-definition globally. Convert
the rare few instances where this is still the case.

Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
Change-Id: I9c450fc875cf097e6de2ed577ea3b085821c9f5e
2022-12-01 16:17:34 +00:00
Manish V Badarkhe
de10522af7 refactor(imx8m): pass platform metadata as a function's argument
Based on the prototype modification of the event_log_measure_and_record
function in the previous patch, platform metadata was passed as an
argument.

Change-Id: I4b98b6a035abb28c000344f2dbeb3996c69eee61
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-11-22 10:06:56 +00:00
Madhukar Pappireddy
b139f8527e Merge "feat(imx8mm): add BL31 PIE support" into integration 2022-11-01 15:16:07 +01:00
Madhukar Pappireddy
c41a196f56 Merge "refactor(imx8mm): introduce BL2_SIZE and BL31_SIZE" into integration 2022-11-01 15:16:03 +01:00
Madhukar Pappireddy
473bed8ffd Merge "refactor(imx8mm): make use of setup_page_tables()" into integration 2022-11-01 15:15:52 +01:00
Madhukar Pappireddy
a213c27ba7 Merge "refactor(imx8mm): cleanup the mmap region settings" into integration 2022-11-01 15:15:45 +01:00
Madhukar Pappireddy
d81fc8e60e Merge "feat(imx8mn): add BL31 PIE support" into integration 2022-11-01 15:15:04 +01:00
Madhukar Pappireddy
89cb9c579e Merge "refactor(imx8mn): introduce BL31_SIZE" into integration 2022-11-01 15:14:58 +01:00
Madhukar Pappireddy
ebaf46c8e3 Merge "refactor(imx8mn): make use of setup_page_tables()" into integration 2022-11-01 15:14:53 +01:00
Madhukar Pappireddy
d907a04988 Merge "refactor(imx8mn): cleanup the mmap region settings" into integration 2022-11-01 15:14:48 +01:00
Madhukar Pappireddy
5178175c50 Merge "feat(imx8mp): add BL31 PIE support" into integration 2022-11-01 15:14:41 +01:00
Madhukar Pappireddy
c564d817e4 Merge "refactor(imx8mp): introduce BL2_SIZE and BL31_SIZE" into integration 2022-11-01 15:14:36 +01:00
Madhukar Pappireddy
2668742c87 Merge "refactor(imx8mp): make use of setup_page_tables()" into integration 2022-11-01 15:14:30 +01:00
Madhukar Pappireddy
f8f2440fdc Merge "refactor(imx8mp): cleanup the mmap region settings" into integration 2022-11-01 15:14:25 +01:00
Madhukar Pappireddy
8f93151aac Merge "feat(imx8m): make psci common code pie compatible" into integration 2022-11-01 15:14:16 +01:00
Madhukar Pappireddy
0f0a9dbfa7 Merge "fix(imx8m): fix dram retention fsp_table access" into integration 2022-11-01 15:14:10 +01:00
Shawn Guo
ad6eb1951b fix(imx8m): update poweroff related SNVS_LPCR bits only
Function imx_system_off() writes SNVS_LPCR register to power off the SoC
without bit masking.  This clears other bits like LPWUI_EN and breaks
the function of SoC wake-up using RTC alarm.  Fix it by updating poweroff
related bits only.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Change-Id: If641af4dc1103c67e1a645c03bb36a5f56665aef
2022-10-26 18:57:39 +08:00
Marco Felsch
a8e6a2c83c feat(imx8mm): add BL31 PIE support
Enable PIE support so the BL31 firmware can be loaded from anywhere
within the OCRAM (SRAM). For the PIE support we only need to replace the
BL31_BASE define by the BL31_START symbol which is a relocatable and we
need to enable it by setting ENABLE_PIE := 1.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I52e654917167f0faf6aa437da233d8faf1f2bb26
2022-10-20 18:22:43 +02:00
Marco Felsch
40ff8ff8fd refactor(imx8mm): introduce BL2_SIZE and BL31_SIZE
No functional change.

Introduce BLx_SIZE defines and calculate the limits based on the
BLx_BASE and the BLx_SIZE define. Also make use of SZ_128K to make it
easier to read. This is required for later BL31 PIE support since it
drops the calculation based on the BL31_LIMIT and BL31_BASE.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I8670faa5d5a572ef230011594f3d0d594fb257d9
2022-10-20 18:22:43 +02:00
Marco Felsch
0b727248ce refactor(imx8mm): make use of setup_page_tables()
No functional change. Use the setup_page_tables() helper function which
does the three calls for us. Also the function has some logging support
which will be nice during debugging.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: Ic465491ff5468e812e805de56be3b6b92d245080
2022-10-20 18:22:43 +02:00
Marco Felsch
686a5bc894 refactor(imx8mm): cleanup the mmap region settings
No functional change.

Introduce the bl_regions array to gather all regions and make use of the
MAP_REGION_FLAT() macro. The array is than passed to mmap_add() to map
all regions. While on it introduce some defines so the addr, size and
flags can be read more easily.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I9f0ae9fc89514db71bef734b867c46574833831c
2022-10-20 18:22:30 +02:00
Marco Felsch
62d37a4362 feat(imx8mn): add BL31 PIE support
Enable PIE support so the BL31 firmware can be loaded from anywhere
within the OCRAM (SRAM). For the PIE support we only need to replace the
BL31_BASE define by the BL31_START symbol which is a relocatable and we
need to enable it by setting ENABLE_PIE := 1.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I33c8e35c35112d70d2725eebe484a853a8aad9e0
2022-10-20 18:21:33 +02:00
Marco Felsch
796a249c2d refactor(imx8mn): introduce BL31_SIZE
Introduce BL31_SIZE define and calculate the limit based on the
BL31_BASE and the BL31_SIZE define. Also make use of SZ_128K to make it
easier to read. This is required for later BL31 PIE support since it
drops the calculation based on the BL31_LIMIT and BL31_BASE.

While on it remove the duplicated <lib/utils_def.h> include.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: Ifca40bd5682ef993db986439115abd9e9a66a5b2
2022-10-20 18:21:33 +02:00
Marco Felsch
602b3286a5 refactor(imx8mn): make use of setup_page_tables()
No functional change.

Use the setup_page_tables() helper function which does the three calls
for us. Also the function has some logging support which will be nice
during debugging.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I2f0182f19300a3a57bbeb7e2107c5fb5525dd0c1
2022-10-20 18:21:33 +02:00
Marco Felsch
b6ac8cc27e refactor(imx8mn): cleanup the mmap region settings
No functional change.

Introduce the bl_regions array to gather all regions and make use of the
MAP_REGION_FLAT() macro. The array is than passed to mmap_add() to map
all regions. While on it introduce some defines so the addr, size and
flags can be read more easily.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: Id5849d2a7326a943927f458f1c6abbc041f5be18
2022-10-20 18:21:28 +02:00
Marco Felsch
7a443fefa4 feat(imx8mp): add BL31 PIE support
Enable PIE support so the BL31 firmware can be loaded from anywhere
within the OCRAM (SRAM). How important this is shows the back and forth
of the BL31_BASE address starting with TF-A v2.5. Since then the
BL31_BASE address wasn't stable and choosing the correct combination of
SPL version loadaddress and TF-A version loadaddr was tricky.

For the PIE support we only need to replace the BL31_BASE by the
BL31_START which is a relocatable symbol and to enable it by setting
ENABLE_PIE := 1.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I4214db1f27120f9f9cd1413ccd7a5a7d095ff45d
2022-10-20 18:20:27 +02:00
Marco Felsch
5fe51c93f8 refactor(imx8mp): introduce BL2_SIZE and BL31_SIZE
No functional change.

Introduce BLx_SIZE defines and calculate the limits based on the
BLx_BASE and the BLx_SIZE define. Also make use of SZ_128K to make it
easier to read. This is required for later BL31 PIE support since it
drops the calculation based on the BL31_LIMIT and BL31_BASE.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: Idae34c1dfcedd35238fe083149080a199d50eed0
2022-10-20 18:20:27 +02:00
Marco Felsch
c52966f963 refactor(imx8mp): make use of setup_page_tables()
No functional change. Use the setup_page_tables() helper function which
does the three calls for us. Also the function has some logging support
which will be nice during debugging.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I350965414939865220f745ef5b24d2cdc3095e7b
2022-10-20 18:20:27 +02:00
Marco Felsch
c995943de8 refactor(imx8mp): cleanup the mmap region settings
Introduce the bl_regions array to gather all regions and make use of the
MAP_REGION_FLAT() macro. The array is than passed to mmap_add() to map
all regions. While on it introduce some defines so the addr, size and
flags can be read more easily. No functional change done.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: I7f637beea61138a86d691cd78fba2dd17e4dc925
2022-10-20 18:20:19 +02:00
Marco Felsch
5d2d3328db feat(imx8m): make psci common code pie compatible
Swap the BL31_BASE define with the BL31_START symbol. This is required
for later added PIE support because the symbol location can be relocated
whereas the define can't be relocated. In case of disabled PIE support
BL31_START equals BL31_BASE and so we don't need a ifdef.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: Ic1bbf3af5b346898bfcbb207ffc27d9a5bdcaae7
2022-10-20 18:16:41 +02:00
Marco Felsch
6c8f523138 fix(imx8m): fix dram retention fsp_table access
The fsp_table access by [i-1] can cause invalid memory access in case of
i=0. This can be the case if no fsp_table is available. Fix this by
adding the idx variable which tracks the correct index.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Change-Id: If2285517eb9fe837f3ad54360307a77a658bf62c
2022-10-20 18:16:41 +02:00
Andrey Zhizhikin
720e7b66f2 feat(imx8m): add support for high assurance boot
Introduce support for High Assurance Boot (HABv4), which is used to
establish and extend the Root-of-Trust during FW loading at any given
boot stage.

This commit introduces support for HAB ROM Vector Table (RVT) API, which
is normally used by post-ROM code to authenticate additional boot images
(Kernel, FDT, FIT, etc.) that are taking part in the Root-of-Trust.

Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Change-Id: I780d308369824fa4850844eb9e91768e417166a0
2022-10-19 15:55:15 +02:00
Andrey Zhizhikin
62a93aa7af feat(imx8mp): add hab and map required memory blocks
In order for HAB to perform operations, memory regions has to be mapped
in TF-A, which HAB ROM code would use internally.

Include those memory blocks for i.MX8M+ SoC. Of a special note, the DRAM
block is mapped with complete size available on the platform and uses
MT_RW attributes, this is required to minimize the size of translation
tables and provide a possibility to exchange the execution results
between EL3 and EL1&2, see details in [1].

Link: [1]: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16880
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Change-Id: I986cdce434d1ec9ea8b3c0d5599edde55b9b30f8
2022-10-19 15:54:39 +02:00
Andrey Zhizhikin
b5f06d3dfa feat(imx8mn): add hab and map required memory blocks
In order for HAB to perform operations, memory regions has to be mapped
in TF-A, which HAB ROM code would use internally.

Include those memory blocks for i.MX8MN SoC. Of a special note, the DRAM
block is mapped with complete size available on the platform and uses
MT_RW attributes, this is required to minimize the size of translation
tables and provide a possibility to exchange the execution results
between EL3 and EL1&2, see details in [1].

Link: [1]: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16880
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Change-Id: If7a2b718658db452871e1ae56b71a4983e8ef2fe
2022-10-19 15:53:01 +02:00
Andrey Zhizhikin
5941f37288 feat(imx8mm): add hab and map required memory blocks
In order for HAB to perform operations, memory regions has to be mapped
in TF-A, which HAB ROM code would use internally.

Include those memory blocks for i.MX8MM SoC. Of a special note, the DRAM
block is mapped with complete size available on the platform and uses
MT_RW attributes, this is required to minimize the size of translation
tables and provide a possibility to exchange the execution results
between EL3 and EL1&2, see details in [1].

Link: [1]: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16880
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Change-Id: I6a3a3d7105b85c2f4ab6ea6cfbca67c9a325eb11
2022-10-19 15:47:39 +02:00
Claus Pedersen
885e268304 refactor(libc): clean up dependencies in libc
- Removing platform dependencies from libc modules.
- Replacing panicking with actual error handling.
- Debug macros are included indirectly from assert.h. Removing
  "platform_def.h" from assert.h and adding "common/debug.h"
  where the macros are used.
- Removing hack for fixing PLAT_LOG_LEVEL_ASSERT to 40.
  Instead removing assert with expression, as this
  does not provide additional information.

Signed-off-by: Claus Pedersen <claustbp@google.com>
Change-Id: Icc201ea7b63c1277e423c1cfd13fd6816c2bc568
2022-09-22 13:23:49 +02:00
Andrey Zhizhikin
901d74b2d4 fix(imx8m): move caam init after serial init
CAAM provides serial output during initialization, but the serial init
occurs after CAAM. This leads to serial output produced by CAAM init
function to be omitted and not displayed.

Change the order of initialization and call CAAM init after Serial. This
has no impact as Serial does not require CAAM to be initialized upfront.

Fixes: 2502709f60de ("plat: imx8m: Add caam module init on imx8m")
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Cc: Jacky Bai <ping.bai@nxp.com>
Change-Id: I09c0a5474a1babfb0b53c4455891689ec08b5bdb
2022-09-20 15:12:00 +02:00
Andrey Zhizhikin
6e24d79509 fix(imx8m): correct serial output for HAB JR0
Serial output is missing the EOL marker, which makes the output garbled.

Add EOL to the output, which adds a newline and makes log output
consistent.

Fixes: 77850c96f23b ("feat(plat/imx8m): do not release JR0 to NS if HAB is using it")
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Cc: Franck LENORMAND <franck.lenormand@nxp.com>
Cc: Jacky Bai <ping.bai@nxp.com>
Change-Id: I58b67f441016122bc9361d7224d310522917eff0
2022-09-20 08:03:57 +02:00
Salome Thirot
e95abc4c01 fix: make TF-A use provided OpenSSL binary
Currently Tf-A uses whatever openssl binary is on the system to sign
images. However if OPENSSL_DIR is specified in the build flags this can
lead to linking issues as the system binary can end up being linked
against shared libraries provided in OPENSSL_DIR/lib if both binaries
(the system's and the on in OPENSSL_DIR/bin) are the same version.
This patch ensures that the binary used is always the one given by
OPENSSL_DIR to avoid those link issues.

Signed-off-by: Salome Thirot <salome.thirot@arm.com>
Change-Id: Ib534e06ebc8482e4391e376d3791a87968de4a99
2022-08-04 10:45:46 +01:00
Madhukar Pappireddy
0cb8dd7a61 Merge changes Iec22dcab,Ib88b4b5d,I50cd6b82,If1167785,I9b3a08ef, ... into integration
* changes:
  feat(imx8m): keep pu domains in default state during boot stage
  feat(imx8m): add the PU power domain support on imx8mm/mn
  feat(imx8m): add the anamix pll override setting
  feat(imx8m): add the ddr frequency change support for imx8m family
  feat(imx8mn): enable dram retention suuport on imx8mn
  feat(imx8mm): enable dram retention suuport on imx8mm
  feat(imx8m): add dram retention flow for imx8m family
2022-07-08 15:40:59 +02:00
Jacky Bai
9d3249de80 feat(imx8m): keep pu domains in default state during boot stage
No need to keep all PU domains on as the full power domain driver
support has been added.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Change-Id: Iec22dcabbbfe3f38b915104a437d396d7b1bb2d8
2022-06-27 09:27:11 +08:00
Jacky Bai
44dea5444b feat(imx8m): add the PU power domain support on imx8mm/mn
Add the PU power domain support for imx8mm/mn.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Change-Id: Ib88b4b5db956fdf2c77d2f2f3723d61a7060409d
2022-06-27 09:27:11 +08:00
Jacky Bai
66d399e454 feat(imx8m): add the anamix pll override setting
Add PLL power down override & bypass support when
system enter DSM mode.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Change-Id: I50cd6b82151961ab849f58714a8c307d3f7f4166
2022-06-27 09:27:11 +08:00