1#-------------------------------------------------------------------------------
2# Copyright (c) 2023-2024, Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
8cmake_policy(SET CMP0076 NEW)
9set(CMAKE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
10
11add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../common common)
12
13# TFM_PLATFORM_VARIANT value for supported RD-Fremont platform variants:
14# - '0' for RD-Fremont platform
15# - '1' for RD-Fremont-Cfg1 platform
16# - '2' for RD-Fremont-Cfg2 platform
17
18if (TFM_PLATFORM_VARIANT STREQUAL "0")
19      target_compile_definitions(platform_common_interface
20                                 INTERFACE PLATFORM_VARIANT=0)
21elseif (TFM_PLATFORM_VARIANT STREQUAL "1")
22      target_compile_definitions(platform_common_interface
23                                 INTERFACE PLATFORM_VARIANT=1)
24elseif (TFM_PLATFORM_VARIANT STREQUAL "2")
25      target_compile_definitions(platform_common_interface
26                                 INTERFACE PLATFORM_VARIANT=2)
27else()
28      message(FATAL_ERROR "Please set TFM_PLATFORM_VARIANT to \n"
29                                "'0' for RD-Fremont\n"
30                                "'1' for RD-Fremont-Cfg1\n"
31                                "'2' for RD-Fremont-Cfg2\n")
32endif()
33
34#========================= Platform Region Defs ===============================#
35
36target_include_directories(platform_region_defs
37    INTERFACE
38        .
39)
40
41#========================= Platform Secure ====================================#
42
43target_include_directories(platform_s
44    PUBLIC
45        cmsis_drivers
46        device
47        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
48        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi
49        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata
50        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011
51)
52
53target_sources(platform_s
54    PRIVATE
55        host_system.c
56        cmsis_drivers/Driver_Flash.c
57        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi/cfi_drv.c
58        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.c
59        cmsis_drivers/Driver_USART.c
60        device/host_device_definition.c
61        device/rse_expansion_device_definition.c
62        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011/uart_pl011_drv.c
63        rse_expansion_peripherals_def.c
64        rse_comms/rse_comms_permissions_hal.c
65        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_v3_x.c>
66        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_wrapper_v3_x.c>
67)
68
69#========================= Platform BL2 =======================================#
70
71target_sources(platform_bl2
72    PRIVATE
73        bl2/boot_hal_bl2.c
74        bl2/flash_map_bl2.c
75        bl2/interrupts_bl2.c
76        host_system.c
77        cmsis_drivers/Driver_Flash.c
78        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi/cfi_drv.c
79        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.c
80        cmsis_drivers/Driver_USART.c
81        device/host_device_definition.c
82        device/rse_expansion_device_definition.c
83        host_drivers/mscp_drv.c
84        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011/uart_pl011_drv.c
85        ni_tower_periph_lib.c
86        ni_tower_sysctrl_lib.c
87        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_v3_x.c>
88        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_wrapper_v3_x.c>
89)
90
91target_compile_definitions(platform_bl2
92    PRIVATE
93        MEASURED_BOOT_HASH_ALG=${MEASURED_BOOT_HASH_ALG}
94)
95
96target_include_directories(platform_bl2
97    PUBLIC
98        bl2
99        cmsis_drivers
100        device
101        host_drivers
102        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
103        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi
104        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata
105        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011
106)
107
108target_compile_definitions(platform_bl2
109    PRIVATE
110        PLAT_LCP_COUNT=${PLAT_LCP_COUNT}
111        PLATFORM_HOST_HAS_SCP
112        PLATFORM_HOST_HAS_MCP
113)
114
115#========================= Platform BL1_1 =====================================#
116
117target_sources(platform_bl1_1
118    PRIVATE
119        cmsis_drivers/Driver_Flash.c
120        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi/cfi_drv.c
121        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.c
122        cmsis_drivers/Driver_USART.c
123        device/host_device_definition.c
124        device/rse_expansion_device_definition.c
125        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011/uart_pl011_drv.c
126        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_v2_x.c>
127        $<$<EQUAL:${PLAT_MHU_VERSION},0>:${CMAKE_CURRENT_SOURCE_DIR}/../common/native_drivers/mhu_wrapper_v2_x.c>
128        $<$<BOOL:${RSE_ENABLE_BRINGUP_HELPERS}>:${CMAKE_CURRENT_SOURCE_DIR}/bl1/rse_bringup_helpers_hal.c>
129)
130
131target_include_directories(platform_bl1_1_interface
132    INTERFACE
133        cmsis_drivers
134        device
135        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
136        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi
137        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata
138        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011
139)
140
141#========================= Platform BL1_2 =====================================#
142
143target_include_directories(platform_bl1_2
144    PUBLIC
145        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
146        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi
147        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata
148        ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011
149        cmsis_drivers
150        device
151)
152
153#==================== Files for building NS side platform =====================#
154
155install(FILES       ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011/uart_pl011_drv.c
156                    ${PLATFORM_DIR}/ext/target/arm/drivers/usart/pl011/uart_pl011_drv.h
157                    ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.c
158                    ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.h
159                    ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi/cfi_drv.c
160                    ${PLATFORM_DIR}/ext/target/arm/drivers/flash/cfi/cfi_drv.h
161        DESTINATION ${INSTALL_PLATFORM_NS_DIR}/native_drivers
162)
163
164install(DIRECTORY   cmsis_drivers
165        DESTINATION ${INSTALL_PLATFORM_NS_DIR}
166)
167
168install(DIRECTORY   device
169        DESTINATION ${INSTALL_PLATFORM_NS_DIR}
170)
171
172install(DIRECTORY   ns/
173        DESTINATION ${INSTALL_PLATFORM_NS_DIR})
174
175install(FILES       cpuarch.cmake
176                    config.cmake
177        DESTINATION ${INSTALL_PLATFORM_NS_DIR}/config/subplatform/)
178
179install(FILES       tests/tfm_tests_ns_config.cmake
180        DESTINATION ${INSTALL_PLATFORM_NS_DIR}/tests
181        RENAME      tfm_tests_config.cmake)
182