xref: /arm-trusted-firmware/plat/rockchip/rk3328/drivers/soc/soc.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 SOC_H
8*91f16700Schasinglulu #define SOC_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu /******************************* stimer ***************************************/
11*91f16700Schasinglulu #define TIMER_LOADE_COUNT0	0x00
12*91f16700Schasinglulu #define TIMER_LOADE_COUNT1	0x04
13*91f16700Schasinglulu #define TIMER_CURRENT_VALUE0	0x08
14*91f16700Schasinglulu #define TIMER_CURRENT_VALUE1	0x0C
15*91f16700Schasinglulu #define TIMER_CONTROL_REG	0x10
16*91f16700Schasinglulu #define TIMER_INTSTATUS		0x18
17*91f16700Schasinglulu #define TIMER_EN		0x1
18*91f16700Schasinglulu 
19*91f16700Schasinglulu /**************************** read/write **************************************/
20*91f16700Schasinglulu #ifndef BITS_WMSK
21*91f16700Schasinglulu #define BITS_WMSK(msk, shift)	((msk) << (shift + REG_MSK_SHIFT))
22*91f16700Schasinglulu #endif
23*91f16700Schasinglulu 
24*91f16700Schasinglulu /**************************** cru *********************************************/
25*91f16700Schasinglulu enum plls_id {
26*91f16700Schasinglulu 	APLL_ID = 0,
27*91f16700Schasinglulu 	DPLL_ID,
28*91f16700Schasinglulu 	CPLL_ID,
29*91f16700Schasinglulu 	GPLL_ID,
30*91f16700Schasinglulu 	RESERVE,
31*91f16700Schasinglulu 	NPLL_ID,
32*91f16700Schasinglulu 	MAX_PLL,
33*91f16700Schasinglulu };
34*91f16700Schasinglulu 
35*91f16700Schasinglulu #define CRU_CRU_MODE		0x0080
36*91f16700Schasinglulu #define CRU_CRU_MISC		0x0084
37*91f16700Schasinglulu #define CRU_GLB_SRST_FST	0x009c
38*91f16700Schasinglulu #define CRU_GLB_SRST_FST_VALUE	0xfdb9
39*91f16700Schasinglulu #define PLL_CONS(id, i)		(0x020 * (id) + ((i) * 4))
40*91f16700Schasinglulu #define CRU_CLKSEL_CON(i)	(0x100 + ((i) * 4))
41*91f16700Schasinglulu #define CRU_CLKSEL_NUMS		53
42*91f16700Schasinglulu #define CRU_CLKGATE_CON(i)	(0x200 + ((i) * 4))
43*91f16700Schasinglulu #define CRU_CLKGATE_NUMS	29
44*91f16700Schasinglulu #define CRU_SOFTRSTS_CON(n)	(0x300 + ((n) * 4))
45*91f16700Schasinglulu #define CRU_SOFTRSTS_NUMS	12
46*91f16700Schasinglulu #define CRU_PLL_CON_NUMS	5
47*91f16700Schasinglulu 
48*91f16700Schasinglulu /* PLLn_CON1 */
49*91f16700Schasinglulu #define PLL_IS_LOCKED		BIT(10)
50*91f16700Schasinglulu /* PLLn_CON0 */
51*91f16700Schasinglulu #define PLL_BYPASS		BITS_WITH_WMASK(1, 0x1, 15)
52*91f16700Schasinglulu #define PLL_NO_BYPASS		BITS_WITH_WMASK(0, 0x1, 15)
53*91f16700Schasinglulu /* CRU_MODE */
54*91f16700Schasinglulu #define PLL_SLOW_MODE(id)	((id) == NPLL_ID) ?		\
55*91f16700Schasinglulu 				BITS_WITH_WMASK(0, 0x1, 1) :	\
56*91f16700Schasinglulu 				BITS_WITH_WMASK(0, 0x1, ((id) * 4))
57*91f16700Schasinglulu #define PLL_NORM_MODE(id)	((id) == NPLL_ID) ?		\
58*91f16700Schasinglulu 				BITS_WITH_WMASK(1, 0x1, 1) :	\
59*91f16700Schasinglulu 				BITS_WITH_WMASK(1, 0x1, ((id) * 4))
60*91f16700Schasinglulu 
61*91f16700Schasinglulu #define CRU_GATEID_CONS(ID)	(0x200 + (ID / 16) * 4)
62*91f16700Schasinglulu #define CRU_CONS_GATEID(i)	(16 * (i))
63*91f16700Schasinglulu #define GATE_ID(reg, bit)	((reg * 16) + bit)
64*91f16700Schasinglulu 
65*91f16700Schasinglulu #define PLL_LOCKED_TIMEOUT 600000U
66*91f16700Schasinglulu 
67*91f16700Schasinglulu #define STIMER_CHN_BASE(n)	(STIME_BASE + 0x20 * (n))
68*91f16700Schasinglulu /************************** config regs ***************************************/
69*91f16700Schasinglulu #define FIREWALL_CFG_FW_SYS_CON(n)	(0x000 + (n) * 4)
70*91f16700Schasinglulu #define FIREWALL_DDR_FW_DDR_RGN(n)	(0x000 + (n) * 4)
71*91f16700Schasinglulu #define FIREWALL_DDR_FW_DDR_MST(n)	(0x020 + (n) * 4)
72*91f16700Schasinglulu #define FIREWALL_DDR_FW_DDR_CON_REG	(0x040)
73*91f16700Schasinglulu #define GRF_SOC_CON(n)			(0x400 + (n) * 4)
74*91f16700Schasinglulu #define GRF_SOC_STATUS(n)		(0x480 + (n) * 4)
75*91f16700Schasinglulu #define GRF_CPU_STATUS(n)		(0x520 + (n) * 4)
76*91f16700Schasinglulu #define GRF_OS_REG(n)			(0x5c8 + (n) * 4)
77*91f16700Schasinglulu #define DDRGRF_SOC_CON(n)		(0x000 + (n) * 4)
78*91f16700Schasinglulu #define DDRGRF_SOC_STATUS(n)		(0x100 + (n) * 4)
79*91f16700Schasinglulu #define SGRF_SOC_CON(n)			(0x000 + (n) * 4)
80*91f16700Schasinglulu #define SGRF_DMAC_CON(n)		(0x100 + (n) * 4)
81*91f16700Schasinglulu #define SGRF_HDCP_KEY_CON(n)		(0x280 + (n) * 4)
82*91f16700Schasinglulu 
83*91f16700Schasinglulu #define DDR_PCTL2_PWRCTL		0x30
84*91f16700Schasinglulu /************************** regs func *****************************************/
85*91f16700Schasinglulu #define STIMER_S			BIT(23)
86*91f16700Schasinglulu #define SGRF_SLV_S_ALL_NS		0x0
87*91f16700Schasinglulu #define SGRF_MST_S_ALL_NS		0xffffffff
88*91f16700Schasinglulu #define DMA_IRQ_BOOT_NS			0xffffffff
89*91f16700Schasinglulu #define DMA_MANAGER_BOOT_NS		0x80008000
90*91f16700Schasinglulu #define DMA_PERI_CH_NS_15_0		0xffffffff
91*91f16700Schasinglulu #define DMA_PERI_CH_NS_19_16		0x000f000f
92*91f16700Schasinglulu #define DMA_SOFTRST_REQ			0x01000100
93*91f16700Schasinglulu #define DMA_SOFTRST_RLS			0x01000000
94*91f16700Schasinglulu 
95*91f16700Schasinglulu #define SELFREF_EN			BIT(0)
96*91f16700Schasinglulu /************************** cpu ***********************************************/
97*91f16700Schasinglulu #define CPU_BOOT_ADDR_WMASK		0xffff0000
98*91f16700Schasinglulu #define CPU_BOOT_ADDR_ALIGN		16
99*91f16700Schasinglulu 
100*91f16700Schasinglulu /************************** ddr secure region *********************************/
101*91f16700Schasinglulu #define PLAT_MAX_DDR_CAPACITY_MB	4096
102*91f16700Schasinglulu #define RG_MAP_SECURE(top, base)	((((top) - 1) << 16) | (base))
103*91f16700Schasinglulu 
104*91f16700Schasinglulu /************************** gpio2_d2 ******************************************/
105*91f16700Schasinglulu #define SWPORTA_DR		0x00
106*91f16700Schasinglulu #define SWPORTA_DDR		0x04
107*91f16700Schasinglulu #define GPIO2_D2		BIT(26)
108*91f16700Schasinglulu #define GPIO2_D2_GPIO_MODE	0x30
109*91f16700Schasinglulu #define GRF_GPIO2D_IOMUX	0x34
110*91f16700Schasinglulu 
111*91f16700Schasinglulu #endif /* SOC_H */
112