xref: /rk3399_ARM-atf/plat/qti/msm8916/include/platform_def.h (revision dddba19a6a3cb7a1039beaffc3169c4eb3291afd)
1*dddba19aSStephan Gerhold /*
2*dddba19aSStephan Gerhold  * Copyright (c) 2021, Stephan Gerhold <stephan@gerhold.net>
3*dddba19aSStephan Gerhold  *
4*dddba19aSStephan Gerhold  * SPDX-License-Identifier: BSD-3-Clause
5*dddba19aSStephan Gerhold  */
6*dddba19aSStephan Gerhold #ifndef PLATFORM_DEF_H
7*dddba19aSStephan Gerhold #define PLATFORM_DEF_H
8*dddba19aSStephan Gerhold 
9*dddba19aSStephan Gerhold #include <plat/common/common_def.h>
10*dddba19aSStephan Gerhold 
11*dddba19aSStephan Gerhold /*
12*dddba19aSStephan Gerhold  * There is at least 1 MiB available for BL31. However, at the moment the
13*dddba19aSStephan Gerhold  * "msm8916_entry_point" variable in the data section is read through the
14*dddba19aSStephan Gerhold  * 64 KiB region of the "boot remapper" after reset. For simplicity, limit
15*dddba19aSStephan Gerhold  * the end of the data section (BL31_PROGBITS_LIMIT) to 64 KiB for now and
16*dddba19aSStephan Gerhold  * the overall limit to 128 KiB. This could be increased if needed by placing
17*dddba19aSStephan Gerhold  * the "msm8916_entry_point" variable explicitly in the first 64 KiB of BL31.
18*dddba19aSStephan Gerhold  */
19*dddba19aSStephan Gerhold #define BL31_LIMIT			(BL31_BASE + 0x20000)	/* 128 KiB */
20*dddba19aSStephan Gerhold #define BL31_PROGBITS_LIMIT		(BL31_BASE + 0x10000)	/* 64 KiB */
21*dddba19aSStephan Gerhold 
22*dddba19aSStephan Gerhold #define CACHE_WRITEBACK_GRANULE		U(64)
23*dddba19aSStephan Gerhold #define PLATFORM_STACK_SIZE		U(0x1000)
24*dddba19aSStephan Gerhold 
25*dddba19aSStephan Gerhold /* CPU topology: single cluster with 4 cores */
26*dddba19aSStephan Gerhold #define PLATFORM_CLUSTER_COUNT		U(1)
27*dddba19aSStephan Gerhold #define PLATFORM_MAX_CPUS_PER_CLUSTER	U(4)
28*dddba19aSStephan Gerhold #define PLATFORM_CORE_COUNT		(PLATFORM_CLUSTER_COUNT * \
29*dddba19aSStephan Gerhold 					 PLATFORM_MAX_CPUS_PER_CLUSTER)
30*dddba19aSStephan Gerhold 
31*dddba19aSStephan Gerhold /* Power management */
32*dddba19aSStephan Gerhold #define PLATFORM_SYSTEM_COUNT		U(1)
33*dddba19aSStephan Gerhold #define PLAT_NUM_PWR_DOMAINS		(PLATFORM_SYSTEM_COUNT + \
34*dddba19aSStephan Gerhold 					 PLATFORM_CLUSTER_COUNT + \
35*dddba19aSStephan Gerhold 					 PLATFORM_CORE_COUNT)
36*dddba19aSStephan Gerhold #define PLAT_MAX_PWR_LVL		MPIDR_AFFLVL2
37*dddba19aSStephan Gerhold #define PLAT_MAX_RET_STATE		U(2)
38*dddba19aSStephan Gerhold #define PLAT_MAX_OFF_STATE		U(3)
39*dddba19aSStephan Gerhold 
40*dddba19aSStephan Gerhold /* Translation tables */
41*dddba19aSStephan Gerhold #define MAX_MMAP_REGIONS		8
42*dddba19aSStephan Gerhold #define MAX_XLAT_TABLES			4
43*dddba19aSStephan Gerhold 
44*dddba19aSStephan Gerhold #define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 32)
45*dddba19aSStephan Gerhold #define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 32)
46*dddba19aSStephan Gerhold 
47*dddba19aSStephan Gerhold /* Timer frequency */
48*dddba19aSStephan Gerhold #define PLAT_SYSCNT_FREQ		19200000
49*dddba19aSStephan Gerhold 
50*dddba19aSStephan Gerhold #endif /* PLATFORM_DEF_H */
51