1#
2# Arm SCP/MCP Software
3# Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.
4#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8#
9# Create the firmware target.
10#
11
12add_executable(rcar-bl2)
13
14target_include_directories(
15    rcar-bl2
16    PUBLIC
17        "${CMAKE_CURRENT_SOURCE_DIR}/../src/CMSIS-FreeRTOS/Source/include"
18        "${CMAKE_CURRENT_SOURCE_DIR}/../src/CMSIS-FreeRTOS/Source/portable/GCC/ARM_CA53_64_Rcar"
19        "${CMAKE_CURRENT_SOURCE_DIR}/../include"
20        "${CMAKE_CURRENT_SOURCE_DIR}")
21
22# cmake-lint: disable=E1122
23
24set(freertos_source "${CMAKE_CURRENT_SOURCE_DIR}/../src/CMSIS-FreeRTOS/Source")
25set(freertos2_source
26    "${CMAKE_CURRENT_SOURCE_DIR}/../src/CMSIS-FreeRTOS/CMSIS/RTOS2/FreeRTOS/Source")
27
28target_sources(
29    rcar-bl2
30    PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_scif.c"
31            "${CMAKE_CURRENT_SOURCE_DIR}/config_power_domain.c"
32            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_pd_sysc.c"
33            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_pd_core.c"
34            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_pd_pmic_bd9571.c"
35            "${CMAKE_CURRENT_SOURCE_DIR}/config_sensor.c"
36            "${CMAKE_CURRENT_SOURCE_DIR}/config_clock.c"
37            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_clock.c"
38            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_sd_clock.c"
39            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_mstp_clock.c"
40            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_ext_clock.c"
41            "${CMAKE_CURRENT_SOURCE_DIR}/config_dvfs.c"
42            "${CMAKE_CURRENT_SOURCE_DIR}/config_psu.c"
43            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_pmic.c"
44            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_mock_pmic_bd9571.c"
45            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_mfismh.c"
46            "${CMAKE_CURRENT_SOURCE_DIR}/config_timer.c"
47            "${CMAKE_CURRENT_SOURCE_DIR}/config_transport.c"
48            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi.c"
49            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_perf.c"
50            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_system_power.c"
51            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_clock.c"
52            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_apcore.c"
53            "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_power_domain.c"
54            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_system_power.c"
55            "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_system.c"
56            "${CMAKE_CURRENT_SOURCE_DIR}/config_sds.c"
57            "${CMAKE_CURRENT_SOURCE_DIR}/../src/rcar_core.c"
58            "${freertos_source}/timers.c"
59            "${freertos_source}/list.c"
60            "${freertos_source}/queue.c"
61            "${freertos_source}/tasks.c"
62            "${freertos_source}/portable/MemMang/heap_1.c"
63            "${freertos_source}/portable/GCC/ARM_CA53_64_Rcar/portASM.S"
64            "${freertos_source}/portable/GCC/ARM_CA53_64_Rcar/port.c"
65            "${freertos2_source}/cmsis_os2_tiny4scp.c")
66
67if(SCP_ENABLE_RESOURCE_PERMISSIONS)
68    target_sources(rcar-bl2
69        PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/config_resource_perms.c")
70endif()
71
72if(SCP_ENABLE_SCMI_RESET)
73    target_sources(rcar-bl2
74        PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/config_rcar_reset.c"
75                "${CMAKE_CURRENT_SOURCE_DIR}/config_reset_domain.c"
76                "${CMAKE_CURRENT_SOURCE_DIR}/config_scmi_reset_domain.c")
77endif()
78
79#
80# We explicitly add the CMSIS include directories to our interfaceinclude
81# directories. Each module target adds these include directories totheir own,
82# allowing them to include any firmware includes we expose.
83#
84
85target_include_directories(rcar-bl2
86    PUBLIC $<TARGET_PROPERTY:cmsis::rtos2,INTERFACE_INCLUDE_DIRECTORIES>)
87
88target_include_directories(rcar-bl2
89    PUBLIC $<TARGET_PROPERTY:cmsis::core-m,INTERFACE_INCLUDE_DIRECTORIES>)
90
91if(SCP_ENABLE_SCMI_RESET)
92    list(APPEND SCP_MODULES "reset-domain")
93    list(APPEND SCP_MODULES "rcar-reset")
94    list(APPEND SCP_MODULES "scmi-reset-domain")
95endif()
96
97if(SCP_ENABLE_RESOURCE_PERMISSIONS)
98    list(APPEND SCP_MODULES "resource-perms")
99endif()
100
101set(SCP_MODULES ${SCP_MODULES} PARENT_SCOPE)
102set(SCP_MODULE_PATHS ${SCP_MODULE_PATHS} PARENT_SCOPE)
103