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