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