platform_def.h 3.73 KB
Newer Older
Tony Xie's avatar
Tony Xie committed
1
/*
2
 * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
Tony Xie's avatar
Tony Xie committed
3
 *
dp-arm's avatar
dp-arm committed
4
 * SPDX-License-Identifier: BSD-3-Clause
Tony Xie's avatar
Tony Xie committed
5
6
 */

7
8
#ifndef PLATFORM_DEF_H
#define PLATFORM_DEF_H
Tony Xie's avatar
Tony Xie committed
9
10

#include <arch.h>
11
#include <bl31_param.h>
Tony Xie's avatar
Tony Xie committed
12
13
#include <common_def.h>
#include <rk3399_def.h>
14
#include <utils_def.h>
Tony Xie's avatar
Tony Xie committed
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

#define DEBUG_XLAT_TABLE 0

/*******************************************************************************
 * Platform binary types for linking
 ******************************************************************************/
#define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
#define PLATFORM_LINKER_ARCH		aarch64

/*******************************************************************************
 * Generic platform constants
 ******************************************************************************/

/* Size of cacheable stacks */
#if DEBUG_XLAT_TABLE
#define PLATFORM_STACK_SIZE 0x800
31
#elif defined(IMAGE_BL1)
Tony Xie's avatar
Tony Xie committed
32
#define PLATFORM_STACK_SIZE 0x440
33
#elif defined(IMAGE_BL2)
Tony Xie's avatar
Tony Xie committed
34
#define PLATFORM_STACK_SIZE 0x400
35
#elif defined(IMAGE_BL31)
Tony Xie's avatar
Tony Xie committed
36
#define PLATFORM_STACK_SIZE 0x800
37
#elif defined(IMAGE_BL32)
Tony Xie's avatar
Tony Xie committed
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#define PLATFORM_STACK_SIZE 0x440
#endif

#define FIRMWARE_WELCOME_STR		"Booting Trusted Firmware\n"

#define PLATFORM_MAX_AFFLVL		MPIDR_AFFLVL2
#define PLATFORM_SYSTEM_COUNT		1
#define PLATFORM_CLUSTER_COUNT		2
#define PLATFORM_CLUSTER0_CORE_COUNT	4
#define PLATFORM_CLUSTER1_CORE_COUNT	2
#define PLATFORM_CORE_COUNT		(PLATFORM_CLUSTER1_CORE_COUNT +	\
					 PLATFORM_CLUSTER0_CORE_COUNT)
#define PLATFORM_MAX_CPUS_PER_CLUSTER	4
#define PLATFORM_NUM_AFFS		(PLATFORM_SYSTEM_COUNT +	\
					 PLATFORM_CLUSTER_COUNT +	\
					 PLATFORM_CORE_COUNT)
54
#define PLAT_RK_CLST_TO_CPUID_SHIFT	6
Tony Xie's avatar
Tony Xie committed
55
56
57
58
59
60
#define PLAT_MAX_PWR_LVL		MPIDR_AFFLVL2

/*
 * This macro defines the deepest retention state possible. A higher state
 * id will represent an invalid or a power down state.
 */
61
#define PLAT_MAX_RET_STATE		U(1)
Tony Xie's avatar
Tony Xie committed
62
63
64
65
66

/*
 * This macro defines the deepest power down states possible. Any state ID
 * higher than this is invalid.
 */
67
#define PLAT_MAX_OFF_STATE		U(2)
Tony Xie's avatar
Tony Xie committed
68
69
70
71

/*******************************************************************************
 * Platform specific page table and MMU setup constants
 ******************************************************************************/
72
#define ADDR_SPACE_SIZE		(1ULL << 32)
Tony Xie's avatar
Tony Xie committed
73
#define MAX_XLAT_TABLES		20
74
#define MAX_MMAP_REGIONS	25
Tony Xie's avatar
Tony Xie committed
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

/*******************************************************************************
 * Declarations and constants to access the mailboxes safely. Each mailbox is
 * aligned on the biggest cache line size in the platform. This is known only
 * to the platform as it might have a combination of integrated and external
 * caches. Such alignment ensures that two maiboxes do not sit on the same cache
 * line at any cache level. They could belong to different cpus/clusters &
 * get written while being protected by different locks causing corruption of
 * a valid mailbox address.
 ******************************************************************************/
#define CACHE_WRITEBACK_SHIFT	6
#define CACHE_WRITEBACK_GRANULE	(1 << CACHE_WRITEBACK_SHIFT)

/*
 * Define GICD and GICC and GICR base
 */
#define PLAT_RK_GICD_BASE	BASE_GICD_BASE
#define PLAT_RK_GICR_BASE	BASE_GICR_BASE
#define PLAT_RK_GICC_BASE	0

/*
 * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
 * terminology. On a GICv2 system or mode, the lists will be merged and treated
 * as Group 0 interrupts.
 */
#define PLAT_RK_G1S_IRQS		RK3399_G1S_IRQS
#define PLAT_RK_G0_IRQS			RK3399_G0_IRQS

103
#define PLAT_RK_UART_BASE		UART2_BASE
Tony Xie's avatar
Tony Xie committed
104
105
106
107
108
109
110
#define PLAT_RK_UART_CLOCK		RK3399_UART_CLOCK
#define PLAT_RK_UART_BAUDRATE		RK3399_BAUDRATE

#define PLAT_RK_CCI_BASE		CCI500_BASE

#define PLAT_RK_PRIMARY_CPU		0x0

Lin Huang's avatar
Lin Huang committed
111
#define PSRAM_DO_DDR_RESUME	1
112
113
#define PSRAM_CHECK_WAKEUP_CPU	0

114
#endif /* PLATFORM_DEF_H */