xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-exynos/exynos4_setup.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Machine Specific Values for EXYNOS4012 based board
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2011 Samsung Electronics
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef _ORIGEN_SETUP_H
10*4882a593Smuzhiyun #define _ORIGEN_SETUP_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #include <config.h>
13*4882a593Smuzhiyun #include <asm/arch/cpu.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #ifdef CONFIG_CLK_800_330_165
16*4882a593Smuzhiyun #define DRAM_CLK_330
17*4882a593Smuzhiyun #endif
18*4882a593Smuzhiyun #ifdef CONFIG_CLK_1000_200_200
19*4882a593Smuzhiyun #define DRAM_CLK_200
20*4882a593Smuzhiyun #endif
21*4882a593Smuzhiyun #ifdef CONFIG_CLK_1000_330_165
22*4882a593Smuzhiyun #define DRAM_CLK_330
23*4882a593Smuzhiyun #endif
24*4882a593Smuzhiyun #ifdef CONFIG_CLK_1000_400_200
25*4882a593Smuzhiyun #define DRAM_CLK_400
26*4882a593Smuzhiyun #endif
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /* Bus Configuration Register Address */
29*4882a593Smuzhiyun #define ASYNC_CONFIG		0x10010350
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* CLK_SRC_CPU */
32*4882a593Smuzhiyun #define MUX_HPM_SEL_MOUTAPLL		0x0
33*4882a593Smuzhiyun #define MUX_HPM_SEL_SCLKMPLL		0x1
34*4882a593Smuzhiyun #define MUX_CORE_SEL_MOUTAPLL		0x0
35*4882a593Smuzhiyun #define MUX_CORE_SEL_SCLKMPLL		0x1
36*4882a593Smuzhiyun #define MUX_MPLL_SEL_FILPLL		0x0
37*4882a593Smuzhiyun #define MUX_MPLL_SEL_MOUTMPLLFOUT	0x1
38*4882a593Smuzhiyun #define MUX_APLL_SEL_FILPLL		0x0
39*4882a593Smuzhiyun #define MUX_APLL_SEL_MOUTMPLLFOUT	0x1
40*4882a593Smuzhiyun #define CLK_SRC_CPU_VAL			((MUX_HPM_SEL_MOUTAPLL << 20) \
41*4882a593Smuzhiyun 					| (MUX_CORE_SEL_MOUTAPLL << 16) \
42*4882a593Smuzhiyun 					| (MUX_MPLL_SEL_MOUTMPLLFOUT << 8)\
43*4882a593Smuzhiyun 					| (MUX_APLL_SEL_MOUTMPLLFOUT << 0))
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun /* CLK_DIV_CPU0 */
46*4882a593Smuzhiyun #define APLL_RATIO		0x0
47*4882a593Smuzhiyun #define PCLK_DBG_RATIO		0x1
48*4882a593Smuzhiyun #define ATB_RATIO		0x3
49*4882a593Smuzhiyun #define PERIPH_RATIO		0x3
50*4882a593Smuzhiyun #define COREM1_RATIO		0x7
51*4882a593Smuzhiyun #define COREM0_RATIO		0x3
52*4882a593Smuzhiyun #define CORE_RATIO		0x0
53*4882a593Smuzhiyun #define CLK_DIV_CPU0_VAL	((APLL_RATIO << 24) \
54*4882a593Smuzhiyun 				| (PCLK_DBG_RATIO << 20) \
55*4882a593Smuzhiyun 				| (ATB_RATIO << 16) \
56*4882a593Smuzhiyun 				| (PERIPH_RATIO << 12) \
57*4882a593Smuzhiyun 				| (COREM1_RATIO << 8) \
58*4882a593Smuzhiyun 				| (COREM0_RATIO << 4) \
59*4882a593Smuzhiyun 				| (CORE_RATIO << 0))
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /* CLK_DIV_CPU1 */
62*4882a593Smuzhiyun #define HPM_RATIO		0x0
63*4882a593Smuzhiyun #define COPY_RATIO		0x3
64*4882a593Smuzhiyun #define CLK_DIV_CPU1_VAL	((HPM_RATIO << 4) | (COPY_RATIO))
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /* CLK_SRC_DMC */
67*4882a593Smuzhiyun #define MUX_PWI_SEL_XXTI		0x0
68*4882a593Smuzhiyun #define MUX_PWI_SEL_XUSBXTI		0x1
69*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLK_HDMI24M	0x2
70*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLK_USBPHY0	0x3
71*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLK_USBPHY1	0x4
72*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLK_HDMIPHY	0x5
73*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLKMPLL		0x6
74*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLKEPLL		0x7
75*4882a593Smuzhiyun #define MUX_PWI_SEL_SCLKVPLL		0x8
76*4882a593Smuzhiyun #define MUX_DPHY_SEL_SCLKMPLL		0x0
77*4882a593Smuzhiyun #define MUX_DPHY_SEL_SCLKAPLL		0x1
78*4882a593Smuzhiyun #define MUX_DMC_BUS_SEL_SCLKMPLL	0x0
79*4882a593Smuzhiyun #define MUX_DMC_BUS_SEL_SCLKAPLL	0x1
80*4882a593Smuzhiyun #define CLK_SRC_DMC_VAL			((MUX_PWI_SEL_XUSBXTI << 16) \
81*4882a593Smuzhiyun 					| (MUX_DPHY_SEL_SCLKMPLL << 8) \
82*4882a593Smuzhiyun 					| (MUX_DMC_BUS_SEL_SCLKMPLL << 4))
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun /* CLK_DIV_DMC0 */
85*4882a593Smuzhiyun #define CORE_TIMERS_RATIO	0x1
86*4882a593Smuzhiyun #define COPY2_RATIO		0x3
87*4882a593Smuzhiyun #define DMCP_RATIO		0x1
88*4882a593Smuzhiyun #define DMCD_RATIO		0x1
89*4882a593Smuzhiyun #define DMC_RATIO		0x1
90*4882a593Smuzhiyun #define DPHY_RATIO		0x1
91*4882a593Smuzhiyun #define ACP_PCLK_RATIO		0x1
92*4882a593Smuzhiyun #define ACP_RATIO		0x3
93*4882a593Smuzhiyun #define CLK_DIV_DMC0_VAL	((CORE_TIMERS_RATIO << 28) \
94*4882a593Smuzhiyun 				| (COPY2_RATIO << 24) \
95*4882a593Smuzhiyun 				| (DMCP_RATIO << 20) \
96*4882a593Smuzhiyun 				| (DMCD_RATIO << 16) \
97*4882a593Smuzhiyun 				| (DMC_RATIO << 12) \
98*4882a593Smuzhiyun 				| (DPHY_RATIO << 8) \
99*4882a593Smuzhiyun 				| (ACP_PCLK_RATIO << 4)	\
100*4882a593Smuzhiyun 				| (ACP_RATIO << 0))
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun /* CLK_DIV_DMC1 */
103*4882a593Smuzhiyun #define DPM_RATIO		0x1
104*4882a593Smuzhiyun #define DVSEM_RATIO		0x1
105*4882a593Smuzhiyun #define PWI_RATIO		0x1
106*4882a593Smuzhiyun #define CLK_DIV_DMC1_VAL	((DPM_RATIO << 24) \
107*4882a593Smuzhiyun 				| (DVSEM_RATIO << 16) \
108*4882a593Smuzhiyun 				| (PWI_RATIO << 8))
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun /* CLK_SRC_TOP0 */
111*4882a593Smuzhiyun #define MUX_ONENAND_SEL_ACLK_133	0x0
112*4882a593Smuzhiyun #define MUX_ONENAND_SEL_ACLK_160	0x1
113*4882a593Smuzhiyun #define MUX_ACLK_133_SEL_SCLKMPLL	0x0
114*4882a593Smuzhiyun #define MUX_ACLK_133_SEL_SCLKAPLL	0x1
115*4882a593Smuzhiyun #define MUX_ACLK_160_SEL_SCLKMPLL	0x0
116*4882a593Smuzhiyun #define MUX_ACLK_160_SEL_SCLKAPLL	0x1
117*4882a593Smuzhiyun #define MUX_ACLK_100_SEL_SCLKMPLL	0x0
118*4882a593Smuzhiyun #define MUX_ACLK_100_SEL_SCLKAPLL	0x1
119*4882a593Smuzhiyun #define MUX_ACLK_200_SEL_SCLKMPLL	0x0
120*4882a593Smuzhiyun #define MUX_ACLK_200_SEL_SCLKAPLL	0x1
121*4882a593Smuzhiyun #define MUX_VPLL_SEL_FINPLL		0x0
122*4882a593Smuzhiyun #define MUX_VPLL_SEL_FOUTVPLL		0x1
123*4882a593Smuzhiyun #define MUX_EPLL_SEL_FINPLL		0x0
124*4882a593Smuzhiyun #define MUX_EPLL_SEL_FOUTEPLL		0x1
125*4882a593Smuzhiyun #define MUX_ONENAND_1_SEL_MOUTONENAND	0x0
126*4882a593Smuzhiyun #define MUX_ONENAND_1_SEL_SCLKVPLL	0x1
127*4882a593Smuzhiyun #define CLK_SRC_TOP0_VAL		((MUX_ONENAND_SEL_ACLK_133 << 28) \
128*4882a593Smuzhiyun 					| (MUX_ACLK_133_SEL_SCLKMPLL << 24) \
129*4882a593Smuzhiyun 					| (MUX_ACLK_160_SEL_SCLKMPLL << 20) \
130*4882a593Smuzhiyun 					| (MUX_ACLK_100_SEL_SCLKMPLL << 16) \
131*4882a593Smuzhiyun 					| (MUX_ACLK_200_SEL_SCLKMPLL << 12) \
132*4882a593Smuzhiyun 					| (MUX_VPLL_SEL_FINPLL << 8) \
133*4882a593Smuzhiyun 					| (MUX_EPLL_SEL_FINPLL << 4)\
134*4882a593Smuzhiyun 					| (MUX_ONENAND_1_SEL_MOUTONENAND << 0))
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun /* CLK_SRC_TOP1 */
137*4882a593Smuzhiyun #define VPLLSRC_SEL_FINPLL	0x0
138*4882a593Smuzhiyun #define VPLLSRC_SEL_SCLKHDMI24M	0x1
139*4882a593Smuzhiyun #define CLK_SRC_TOP1_VAL	(VPLLSRC_SEL_FINPLL)
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun /* CLK_DIV_TOP */
142*4882a593Smuzhiyun #define ONENAND_RATIO		0x0
143*4882a593Smuzhiyun #define ACLK_133_RATIO		0x5
144*4882a593Smuzhiyun #define ACLK_160_RATIO		0x4
145*4882a593Smuzhiyun #define ACLK_100_RATIO		0x7
146*4882a593Smuzhiyun #define ACLK_200_RATIO		0x3
147*4882a593Smuzhiyun #define CLK_DIV_TOP_VAL		((ONENAND_RATIO << 16)	\
148*4882a593Smuzhiyun 				| (ACLK_133_RATIO << 12)\
149*4882a593Smuzhiyun 				| (ACLK_160_RATIO << 8)	\
150*4882a593Smuzhiyun 				| (ACLK_100_RATIO << 4)	\
151*4882a593Smuzhiyun 				| (ACLK_200_RATIO << 0))
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun /* CLK_SRC_LEFTBUS */
154*4882a593Smuzhiyun #define MUX_GDL_SEL_SCLKMPLL	0x0
155*4882a593Smuzhiyun #define MUX_GDL_SEL_SCLKAPLL	0x1
156*4882a593Smuzhiyun #define CLK_SRC_LEFTBUS_VAL	(MUX_GDL_SEL_SCLKMPLL)
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun /* CLK_DIV_LEFTBUS */
159*4882a593Smuzhiyun #define GPL_RATIO		0x1
160*4882a593Smuzhiyun #define GDL_RATIO		0x3
161*4882a593Smuzhiyun #define CLK_DIV_LEFTBUS_VAL	((GPL_RATIO << 4) | (GDL_RATIO))
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun /* CLK_SRC_RIGHTBUS */
164*4882a593Smuzhiyun #define MUX_GDR_SEL_SCLKMPLL	0x0
165*4882a593Smuzhiyun #define MUX_GDR_SEL_SCLKAPLL	0x1
166*4882a593Smuzhiyun #define CLK_SRC_RIGHTBUS_VAL	(MUX_GDR_SEL_SCLKMPLL)
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun /* CLK_DIV_RIGHTBUS */
169*4882a593Smuzhiyun #define GPR_RATIO		0x1
170*4882a593Smuzhiyun #define GDR_RATIO		0x3
171*4882a593Smuzhiyun #define CLK_DIV_RIGHTBUS_VAL	((GPR_RATIO << 4) | (GDR_RATIO))
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun /* CLK_SRS_FSYS: 6 = SCLKMPLL */
174*4882a593Smuzhiyun #define SATA_SEL_SCLKMPLL	0
175*4882a593Smuzhiyun #define SATA_SEL_SCLKAPLL	1
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun #define MMC_SEL_XXTI		0
178*4882a593Smuzhiyun #define MMC_SEL_XUSBXTI		1
179*4882a593Smuzhiyun #define MMC_SEL_SCLK_HDMI24M	2
180*4882a593Smuzhiyun #define MMC_SEL_SCLK_USBPHY0	3
181*4882a593Smuzhiyun #define MMC_SEL_SCLK_USBPHY1	4
182*4882a593Smuzhiyun #define MMC_SEL_SCLK_HDMIPHY	5
183*4882a593Smuzhiyun #define MMC_SEL_SCLKMPLL	6
184*4882a593Smuzhiyun #define MMC_SEL_SCLKEPLL	7
185*4882a593Smuzhiyun #define MMC_SEL_SCLKVPLL	8
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun #define MMCC0_SEL		MMC_SEL_SCLKMPLL
188*4882a593Smuzhiyun #define MMCC1_SEL		MMC_SEL_SCLKMPLL
189*4882a593Smuzhiyun #define MMCC2_SEL		MMC_SEL_SCLKMPLL
190*4882a593Smuzhiyun #define MMCC3_SEL		MMC_SEL_SCLKMPLL
191*4882a593Smuzhiyun #define MMCC4_SEL		MMC_SEL_SCLKMPLL
192*4882a593Smuzhiyun #define CLK_SRC_FSYS_VAL	((SATA_SEL_SCLKMPLL << 24) \
193*4882a593Smuzhiyun 				| (MMCC4_SEL << 16) \
194*4882a593Smuzhiyun 				| (MMCC3_SEL << 12) \
195*4882a593Smuzhiyun 				| (MMCC2_SEL << 8) \
196*4882a593Smuzhiyun 				| (MMCC1_SEL << 4) \
197*4882a593Smuzhiyun 				| (MMCC0_SEL << 0))
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun /* SCLK_MMC[0-4] = MOUTMMC[0-4]/(MMC[0-4]_RATIO + 1)/(MMC[0-4]_PRE_RATIO +1) */
200*4882a593Smuzhiyun /* CLK_DIV_FSYS1 */
201*4882a593Smuzhiyun #define MMC0_RATIO		0xF
202*4882a593Smuzhiyun #define MMC0_PRE_RATIO		0x0
203*4882a593Smuzhiyun #define MMC1_RATIO		0xF
204*4882a593Smuzhiyun #define MMC1_PRE_RATIO		0x0
205*4882a593Smuzhiyun #define CLK_DIV_FSYS1_VAL	((MMC1_PRE_RATIO << 24) \
206*4882a593Smuzhiyun 				| (MMC1_RATIO << 16) \
207*4882a593Smuzhiyun 				| (MMC0_PRE_RATIO << 8) \
208*4882a593Smuzhiyun 				| (MMC0_RATIO << 0))
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun /* CLK_DIV_FSYS2 */
211*4882a593Smuzhiyun #define MMC2_RATIO		0xF
212*4882a593Smuzhiyun #define MMC2_PRE_RATIO		0x0
213*4882a593Smuzhiyun #define MMC3_RATIO		0xF
214*4882a593Smuzhiyun #define MMC3_PRE_RATIO		0x0
215*4882a593Smuzhiyun #define CLK_DIV_FSYS2_VAL	((MMC3_PRE_RATIO << 24) \
216*4882a593Smuzhiyun 				| (MMC3_RATIO << 16) \
217*4882a593Smuzhiyun 				| (MMC2_PRE_RATIO << 8) \
218*4882a593Smuzhiyun 				| (MMC2_RATIO << 0))
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun /* CLK_DIV_FSYS3 */
221*4882a593Smuzhiyun #define MMC4_RATIO		0xF
222*4882a593Smuzhiyun #define MMC4_PRE_RATIO		0x0
223*4882a593Smuzhiyun #define CLK_DIV_FSYS3_VAL	((MMC4_PRE_RATIO << 8) \
224*4882a593Smuzhiyun 				| (MMC4_RATIO << 0))
225*4882a593Smuzhiyun 
226*4882a593Smuzhiyun /* CLK_SRC_PERIL0 */
227*4882a593Smuzhiyun #define UART_SEL_XXTI		0
228*4882a593Smuzhiyun #define UART_SEL_XUSBXTI	1
229*4882a593Smuzhiyun #define UART_SEL_SCLK_HDMI24M	2
230*4882a593Smuzhiyun #define UART_SEL_SCLK_USBPHY0	3
231*4882a593Smuzhiyun #define UART_SEL_SCLK_USBPHY1	4
232*4882a593Smuzhiyun #define UART_SEL_SCLK_HDMIPHY	5
233*4882a593Smuzhiyun #define UART_SEL_SCLKMPLL	6
234*4882a593Smuzhiyun #define UART_SEL_SCLKEPLL	7
235*4882a593Smuzhiyun #define UART_SEL_SCLKVPLL	8
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun #define UART0_SEL		UART_SEL_SCLKMPLL
238*4882a593Smuzhiyun #define UART1_SEL		UART_SEL_SCLKMPLL
239*4882a593Smuzhiyun #define UART2_SEL		UART_SEL_SCLKMPLL
240*4882a593Smuzhiyun #define UART3_SEL		UART_SEL_SCLKMPLL
241*4882a593Smuzhiyun #define UART4_SEL		UART_SEL_SCLKMPLL
242*4882a593Smuzhiyun #define CLK_SRC_PERIL0_VAL	((UART4_SEL << 16) \
243*4882a593Smuzhiyun 				| (UART3_SEL << 12) \
244*4882a593Smuzhiyun 				| (UART2_SEL << 8) \
245*4882a593Smuzhiyun 				| (UART1_SEL << 4) \
246*4882a593Smuzhiyun 				| (UART0_SEL << 0))
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun /* SCLK_UART[0-4] = MOUTUART[0-4]/(UART[0-4]_RATIO + 1) */
249*4882a593Smuzhiyun /* CLK_DIV_PERIL0 */
250*4882a593Smuzhiyun #define UART0_RATIO		7
251*4882a593Smuzhiyun #define UART1_RATIO		7
252*4882a593Smuzhiyun #define UART2_RATIO		7
253*4882a593Smuzhiyun #define UART3_RATIO		7
254*4882a593Smuzhiyun #define UART4_RATIO		7
255*4882a593Smuzhiyun #define CLK_DIV_PERIL0_VAL	((UART4_RATIO << 16) \
256*4882a593Smuzhiyun 				| (UART3_RATIO << 12) \
257*4882a593Smuzhiyun 				| (UART2_RATIO << 8) \
258*4882a593Smuzhiyun 				| (UART1_RATIO << 4) \
259*4882a593Smuzhiyun 				| (UART0_RATIO << 0))
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun /* Clock Source CAM/FIMC */
262*4882a593Smuzhiyun /* CLK_SRC_CAM */
263*4882a593Smuzhiyun #define CAM0_SEL_XUSBXTI	1
264*4882a593Smuzhiyun #define CAM1_SEL_XUSBXTI	1
265*4882a593Smuzhiyun #define CSIS0_SEL_XUSBXTI	1
266*4882a593Smuzhiyun #define CSIS1_SEL_XUSBXTI	1
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun #define FIMC_SEL_SCLKMPLL	6
269*4882a593Smuzhiyun #define FIMC0_LCLK_SEL		FIMC_SEL_SCLKMPLL
270*4882a593Smuzhiyun #define FIMC1_LCLK_SEL		FIMC_SEL_SCLKMPLL
271*4882a593Smuzhiyun #define FIMC2_LCLK_SEL		FIMC_SEL_SCLKMPLL
272*4882a593Smuzhiyun #define FIMC3_LCLK_SEL		FIMC_SEL_SCLKMPLL
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun #define CLK_SRC_CAM_VAL		((CSIS1_SEL_XUSBXTI << 28) \
275*4882a593Smuzhiyun 				| (CSIS0_SEL_XUSBXTI << 24) \
276*4882a593Smuzhiyun 				| (CAM1_SEL_XUSBXTI << 20) \
277*4882a593Smuzhiyun 				| (CAM0_SEL_XUSBXTI << 16) \
278*4882a593Smuzhiyun 				| (FIMC3_LCLK_SEL << 12) \
279*4882a593Smuzhiyun 				| (FIMC2_LCLK_SEL << 8) \
280*4882a593Smuzhiyun 				| (FIMC1_LCLK_SEL << 4) \
281*4882a593Smuzhiyun 				| (FIMC0_LCLK_SEL << 0))
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun /* SCLK CAM */
284*4882a593Smuzhiyun /* CLK_DIV_CAM */
285*4882a593Smuzhiyun #define FIMC0_LCLK_RATIO	4
286*4882a593Smuzhiyun #define FIMC1_LCLK_RATIO	4
287*4882a593Smuzhiyun #define FIMC2_LCLK_RATIO	4
288*4882a593Smuzhiyun #define FIMC3_LCLK_RATIO	4
289*4882a593Smuzhiyun #define CLK_DIV_CAM_VAL		((FIMC3_LCLK_RATIO << 12) \
290*4882a593Smuzhiyun 				| (FIMC2_LCLK_RATIO << 8) \
291*4882a593Smuzhiyun 				| (FIMC1_LCLK_RATIO << 4) \
292*4882a593Smuzhiyun 				| (FIMC0_LCLK_RATIO << 0))
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun /* SCLK MFC */
295*4882a593Smuzhiyun /* CLK_SRC_MFC */
296*4882a593Smuzhiyun #define MFC_SEL_MPLL		0
297*4882a593Smuzhiyun #define MOUTMFC_0		0
298*4882a593Smuzhiyun #define MFC_SEL			MOUTMFC_0
299*4882a593Smuzhiyun #define MFC_0_SEL		MFC_SEL_MPLL
300*4882a593Smuzhiyun #define CLK_SRC_MFC_VAL		((MFC_SEL << 8) | (MFC_0_SEL))
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun /* CLK_DIV_MFC */
304*4882a593Smuzhiyun #define MFC_RATIO		3
305*4882a593Smuzhiyun #define CLK_DIV_MFC_VAL		(MFC_RATIO)
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun /* SCLK G3D */
308*4882a593Smuzhiyun /* CLK_SRC_G3D */
309*4882a593Smuzhiyun #define G3D_SEL_MPLL		0
310*4882a593Smuzhiyun #define MOUTG3D_0		0
311*4882a593Smuzhiyun #define G3D_SEL			MOUTG3D_0
312*4882a593Smuzhiyun #define G3D_0_SEL		G3D_SEL_MPLL
313*4882a593Smuzhiyun #define CLK_SRC_G3D_VAL		((G3D_SEL << 8) | (G3D_0_SEL))
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun /* CLK_DIV_G3D */
316*4882a593Smuzhiyun #define G3D_RATIO		1
317*4882a593Smuzhiyun #define CLK_DIV_G3D_VAL		(G3D_RATIO)
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun /* SCLK LCD0 */
320*4882a593Smuzhiyun /* CLK_SRC_LCD0 */
321*4882a593Smuzhiyun #define FIMD_SEL_SCLKMPLL	6
322*4882a593Smuzhiyun #define MDNIE0_SEL_XUSBXTI	1
323*4882a593Smuzhiyun #define MDNIE_PWM0_SEL_XUSBXTI	1
324*4882a593Smuzhiyun #define MIPI0_SEL_XUSBXTI	1
325*4882a593Smuzhiyun #define CLK_SRC_LCD0_VAL	((MIPI0_SEL_XUSBXTI << 12) \
326*4882a593Smuzhiyun 				| (MDNIE_PWM0_SEL_XUSBXTI << 8) \
327*4882a593Smuzhiyun 				| (MDNIE0_SEL_XUSBXTI << 4) \
328*4882a593Smuzhiyun 				| (FIMD_SEL_SCLKMPLL << 0))
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun /* CLK_DIV_LCD0 */
331*4882a593Smuzhiyun #define FIMD0_RATIO		4
332*4882a593Smuzhiyun #define CLK_DIV_LCD0_VAL	(FIMD0_RATIO)
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun /* Required period to generate a stable clock output */
335*4882a593Smuzhiyun /* PLL_LOCK_TIME */
336*4882a593Smuzhiyun #define PLL_LOCKTIME		0x1C20
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun /* PLL Values */
339*4882a593Smuzhiyun #define DISABLE			0
340*4882a593Smuzhiyun #define ENABLE			1
341*4882a593Smuzhiyun #define SET_PLL(mdiv, pdiv, sdiv)	((ENABLE << 31)\
342*4882a593Smuzhiyun 					| (mdiv << 16) \
343*4882a593Smuzhiyun 					| (pdiv << 8) \
344*4882a593Smuzhiyun 					| (sdiv << 0))
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun /* APLL_CON0 */
347*4882a593Smuzhiyun #define APLL_MDIV		0xFA
348*4882a593Smuzhiyun #define APLL_PDIV		0x6
349*4882a593Smuzhiyun #define APLL_SDIV		0x1
350*4882a593Smuzhiyun #define APLL_CON0_VAL		SET_PLL(APLL_MDIV, APLL_PDIV, APLL_SDIV)
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun /* APLL_CON1 */
353*4882a593Smuzhiyun #define APLL_AFC_ENB		0x1
354*4882a593Smuzhiyun #define APLL_AFC		0xC
355*4882a593Smuzhiyun #define APLL_CON1_VAL		((APLL_AFC_ENB << 31) | (APLL_AFC << 0))
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun /* MPLL_CON0 */
358*4882a593Smuzhiyun #define MPLL_MDIV		0xC8
359*4882a593Smuzhiyun #define MPLL_PDIV		0x6
360*4882a593Smuzhiyun #define MPLL_SDIV		0x1
361*4882a593Smuzhiyun #define MPLL_CON0_VAL		SET_PLL(MPLL_MDIV, MPLL_PDIV, MPLL_SDIV)
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun /* MPLL_CON1 */
364*4882a593Smuzhiyun #define MPLL_AFC_ENB		0x0
365*4882a593Smuzhiyun #define MPLL_AFC		0x1C
366*4882a593Smuzhiyun #define MPLL_CON1_VAL		((MPLL_AFC_ENB << 31) | (MPLL_AFC << 0))
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun /* EPLL_CON0 */
369*4882a593Smuzhiyun #define EPLL_MDIV		0x30
370*4882a593Smuzhiyun #define EPLL_PDIV		0x3
371*4882a593Smuzhiyun #define EPLL_SDIV		0x2
372*4882a593Smuzhiyun #define EPLL_CON0_VAL		SET_PLL(EPLL_MDIV, EPLL_PDIV, EPLL_SDIV)
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun /* EPLL_CON1 */
375*4882a593Smuzhiyun #define EPLL_K			0x0
376*4882a593Smuzhiyun #define EPLL_CON1_VAL		(EPLL_K >> 0)
377*4882a593Smuzhiyun 
378*4882a593Smuzhiyun /* VPLL_CON0 */
379*4882a593Smuzhiyun #define VPLL_MDIV		0x35
380*4882a593Smuzhiyun #define VPLL_PDIV		0x3
381*4882a593Smuzhiyun #define VPLL_SDIV		0x2
382*4882a593Smuzhiyun #define VPLL_CON0_VAL		SET_PLL(VPLL_MDIV, VPLL_PDIV, VPLL_SDIV)
383*4882a593Smuzhiyun 
384*4882a593Smuzhiyun /* VPLL_CON1 */
385*4882a593Smuzhiyun #define VPLL_SSCG_EN		DISABLE
386*4882a593Smuzhiyun #define VPLL_SEL_PF_DN_SPREAD	0x0
387*4882a593Smuzhiyun #define VPLL_MRR		0x11
388*4882a593Smuzhiyun #define VPLL_MFR		0x0
389*4882a593Smuzhiyun #define VPLL_K			0x400
390*4882a593Smuzhiyun #define VPLL_CON1_VAL		((VPLL_SSCG_EN << 31)\
391*4882a593Smuzhiyun 				| (VPLL_SEL_PF_DN_SPREAD << 29) \
392*4882a593Smuzhiyun 				| (VPLL_MRR << 24) \
393*4882a593Smuzhiyun 				| (VPLL_MFR << 16) \
394*4882a593Smuzhiyun 				| (VPLL_K << 0))
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun /* DMC */
397*4882a593Smuzhiyun #define DIRECT_CMD_NOP	0x07000000
398*4882a593Smuzhiyun #define DIRECT_CMD_ZQ	0x0a000000
399*4882a593Smuzhiyun #define DIRECT_CMD_CHIP1_SHIFT	(1 << 20)
400*4882a593Smuzhiyun #define MEM_TIMINGS_MSR_COUNT	4
401*4882a593Smuzhiyun #define CTRL_START	(1 << 0)
402*4882a593Smuzhiyun #define CTRL_DLL_ON	(1 << 1)
403*4882a593Smuzhiyun #define AREF_EN		(1 << 5)
404*4882a593Smuzhiyun #define DRV_TYPE	(1 << 6)
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun struct mem_timings {
407*4882a593Smuzhiyun 	unsigned direct_cmd_msr[MEM_TIMINGS_MSR_COUNT];
408*4882a593Smuzhiyun 	unsigned timingref;
409*4882a593Smuzhiyun 	unsigned timingrow;
410*4882a593Smuzhiyun 	unsigned timingdata;
411*4882a593Smuzhiyun 	unsigned timingpower;
412*4882a593Smuzhiyun 	unsigned zqcontrol;
413*4882a593Smuzhiyun 	unsigned control0;
414*4882a593Smuzhiyun 	unsigned control1;
415*4882a593Smuzhiyun 	unsigned control2;
416*4882a593Smuzhiyun 	unsigned concontrol;
417*4882a593Smuzhiyun 	unsigned prechconfig;
418*4882a593Smuzhiyun 	unsigned memcontrol;
419*4882a593Smuzhiyun 	unsigned memconfig0;
420*4882a593Smuzhiyun 	unsigned memconfig1;
421*4882a593Smuzhiyun 	unsigned dll_resync;
422*4882a593Smuzhiyun 	unsigned dll_on;
423*4882a593Smuzhiyun };
424*4882a593Smuzhiyun 
425*4882a593Smuzhiyun /* MIU */
426*4882a593Smuzhiyun /* MIU Config Register Offsets*/
427*4882a593Smuzhiyun #define APB_SFR_INTERLEAVE_CONF_OFFSET	0x400
428*4882a593Smuzhiyun #define APB_SFR_ARBRITATION_CONF_OFFSET	0xC00
429*4882a593Smuzhiyun #define ABP_SFR_SLV_ADDRMAP_CONF_OFFSET	0x800
430*4882a593Smuzhiyun #define ABP_SFR_INTERLEAVE_ADDRMAP_START_OFFSET	0x808
431*4882a593Smuzhiyun #define ABP_SFR_INTERLEAVE_ADDRMAP_END_OFFSET	0x810
432*4882a593Smuzhiyun #define ABP_SFR_SLV0_SINGLE_ADDRMAP_START_OFFSET	0x818
433*4882a593Smuzhiyun #define ABP_SFR_SLV0_SINGLE_ADDRMAP_END_OFFSET	0x820
434*4882a593Smuzhiyun #define ABP_SFR_SLV1_SINGLE_ADDRMAP_START_OFFSET	0x828
435*4882a593Smuzhiyun #define ABP_SFR_SLV1_SINGLE_ADDRMAP_END_OFFSET	0x830
436*4882a593Smuzhiyun 
437*4882a593Smuzhiyun #ifdef CONFIG_ORIGEN
438*4882a593Smuzhiyun /* Interleave: 2Bit, Interleave_bit1: 0x15, Interleave_bit0: 0x7 */
439*4882a593Smuzhiyun #define APB_SFR_INTERLEAVE_CONF_VAL	0x20001507
440*4882a593Smuzhiyun #define APB_SFR_ARBRITATION_CONF_VAL	0x00000001
441*4882a593Smuzhiyun #endif
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun #define INTERLEAVE_ADDR_MAP_START_ADDR	0x40000000
444*4882a593Smuzhiyun #define INTERLEAVE_ADDR_MAP_END_ADDR	0xbfffffff
445*4882a593Smuzhiyun #define INTERLEAVE_ADDR_MAP_EN		0x00000001
446*4882a593Smuzhiyun 
447*4882a593Smuzhiyun #ifdef CONFIG_MIU_1BIT_INTERLEAVED
448*4882a593Smuzhiyun /* Interleave_bit0: 0xC*/
449*4882a593Smuzhiyun #define APB_SFR_INTERLEAVE_CONF_VAL	0x0000000c
450*4882a593Smuzhiyun #endif
451*4882a593Smuzhiyun #ifdef CONFIG_MIU_2BIT_INTERLEAVED
452*4882a593Smuzhiyun /* Interleave: 2Bit, Interleave_bit1: 0x15, Interleave_bit0: 0xc */
453*4882a593Smuzhiyun #define APB_SFR_INTERLEAVE_CONF_VAL	0x2000150c
454*4882a593Smuzhiyun #endif
455*4882a593Smuzhiyun #define SLAVE0_SINGLE_ADDR_MAP_START_ADDR	0x40000000
456*4882a593Smuzhiyun #define SLAVE0_SINGLE_ADDR_MAP_END_ADDR		0x7fffffff
457*4882a593Smuzhiyun #define SLAVE1_SINGLE_ADDR_MAP_START_ADDR	0x80000000
458*4882a593Smuzhiyun #define SLAVE1_SINGLE_ADDR_MAP_END_ADDR		0xbfffffff
459*4882a593Smuzhiyun /* Enable SME0 and SME1*/
460*4882a593Smuzhiyun #define APB_SFR_SLV_ADDR_MAP_CONF_VAL		0x00000006
461*4882a593Smuzhiyun 
462*4882a593Smuzhiyun #define FORCE_DLL_RESYNC	3
463*4882a593Smuzhiyun #define DLL_CONTROL_ON		1
464*4882a593Smuzhiyun 
465*4882a593Smuzhiyun #define DIRECT_CMD1	0x00020000
466*4882a593Smuzhiyun #define DIRECT_CMD2	0x00030000
467*4882a593Smuzhiyun #define DIRECT_CMD3	0x00010002
468*4882a593Smuzhiyun #define DIRECT_CMD4	0x00000328
469*4882a593Smuzhiyun 
470*4882a593Smuzhiyun #define CTRL_ZQ_MODE_NOTERM	(0x1 << 0)
471*4882a593Smuzhiyun #define CTRL_ZQ_START		(0x1 << 1)
472*4882a593Smuzhiyun #define CTRL_ZQ_DIV		(0 << 4)
473*4882a593Smuzhiyun #define CTRL_ZQ_MODE_DDS	(0x7 << 8)
474*4882a593Smuzhiyun #define CTRL_ZQ_MODE_TERM	(0x2 << 11)
475*4882a593Smuzhiyun #define CTRL_ZQ_FORCE_IMPN	(0x5 << 14)
476*4882a593Smuzhiyun #define CTRL_ZQ_FORCE_IMPP	(0x6 << 17)
477*4882a593Smuzhiyun #define CTRL_DCC		(0xE38 << 20)
478*4882a593Smuzhiyun #define ZQ_CONTROL_VAL		(CTRL_ZQ_MODE_NOTERM | CTRL_ZQ_START\
479*4882a593Smuzhiyun 				| CTRL_ZQ_DIV | CTRL_ZQ_MODE_DDS\
480*4882a593Smuzhiyun 				| CTRL_ZQ_MODE_TERM | CTRL_ZQ_FORCE_IMPN\
481*4882a593Smuzhiyun 				| CTRL_ZQ_FORCE_IMPP | CTRL_DCC)
482*4882a593Smuzhiyun 
483*4882a593Smuzhiyun #define ASYNC			(0 << 0)
484*4882a593Smuzhiyun #define CLK_RATIO		(1 << 1)
485*4882a593Smuzhiyun #define DIV_PIPE		(1 << 3)
486*4882a593Smuzhiyun #define AWR_ON			(1 << 4)
487*4882a593Smuzhiyun #define AREF_DISABLE		(0 << 5)
488*4882a593Smuzhiyun #define DRV_TYPE_DISABLE	(0 << 6)
489*4882a593Smuzhiyun #define CHIP0_NOT_EMPTY		(0 << 8)
490*4882a593Smuzhiyun #define CHIP1_NOT_EMPTY		(0 << 9)
491*4882a593Smuzhiyun #define DQ_SWAP_DISABLE		(0 << 10)
492*4882a593Smuzhiyun #define QOS_FAST_DISABLE	(0 << 11)
493*4882a593Smuzhiyun #define RD_FETCH		(0x3 << 12)
494*4882a593Smuzhiyun #define TIMEOUT_LEVEL0		(0xFFF << 16)
495*4882a593Smuzhiyun #define CONCONTROL_VAL		(ASYNC | CLK_RATIO | DIV_PIPE | AWR_ON\
496*4882a593Smuzhiyun 				| AREF_DISABLE | DRV_TYPE_DISABLE\
497*4882a593Smuzhiyun 				| CHIP0_NOT_EMPTY | CHIP1_NOT_EMPTY\
498*4882a593Smuzhiyun 				| DQ_SWAP_DISABLE | QOS_FAST_DISABLE\
499*4882a593Smuzhiyun 				| RD_FETCH | TIMEOUT_LEVEL0)
500*4882a593Smuzhiyun 
501*4882a593Smuzhiyun #define CLK_STOP_DISABLE	(0 << 1)
502*4882a593Smuzhiyun #define DPWRDN_DISABLE		(0 << 2)
503*4882a593Smuzhiyun #define DPWRDN_TYPE		(0 << 3)
504*4882a593Smuzhiyun #define TP_DISABLE		(0 << 4)
505*4882a593Smuzhiyun #define DSREF_DIABLE		(0 << 5)
506*4882a593Smuzhiyun #define ADD_LAT_PALL		(1 << 6)
507*4882a593Smuzhiyun #define MEM_TYPE_DDR3		(0x6 << 8)
508*4882a593Smuzhiyun #define MEM_WIDTH_32		(0x2 << 12)
509*4882a593Smuzhiyun #define NUM_CHIP_2		(1 << 16)
510*4882a593Smuzhiyun #define BL_8			(0x3 << 20)
511*4882a593Smuzhiyun #define MEMCONTROL_VAL		(CLK_STOP_DISABLE | DPWRDN_DISABLE\
512*4882a593Smuzhiyun 				| DPWRDN_TYPE | TP_DISABLE | DSREF_DIABLE\
513*4882a593Smuzhiyun 				| ADD_LAT_PALL | MEM_TYPE_DDR3 | MEM_WIDTH_32\
514*4882a593Smuzhiyun 				| NUM_CHIP_2 | BL_8)
515*4882a593Smuzhiyun 
516*4882a593Smuzhiyun 
517*4882a593Smuzhiyun #define CHIP_BANK_8		(0x3 << 0)
518*4882a593Smuzhiyun #define CHIP_ROW_14		(0x2 << 4)
519*4882a593Smuzhiyun #define CHIP_COL_10		(0x3 << 8)
520*4882a593Smuzhiyun #define CHIP_MAP_INTERLEAVED	(1 << 12)
521*4882a593Smuzhiyun #define CHIP_MASK		(0xe0 << 16)
522*4882a593Smuzhiyun #ifdef CONFIG_MIU_LINEAR
523*4882a593Smuzhiyun #define CHIP0_BASE		(0x40 << 24)
524*4882a593Smuzhiyun #define CHIP1_BASE		(0x60 << 24)
525*4882a593Smuzhiyun #else
526*4882a593Smuzhiyun #define CHIP0_BASE		(0x20 << 24)
527*4882a593Smuzhiyun #define CHIP1_BASE		(0x40 << 24)
528*4882a593Smuzhiyun #endif
529*4882a593Smuzhiyun #define MEMCONFIG0_VAL		(CHIP_BANK_8 | CHIP_ROW_14 | CHIP_COL_10\
530*4882a593Smuzhiyun 				| CHIP_MAP_INTERLEAVED | CHIP_MASK | CHIP0_BASE)
531*4882a593Smuzhiyun #define MEMCONFIG1_VAL		(CHIP_BANK_8 | CHIP_ROW_14 | CHIP_COL_10\
532*4882a593Smuzhiyun 				| CHIP_MAP_INTERLEAVED | CHIP_MASK | CHIP1_BASE)
533*4882a593Smuzhiyun 
534*4882a593Smuzhiyun #define TP_CNT			(0xff << 24)
535*4882a593Smuzhiyun #define PRECHCONFIG		TP_CNT
536*4882a593Smuzhiyun 
537*4882a593Smuzhiyun #define CTRL_OFF		(0 << 0)
538*4882a593Smuzhiyun #define CTRL_DLL_OFF		(0 << 1)
539*4882a593Smuzhiyun #define CTRL_HALF		(0 << 2)
540*4882a593Smuzhiyun #define CTRL_DFDQS		(1 << 3)
541*4882a593Smuzhiyun #define DQS_DELAY		(0 << 4)
542*4882a593Smuzhiyun #define CTRL_START_POINT	(0x10 << 8)
543*4882a593Smuzhiyun #define CTRL_INC		(0x10 << 16)
544*4882a593Smuzhiyun #define CTRL_FORCE		(0x71 << 24)
545*4882a593Smuzhiyun #define CONTROL0_VAL		(CTRL_OFF | CTRL_DLL_OFF | CTRL_HALF\
546*4882a593Smuzhiyun 				| CTRL_DFDQS | DQS_DELAY | CTRL_START_POINT\
547*4882a593Smuzhiyun 				| CTRL_INC | CTRL_FORCE)
548*4882a593Smuzhiyun 
549*4882a593Smuzhiyun #define CTRL_SHIFTC		(0x6 << 0)
550*4882a593Smuzhiyun #define CTRL_REF		(8 << 4)
551*4882a593Smuzhiyun #define CTRL_SHGATE		(1 << 29)
552*4882a593Smuzhiyun #define TERM_READ_EN		(1 << 30)
553*4882a593Smuzhiyun #define TERM_WRITE_EN		(1 << 31)
554*4882a593Smuzhiyun #define CONTROL1_VAL		(CTRL_SHIFTC | CTRL_REF | CTRL_SHGATE\
555*4882a593Smuzhiyun 				| TERM_READ_EN | TERM_WRITE_EN)
556*4882a593Smuzhiyun 
557*4882a593Smuzhiyun #define CONTROL2_VAL		0x00000000
558*4882a593Smuzhiyun 
559*4882a593Smuzhiyun #ifdef CONFIG_ORIGEN
560*4882a593Smuzhiyun #define TIMINGREF_VAL		0x000000BB
561*4882a593Smuzhiyun #define TIMINGROW_VAL		0x4046654f
562*4882a593Smuzhiyun #define	TIMINGDATA_VAL		0x46400506
563*4882a593Smuzhiyun #define	TIMINGPOWER_VAL		0x52000A3C
564*4882a593Smuzhiyun #else
565*4882a593Smuzhiyun #define TIMINGREF_VAL		0x000000BC
566*4882a593Smuzhiyun #ifdef DRAM_CLK_330
567*4882a593Smuzhiyun #define TIMINGROW_VAL		0x3545548d
568*4882a593Smuzhiyun #define	TIMINGDATA_VAL		0x45430506
569*4882a593Smuzhiyun #define	TIMINGPOWER_VAL		0x4439033c
570*4882a593Smuzhiyun #endif
571*4882a593Smuzhiyun #ifdef DRAM_CLK_400
572*4882a593Smuzhiyun #define TIMINGROW_VAL		0x45430506
573*4882a593Smuzhiyun #define	TIMINGDATA_VAL		0x56500506
574*4882a593Smuzhiyun #define	TIMINGPOWER_VAL		0x5444033d
575*4882a593Smuzhiyun #endif
576*4882a593Smuzhiyun #endif
577*4882a593Smuzhiyun #endif
578