xref: /rk3399_ARM-atf/plat/hisilicon/poplar/include/platform_def.h (revision e35d0edbbf5f55f2da5fa54ab5518149c18de622)
1*e35d0edbSJorge Ramirez-Ortiz /*
2*e35d0edbSJorge Ramirez-Ortiz  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*e35d0edbSJorge Ramirez-Ortiz  *
4*e35d0edbSJorge Ramirez-Ortiz  * SPDX-License-Identifier: BSD-3-Clause
5*e35d0edbSJorge Ramirez-Ortiz  */
6*e35d0edbSJorge Ramirez-Ortiz 
7*e35d0edbSJorge Ramirez-Ortiz #ifndef __PLATFORM_DEF_H__
8*e35d0edbSJorge Ramirez-Ortiz #define __PLATFORM_DEF_H__
9*e35d0edbSJorge Ramirez-Ortiz 
10*e35d0edbSJorge Ramirez-Ortiz #include <arch.h>
11*e35d0edbSJorge Ramirez-Ortiz #include <common_def.h>
12*e35d0edbSJorge Ramirez-Ortiz #include <tbbr/tbbr_img_def.h>
13*e35d0edbSJorge Ramirez-Ortiz #include "hi3798cv200.h"
14*e35d0edbSJorge Ramirez-Ortiz #include "poplar_layout.h"		/* BL memory region sizes, etc */
15*e35d0edbSJorge Ramirez-Ortiz 
16*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
17*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_LINKER_ARCH		aarch64
18*e35d0edbSJorge Ramirez-Ortiz 
19*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_CRASH_UART_BASE	PL011_UART0_BASE
20*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_CRASH_UART_CLK_IN_HZ	PL011_UART0_CLK_IN_HZ
21*e35d0edbSJorge Ramirez-Ortiz #define ARM_CONSOLE_BAUDRATE		PL011_BAUDRATE
22*e35d0edbSJorge Ramirez-Ortiz 
23*e35d0edbSJorge Ramirez-Ortiz /* Generic platform constants */
24*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_STACK_SIZE		(0x800)
25*e35d0edbSJorge Ramirez-Ortiz 
26*e35d0edbSJorge Ramirez-Ortiz #define FIRMWARE_WELCOME_STR		"Booting Trusted Firmware\n"
27*e35d0edbSJorge Ramirez-Ortiz #define BOOT_EMMC_NAME			"l-loader.bin"
28*e35d0edbSJorge Ramirez-Ortiz 
29*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_CACHE_LINE_SIZE	(64)
30*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_CLUSTER_COUNT		(1)
31*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_CORE_COUNT		(4)
32*e35d0edbSJorge Ramirez-Ortiz #define PLATFORM_MAX_CPUS_PER_CLUSTER	(4)
33*e35d0edbSJorge Ramirez-Ortiz 
34*e35d0edbSJorge Ramirez-Ortiz /* IO framework user */
35*e35d0edbSJorge Ramirez-Ortiz #define MAX_IO_DEVICES			(4)
36*e35d0edbSJorge Ramirez-Ortiz #define MAX_IO_HANDLES			(4)
37*e35d0edbSJorge Ramirez-Ortiz #define MAX_IO_BLOCK_DEVICES		(2)
38*e35d0edbSJorge Ramirez-Ortiz 
39*e35d0edbSJorge Ramirez-Ortiz /* Memory map related constants */
40*e35d0edbSJorge Ramirez-Ortiz #define DDR_BASE			(0x00000000)
41*e35d0edbSJorge Ramirez-Ortiz #define DDR_SIZE			(0x40000000)
42*e35d0edbSJorge Ramirez-Ortiz 
43*e35d0edbSJorge Ramirez-Ortiz #define DEVICE_BASE			(0xF0000000)
44*e35d0edbSJorge Ramirez-Ortiz #define DEVICE_SIZE			(0x0F000000)
45*e35d0edbSJorge Ramirez-Ortiz 
46*e35d0edbSJorge Ramirez-Ortiz #define TEE_SEC_MEM_BASE		(0x70000000)
47*e35d0edbSJorge Ramirez-Ortiz #define TEE_SEC_MEM_SIZE		(0x10000000)
48*e35d0edbSJorge Ramirez-Ortiz 
49*e35d0edbSJorge Ramirez-Ortiz #define BL_MEM_BASE			(BL1_RO_BASE)
50*e35d0edbSJorge Ramirez-Ortiz #define BL_MEM_LIMIT			(BL31_LIMIT)
51*e35d0edbSJorge Ramirez-Ortiz #define BL_MEM_SIZE			(BL_MEM_LIMIT - BL_MEM_BASE)
52*e35d0edbSJorge Ramirez-Ortiz 
53*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_NS_IMAGE_OFFSET	0x37000000
54*e35d0edbSJorge Ramirez-Ortiz 
55*e35d0edbSJorge Ramirez-Ortiz /* Page table and MMU setup constants */
56*e35d0edbSJorge Ramirez-Ortiz #define ADDR_SPACE_SIZE			(1ull << 32)
57*e35d0edbSJorge Ramirez-Ortiz #define MAX_XLAT_TABLES			(4)
58*e35d0edbSJorge Ramirez-Ortiz #define MAX_MMAP_REGIONS		(16)
59*e35d0edbSJorge Ramirez-Ortiz 
60*e35d0edbSJorge Ramirez-Ortiz #define CACHE_WRITEBACK_SHIFT		(6)
61*e35d0edbSJorge Ramirez-Ortiz #define CACHE_WRITEBACK_GRANULE		(1 << CACHE_WRITEBACK_SHIFT)
62*e35d0edbSJorge Ramirez-Ortiz 
63*e35d0edbSJorge Ramirez-Ortiz /* Power states */
64*e35d0edbSJorge Ramirez-Ortiz #define PLAT_MAX_PWR_LVL		(MPIDR_AFFLVL1)
65*e35d0edbSJorge Ramirez-Ortiz #define PLAT_MAX_OFF_STATE		2
66*e35d0edbSJorge Ramirez-Ortiz #define PLAT_MAX_RET_STATE		1
67*e35d0edbSJorge Ramirez-Ortiz 
68*e35d0edbSJorge Ramirez-Ortiz /* Interrupt controller */
69*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_GICD_BASE	GICD_BASE
70*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_GICC_BASE	GICC_BASE
71*e35d0edbSJorge Ramirez-Ortiz 
72*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_G1S_IRQS	HISI_IRQ_SEC_SGI_0,  \
73*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_1,  \
74*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_2,  \
75*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_3,  \
76*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_4,  \
77*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_5,  \
78*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_6,  \
79*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_SGI_7,  \
80*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_TIMER0, \
81*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_TIMER1, \
82*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_TIMER2, \
83*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_TIMER3, \
84*e35d0edbSJorge Ramirez-Ortiz 				HISI_IRQ_SEC_AXI
85*e35d0edbSJorge Ramirez-Ortiz 
86*e35d0edbSJorge Ramirez-Ortiz #define PLAT_ARM_G0_IRQS
87*e35d0edbSJorge Ramirez-Ortiz 
88*e35d0edbSJorge Ramirez-Ortiz #endif /* __PLATFORM_DEF_H__ */
89