4379be73c64f0bb4a9c681cd13018a121ea08425
[3rdparty/ote_partner/tlk.git] / platform / tegra / rules.mk
1 LOCAL_DIR := $(GET_LOCAL_DIR)
2
3 MODULE := $(LOCAL_DIR)
4
5 ENABLE_THUMB := false
6
7 ARCH := arm
8 CPU := generic
9
10 INCLUDES += \
11         -I$(LOCAL_DIR)/include \
12         -I$(LOCAL_DIR)/include/platform/$(PLATFORM_SOC) \
13         -I$(LOCAL_DIR)/common \
14         -Ilib \
15         -I../lib \
16         -Isecure_monitor/platform/tegra/include
17
18 COMMON_DIR := $(LOCAL_DIR)/common
19 PLATFORM_SOC_DIR := $(LOCAL_DIR)/$(PLATFORM_SOC)
20
21 MODULE_SRCS += \
22         $(COMMON_DIR)/cpu_early_init.S  \
23         $(COMMON_DIR)/fuse.c            \
24         $(COMMON_DIR)/tz.c              \
25         $(COMMON_DIR)/cpu.c             \
26         $(COMMON_DIR)/platform.c        \
27         $(COMMON_DIR)/timer.c           \
28         $(COMMON_DIR)/interrupts.c      \
29         $(COMMON_DIR)/memory.c          \
30         $(COMMON_DIR)/debug.c           \
31
32 MODULE_DEPS += \
33         lib/libfdt \
34         lib/version
35
36
37 # The code within the monitor dir builds to a lib that's either
38 # linked into a mon.bin (when MONITOR_BIN is true) or into the
39 # secureos when it's not.
40 #
41 # Routines in the monitor dir are those that restore HW state.
42 # In particular, SOC level state is restored there, while CPU
43 # state was handled by lib/monitor or boot_secondary.S,
44 #
45 # In platform/tegra/common, there are still memory and interrupt
46 # routines, but they're only called for secureos handling
47 # (i.e. aren't part of the monitor or for restoring HW state).
48
49 # Add power management into the secureos build if
50 # there's not a separate monitor being built.
51 ifeq ($(MONITOR_BIN),)
52 MODULE_SRCS += \
53         $(COMMON_DIR)/pm.c      \
54         $(COMMON_DIR)/boot_secondary.S
55 endif
56
57 include $(PLATFORM_SOC_DIR)/rules.mk
58
59 # Disable all prints for release builds, only CRITICAL prints will be
60 # printed in release builds. Change the value of DEBUG in else block
61 # to 1->INFO and 2->SPEW prints in debug builds.
62 ifeq ($(TARGET_BUILD_TYPE), release)
63         DEBUG := 0
64 else
65         DEBUG := 1
66 endif
67
68 # Enable storage rollback protection for desired devices.
69 ifeq ($(filter t210,$(TARGET)), $(TARGET))
70         WITH_ROLLBACK_PROTECTION := 1
71 else
72         WITH_ROLLBACK_PROTECTION := 0
73 endif
74
75 # relocate image to provided physaddr via MMU
76 ARM_USE_MMU_RELOC := true
77
78 # enable use of CPU caching
79 ARM_USE_CPU_CACHING := true
80
81 DEFINES += VMEMBASE=$(VMEMBASE) \
82         VMEMSIZE=$(VMEMSIZE) \
83         DEBUG=$(DEBUG) \
84         WITH_CPU_EARLY_INIT=1 \
85         WITH_ROLLBACK_PROTECTION=$(WITH_ROLLBACK_PROTECTION)
86
87 # use a two segment memory layout, where all of the read-only sections
88 # of the binary reside in rom, and the read/write are in memory. The
89 # ROMBASE, VMEMBASE, and VMEMSIZE make variables are required to be set
90 # for the linker script to be generated properly.
91 #
92 LINKER_SCRIPT += \
93         $(BUILDDIR)/system-onesegment.ld
94
95 include make/module.mk