xref: /arm-trusted-firmware/plat/hisilicon/poplar/include/hi3798cv200.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef HI3798CV200_H
8*91f16700Schasinglulu #define HI3798CV200_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <lib/utils_def.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu /* PL011 */
13*91f16700Schasinglulu #define PL011_UART0_BASE		(0xF8B00000)
14*91f16700Schasinglulu #define PL011_BAUDRATE			(115200)
15*91f16700Schasinglulu #define PL011_UART0_CLK_IN_HZ		(75000000)
16*91f16700Schasinglulu 
17*91f16700Schasinglulu /* Sys Counter */
18*91f16700Schasinglulu #define SYS_COUNTER_FREQ_IN_TICKS	(24000000)
19*91f16700Schasinglulu #define SYS_COUNTER_FREQ_IN_MHZ		(24)
20*91f16700Schasinglulu 
21*91f16700Schasinglulu /* Timer */
22*91f16700Schasinglulu #define SEC_TIMER0_BASE			(0xF8008000)
23*91f16700Schasinglulu #define TIMER00_LOAD			(SEC_TIMER0_BASE + 0x000)
24*91f16700Schasinglulu #define TIMER00_VALUE			(SEC_TIMER0_BASE + 0x004)
25*91f16700Schasinglulu #define TIMER00_CONTROL			(SEC_TIMER0_BASE + 0x008)
26*91f16700Schasinglulu #define TIMER00_BGLOAD			(SEC_TIMER0_BASE + 0x018)
27*91f16700Schasinglulu 
28*91f16700Schasinglulu #define SEC_TIMER2_BASE			(0xF8009000)
29*91f16700Schasinglulu #define TIMER20_LOAD			(SEC_TIMER2_BASE + 0x000)
30*91f16700Schasinglulu #define TIMER20_VALUE			(SEC_TIMER2_BASE + 0x004)
31*91f16700Schasinglulu #define TIMER20_CONTROL			(SEC_TIMER2_BASE + 0x008)
32*91f16700Schasinglulu #define TIMER20_BGLOAD			(SEC_TIMER2_BASE + 0x018)
33*91f16700Schasinglulu 
34*91f16700Schasinglulu /* GPIO */
35*91f16700Schasinglulu #define	GPIO_MAX			(13)
36*91f16700Schasinglulu #define	GPIO_BASE(x)			(x != 5 ?			\
37*91f16700Schasinglulu 					0xf820000 + x * 0x1000 : 0xf8004000)
38*91f16700Schasinglulu 
39*91f16700Schasinglulu /* SCTL */
40*91f16700Schasinglulu #define REG_BASE_SCTL			(0xF8000000)
41*91f16700Schasinglulu #define REG_SC_GEN12			(0x00B0)
42*91f16700Schasinglulu 
43*91f16700Schasinglulu /* CRG */
44*91f16700Schasinglulu #define REG_BASE_CRG			(0xF8A22000)
45*91f16700Schasinglulu #define REG_CPU_LP			(0x48)
46*91f16700Schasinglulu #define REG_CPU_RST			(0x50)
47*91f16700Schasinglulu #define REG_PERI_CRG39			(0x9C)
48*91f16700Schasinglulu #define REG_PERI_CRG40			(0xA0)
49*91f16700Schasinglulu 
50*91f16700Schasinglulu /* MCI */
51*91f16700Schasinglulu #define REG_BASE_MCI			(0xF9830000)
52*91f16700Schasinglulu #define MCI_CDETECT			(0x50)
53*91f16700Schasinglulu #define MCI_VERID			(0x6C)
54*91f16700Schasinglulu #define MCI_VERID_VALUE			(0x5342250A)
55*91f16700Schasinglulu #define MCI_VERID_VALUE2		(0x5342270A)
56*91f16700Schasinglulu 
57*91f16700Schasinglulu /* EMMC */
58*91f16700Schasinglulu #define REG_EMMC_PERI_CRG		REG_PERI_CRG40
59*91f16700Schasinglulu #define REG_SDCARD_PERI_CRG		REG_PERI_CRG39
60*91f16700Schasinglulu #define EMMC_CLK_MASK			(0x7 << 8)
61*91f16700Schasinglulu #define EMMC_SRST_REQ			(0x1 << 4)
62*91f16700Schasinglulu #define EMMC_CKEN			(0x1 << 1)
63*91f16700Schasinglulu #define EMMC_BUS_CKEN			(0x1 << 0)
64*91f16700Schasinglulu #define EMMC_CLK_100M			(0 << 8)
65*91f16700Schasinglulu #define EMMC_CLK_50M			(1 << 8)
66*91f16700Schasinglulu #define EMMC_CLK_25M			(2 << 8)
67*91f16700Schasinglulu 
68*91f16700Schasinglulu #define EMMC_DESC_SIZE			U(0x00100000) /* 1MB */
69*91f16700Schasinglulu #define EMMC_INIT_PARAMS(base)				\
70*91f16700Schasinglulu 	{	.bus_width = MMC_BUS_WIDTH_8,		\
71*91f16700Schasinglulu 		.clk_rate = 25 * 1000 * 1000,		\
72*91f16700Schasinglulu 		.desc_base = (base),	\
73*91f16700Schasinglulu 		.desc_size = EMMC_DESC_SIZE,		\
74*91f16700Schasinglulu 		.flags =  MMC_FLAG_CMD23,		\
75*91f16700Schasinglulu 		.reg_base = REG_BASE_MCI,		\
76*91f16700Schasinglulu 	}
77*91f16700Schasinglulu 
78*91f16700Schasinglulu /* GIC-400 */
79*91f16700Schasinglulu #define GICD_BASE			(0xF1001000)
80*91f16700Schasinglulu #define GICC_BASE			(0xF1002000)
81*91f16700Schasinglulu #define GICR_BASE			(0xF1000000)
82*91f16700Schasinglulu 
83*91f16700Schasinglulu /* FIQ platform related define */
84*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_0		8
85*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_1		9
86*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_2		10
87*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_3		11
88*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_4		12
89*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_5		13
90*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_6		14
91*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_7		15
92*91f16700Schasinglulu #define HISI_IRQ_SEC_PPI_0		29
93*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER0		60
94*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER1		50
95*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER2		52
96*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER3		88
97*91f16700Schasinglulu #define HISI_IRQ_SEC_AXI		110
98*91f16700Schasinglulu 
99*91f16700Schasinglulu /* Watchdog */
100*91f16700Schasinglulu #define HISI_WDG0_BASE			(0xF8A2C000)
101*91f16700Schasinglulu 
102*91f16700Schasinglulu #define HISI_TZPC_BASE			(0xF8A80000)
103*91f16700Schasinglulu #define HISI_TZPC_SEC_ATTR_CTRL		(HISI_TZPC_BASE + 0x10)
104*91f16700Schasinglulu 
105*91f16700Schasinglulu #endif /* HI3798CV200_H */
106