xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-exynos/include/mach/cpu.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2010 Samsung Electronics
3*4882a593Smuzhiyun  * Minkyu Kang <mk7.kang@samsung.com>
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _EXYNOS4_CPU_H
9*4882a593Smuzhiyun #define _EXYNOS4_CPU_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define DEVICE_NOT_AVAILABLE		0
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define EXYNOS_CPU_NAME			"Exynos"
14*4882a593Smuzhiyun #define EXYNOS4_ADDR_BASE		0x10000000
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* EXYNOS4 Common*/
17*4882a593Smuzhiyun #define EXYNOS4_I2C_SPACING		0x10000
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART3_BASE		0x03860000
20*4882a593Smuzhiyun #define EXYNOS4_PRO_ID			0x10000000
21*4882a593Smuzhiyun #define EXYNOS4_SYSREG_BASE		0x10010000
22*4882a593Smuzhiyun #define EXYNOS4_POWER_BASE		0x10020000
23*4882a593Smuzhiyun #define EXYNOS4_SWRESET			0x10020400
24*4882a593Smuzhiyun #define EXYNOS4_CLOCK_BASE		0x10030000
25*4882a593Smuzhiyun #define EXYNOS4_SYSTIMER_BASE		0x10050000
26*4882a593Smuzhiyun #define EXYNOS4_WATCHDOG_BASE		0x10060000
27*4882a593Smuzhiyun #define EXYNOS4_TZPC_BASE		0x10110000
28*4882a593Smuzhiyun #define EXYNOS4_DMC_CTRL_BASE		0x10400000
29*4882a593Smuzhiyun #define EXYNOS4_MIU_BASE		0x10600000
30*4882a593Smuzhiyun #define EXYNOS4_ACE_SFR_BASE		0x10830000
31*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART2_BASE		0x11000000
32*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART2_0		0x11000000 /* GPJ0 */
33*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART2_1		0x11000c00 /* GPX0 */
34*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART1_BASE		0x11400000
35*4882a593Smuzhiyun #define EXYNOS4_FIMD_BASE		0x11C00000
36*4882a593Smuzhiyun #define EXYNOS4_MIPI_DSIM_BASE		0x11C80000
37*4882a593Smuzhiyun #define EXYNOS4_USBOTG_BASE		0x12480000
38*4882a593Smuzhiyun #define EXYNOS4_MMC_BASE		0x12510000
39*4882a593Smuzhiyun #define EXYNOS4_SROMC_BASE		0x12570000
40*4882a593Smuzhiyun #define EXYNOS4_USB_HOST_EHCI_BASE	0x12580000
41*4882a593Smuzhiyun #define EXYNOS4_USBPHY_BASE		0x125B0000
42*4882a593Smuzhiyun #define EXYNOS4_UART_BASE		0x13800000
43*4882a593Smuzhiyun #define EXYNOS4_I2C_BASE		0x13860000
44*4882a593Smuzhiyun #define EXYNOS4_ADC_BASE		0x13910000
45*4882a593Smuzhiyun #define EXYNOS4_SPI_BASE		0x13920000
46*4882a593Smuzhiyun #define EXYNOS4_PWMTIMER_BASE		0x139D0000
47*4882a593Smuzhiyun #define EXYNOS4_MODEM_BASE		0x13A00000
48*4882a593Smuzhiyun #define EXYNOS4_USBPHY_CONTROL		0x10020704
49*4882a593Smuzhiyun #define EXYNOS4_I2S_BASE		0xE2100000
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define EXYNOS4_GPIO_PART4_BASE		DEVICE_NOT_AVAILABLE
52*4882a593Smuzhiyun #define EXYNOS4_DP_BASE			DEVICE_NOT_AVAILABLE
53*4882a593Smuzhiyun #define EXYNOS4_SPI_ISP_BASE		DEVICE_NOT_AVAILABLE
54*4882a593Smuzhiyun #define EXYNOS4_DMC_PHY_BASE		DEVICE_NOT_AVAILABLE
55*4882a593Smuzhiyun #define EXYNOS4_AUDIOSS_BASE		DEVICE_NOT_AVAILABLE
56*4882a593Smuzhiyun #define EXYNOS4_USB_HOST_XHCI_BASE	DEVICE_NOT_AVAILABLE
57*4882a593Smuzhiyun #define EXYNOS4_USB3PHY_BASE		DEVICE_NOT_AVAILABLE
58*4882a593Smuzhiyun #define EXYNOS4_DMC_TZASC_BASE		DEVICE_NOT_AVAILABLE
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun /* EXYNOS4X12 */
61*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART3_BASE	0x03860000
62*4882a593Smuzhiyun #define EXYNOS4X12_PRO_ID		0x10000000
63*4882a593Smuzhiyun #define EXYNOS4X12_SYSREG_BASE		0x10010000
64*4882a593Smuzhiyun #define EXYNOS4X12_POWER_BASE		0x10020000
65*4882a593Smuzhiyun #define EXYNOS4X12_SWRESET		0x10020400
66*4882a593Smuzhiyun #define EXYNOS4X12_USBPHY_CONTROL	0x10020704
67*4882a593Smuzhiyun #define EXYNOS4X12_CLOCK_BASE		0x10030000
68*4882a593Smuzhiyun #define EXYNOS4X12_SYSTIMER_BASE	0x10050000
69*4882a593Smuzhiyun #define EXYNOS4X12_WATCHDOG_BASE	0x10060000
70*4882a593Smuzhiyun #define EXYNOS4X12_TZPC_BASE		0x10110000
71*4882a593Smuzhiyun #define EXYNOS4X12_DMC_CTRL_BASE	0x10600000
72*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART4_BASE	0x106E0000
73*4882a593Smuzhiyun #define EXYNOS4X12_ACE_SFR_BASE		0x10830000
74*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART2_BASE	0x11000000
75*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART2_0		0x11000000
76*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART2_1		0x11000040 /* GPK0 */
77*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART2_2		0x11000260 /* GPM0 */
78*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART2_3		0x11000c00 /* GPX0 */
79*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART1_BASE	0x11400000
80*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART1_0		0x11400000 /* GPA0 */
81*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART1_1		0x11400180 /* GPF0 */
82*4882a593Smuzhiyun #define EXYNOS4X12_GPIO_PART1_2		0x11400240 /* GPJ0 */
83*4882a593Smuzhiyun #define EXYNOS4X12_FIMD_BASE		0x11C00000
84*4882a593Smuzhiyun #define EXYNOS4X12_MIPI_DSIM_BASE	0x11C80000
85*4882a593Smuzhiyun #define EXYNOS4X12_USBOTG_BASE		0x12480000
86*4882a593Smuzhiyun #define EXYNOS4X12_MMC_BASE		0x12510000
87*4882a593Smuzhiyun #define EXYNOS4X12_SROMC_BASE		0x12570000
88*4882a593Smuzhiyun #define EXYNOS4X12_USB_HOST_EHCI_BASE	0x12580000
89*4882a593Smuzhiyun #define EXYNOS4X12_USBPHY_BASE		0x125B0000
90*4882a593Smuzhiyun #define EXYNOS4X12_UART_BASE		0x13800000
91*4882a593Smuzhiyun #define EXYNOS4X12_I2C_BASE		0x13860000
92*4882a593Smuzhiyun #define EXYNOS4X12_PWMTIMER_BASE	0x139D0000
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define EXYNOS4X12_ADC_BASE		DEVICE_NOT_AVAILABLE
95*4882a593Smuzhiyun #define EXYNOS4X12_DP_BASE		DEVICE_NOT_AVAILABLE
96*4882a593Smuzhiyun #define EXYNOS4X12_MODEM_BASE		DEVICE_NOT_AVAILABLE
97*4882a593Smuzhiyun #define EXYNOS4X12_I2S_BASE		DEVICE_NOT_AVAILABLE
98*4882a593Smuzhiyun #define EXYNOS4X12_SPI_BASE		DEVICE_NOT_AVAILABLE
99*4882a593Smuzhiyun #define EXYNOS4X12_SPI_ISP_BASE		DEVICE_NOT_AVAILABLE
100*4882a593Smuzhiyun #define EXYNOS4X12_DMC_PHY_BASE		DEVICE_NOT_AVAILABLE
101*4882a593Smuzhiyun #define EXYNOS4X12_AUDIOSS_BASE		DEVICE_NOT_AVAILABLE
102*4882a593Smuzhiyun #define EXYNOS4X12_USB_HOST_XHCI_BASE	DEVICE_NOT_AVAILABLE
103*4882a593Smuzhiyun #define EXYNOS4X12_USB3PHY_BASE		DEVICE_NOT_AVAILABLE
104*4882a593Smuzhiyun #define EXYNOS4X12_DMC_TZASC_BASE	DEVICE_NOT_AVAILABLE
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /* EXYNOS5 */
107*4882a593Smuzhiyun #define EXYNOS5_I2C_SPACING		0x10000
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #define EXYNOS5_AUDIOSS_BASE		0x03810000
110*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART8_BASE		0x03860000
111*4882a593Smuzhiyun #define EXYNOS5_PRO_ID			0x10000000
112*4882a593Smuzhiyun #define EXYNOS5_CLOCK_BASE		0x10010000
113*4882a593Smuzhiyun #define EXYNOS5_POWER_BASE		0x10040000
114*4882a593Smuzhiyun #define EXYNOS5_SWRESET			0x10040400
115*4882a593Smuzhiyun #define EXYNOS5_SYSREG_BASE		0x10050000
116*4882a593Smuzhiyun #define EXYNOS5_TZPC_BASE		0x10100000
117*4882a593Smuzhiyun #define EXYNOS5_WATCHDOG_BASE		0x101D0000
118*4882a593Smuzhiyun #define EXYNOS5_ACE_SFR_BASE		0x10830000
119*4882a593Smuzhiyun #define EXYNOS5_DMC_PHY_BASE		0x10C00000
120*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART5_BASE		0x10D10000
121*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART6_BASE		0x10D10060
122*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART7_BASE		0x10D100C0
123*4882a593Smuzhiyun #define EXYNOS5_DMC_CTRL_BASE		0x10DD0000
124*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART1_BASE		0x11400000
125*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART2_BASE		0x114002E0
126*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART3_BASE		0x11400C00
127*4882a593Smuzhiyun #define EXYNOS5_MIPI_DSIM_BASE		0x11D00000
128*4882a593Smuzhiyun #define EXYNOS5_USB_HOST_XHCI_BASE	0x12000000
129*4882a593Smuzhiyun #define EXYNOS5_USB3PHY_BASE		0x12100000
130*4882a593Smuzhiyun #define EXYNOS5_USB_HOST_EHCI_BASE	0x12110000
131*4882a593Smuzhiyun #define EXYNOS5_USBPHY_BASE		0x12130000
132*4882a593Smuzhiyun #define EXYNOS5_USBOTG_BASE		0x12140000
133*4882a593Smuzhiyun #define EXYNOS5_MMC_BASE		0x12200000
134*4882a593Smuzhiyun #define EXYNOS5_SROMC_BASE		0x12250000
135*4882a593Smuzhiyun #define EXYNOS5_UART_BASE		0x12C00000
136*4882a593Smuzhiyun #define EXYNOS5_I2C_BASE		0x12C60000
137*4882a593Smuzhiyun #define EXYNOS5_SPI_BASE		0x12D20000
138*4882a593Smuzhiyun #define EXYNOS5_I2S_BASE		0x12D60000
139*4882a593Smuzhiyun #define EXYNOS5_PWMTIMER_BASE		0x12DD0000
140*4882a593Smuzhiyun #define EXYNOS5_SPI_ISP_BASE		0x131A0000
141*4882a593Smuzhiyun #define EXYNOS5_GPIO_PART4_BASE		0x13400000
142*4882a593Smuzhiyun #define EXYNOS5_FIMD_BASE		0x14400000
143*4882a593Smuzhiyun #define EXYNOS5_DP_BASE			0x145B0000
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun #define EXYNOS5_ADC_BASE		DEVICE_NOT_AVAILABLE
146*4882a593Smuzhiyun #define EXYNOS5_MODEM_BASE		DEVICE_NOT_AVAILABLE
147*4882a593Smuzhiyun #define EXYNOS5_DMC_TZASC_BASE		DEVICE_NOT_AVAILABLE
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun /* EXYNOS5420 */
150*4882a593Smuzhiyun #define EXYNOS5420_AUDIOSS_BASE		0x03810000
151*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART6_BASE	0x03860000
152*4882a593Smuzhiyun #define EXYNOS5420_PRO_ID		0x10000000
153*4882a593Smuzhiyun #define EXYNOS5420_CLOCK_BASE		0x10010000
154*4882a593Smuzhiyun #define EXYNOS5420_POWER_BASE		0x10040000
155*4882a593Smuzhiyun #define EXYNOS5420_SWRESET		0x10040400
156*4882a593Smuzhiyun #define EXYNOS5420_INFORM_BASE		0x10040800
157*4882a593Smuzhiyun #define EXYNOS5420_SPARE_BASE		0x10040900
158*4882a593Smuzhiyun #define EXYNOS5420_CPU_CONFIG_BASE	0x10042000
159*4882a593Smuzhiyun #define EXYNOS5420_CPU_STATUS_BASE	0x10042004
160*4882a593Smuzhiyun #define EXYNOS5420_SYSREG_BASE		0x10050000
161*4882a593Smuzhiyun #define EXYNOS5420_TZPC_BASE		0x100E0000
162*4882a593Smuzhiyun #define EXYNOS5420_WATCHDOG_BASE	0x101D0000
163*4882a593Smuzhiyun #define EXYNOS5420_ACE_SFR_BASE		0x10830000
164*4882a593Smuzhiyun #define EXYNOS5420_DMC_PHY_BASE		0x10C00000
165*4882a593Smuzhiyun #define EXYNOS5420_DMC_CTRL_BASE	0x10C20000
166*4882a593Smuzhiyun #define EXYNOS5420_DMC_TZASC_BASE	0x10D40000
167*4882a593Smuzhiyun #define EXYNOS5420_USB_HOST_EHCI_BASE	0x12110000
168*4882a593Smuzhiyun #define EXYNOS5420_MMC_BASE		0x12200000
169*4882a593Smuzhiyun #define EXYNOS5420_SROMC_BASE		0x12250000
170*4882a593Smuzhiyun #define EXYNOS5420_USB3PHY_BASE	0x12500000
171*4882a593Smuzhiyun #define EXYNOS5420_UART_BASE		0x12C00000
172*4882a593Smuzhiyun #define EXYNOS5420_I2C_BASE		0x12C60000
173*4882a593Smuzhiyun #define EXYNOS5420_I2C_8910_BASE	0x12E00000
174*4882a593Smuzhiyun #define EXYNOS5420_SPI_BASE		0x12D20000
175*4882a593Smuzhiyun #define EXYNOS5420_I2S_BASE		0x12D60000
176*4882a593Smuzhiyun #define EXYNOS5420_PWMTIMER_BASE	0x12DD0000
177*4882a593Smuzhiyun #define EXYNOS5420_SPI_ISP_BASE		0x131A0000
178*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART2_BASE	0x13400000
179*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART3_BASE	0x13400C00
180*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART4_BASE	0x13410000
181*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART5_BASE	0x14000000
182*4882a593Smuzhiyun #define EXYNOS5420_GPIO_PART1_BASE	0x14010000
183*4882a593Smuzhiyun #define EXYNOS5420_MIPI_DSIM_BASE	0x14500000
184*4882a593Smuzhiyun #define EXYNOS5420_DP_BASE		0x145B0000
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun #define EXYNOS5420_USBPHY_BASE		DEVICE_NOT_AVAILABLE
187*4882a593Smuzhiyun #define EXYNOS5420_USBOTG_BASE		DEVICE_NOT_AVAILABLE
188*4882a593Smuzhiyun #define EXYNOS5420_FIMD_BASE		DEVICE_NOT_AVAILABLE
189*4882a593Smuzhiyun #define EXYNOS5420_ADC_BASE		DEVICE_NOT_AVAILABLE
190*4882a593Smuzhiyun #define EXYNOS5420_MODEM_BASE		DEVICE_NOT_AVAILABLE
191*4882a593Smuzhiyun #define EXYNOS5420_USB_HOST_XHCI_BASE	DEVICE_NOT_AVAILABLE
192*4882a593Smuzhiyun 
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #ifndef __ASSEMBLY__
195*4882a593Smuzhiyun #include <asm/io.h>
196*4882a593Smuzhiyun /* CPU detection macros */
197*4882a593Smuzhiyun extern unsigned int s5p_cpu_id;
198*4882a593Smuzhiyun extern unsigned int s5p_cpu_rev;
199*4882a593Smuzhiyun 
s5p_get_cpu_rev(void)200*4882a593Smuzhiyun static inline int s5p_get_cpu_rev(void)
201*4882a593Smuzhiyun {
202*4882a593Smuzhiyun 	return s5p_cpu_rev;
203*4882a593Smuzhiyun }
204*4882a593Smuzhiyun 
s5p_set_cpu_id(void)205*4882a593Smuzhiyun static inline void s5p_set_cpu_id(void)
206*4882a593Smuzhiyun {
207*4882a593Smuzhiyun 	unsigned int pro_id = readl(EXYNOS4_PRO_ID);
208*4882a593Smuzhiyun 	unsigned int cpu_id = (pro_id & 0x00FFF000) >> 12;
209*4882a593Smuzhiyun 	unsigned int cpu_rev = pro_id & 0x000000FF;
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun 	switch (cpu_id) {
212*4882a593Smuzhiyun 	case 0x200:
213*4882a593Smuzhiyun 		/* Exynos4210 EVT0 */
214*4882a593Smuzhiyun 		s5p_cpu_id = 0x4210;
215*4882a593Smuzhiyun 		s5p_cpu_rev = 0;
216*4882a593Smuzhiyun 		break;
217*4882a593Smuzhiyun 	case 0x210:
218*4882a593Smuzhiyun 		/* Exynos4210 EVT1 */
219*4882a593Smuzhiyun 		s5p_cpu_id = 0x4210;
220*4882a593Smuzhiyun 		s5p_cpu_rev = cpu_rev;
221*4882a593Smuzhiyun 		break;
222*4882a593Smuzhiyun 	case 0x412:
223*4882a593Smuzhiyun 		/* Exynos4412 */
224*4882a593Smuzhiyun 		s5p_cpu_id = 0x4412;
225*4882a593Smuzhiyun 		s5p_cpu_rev = cpu_rev;
226*4882a593Smuzhiyun 		break;
227*4882a593Smuzhiyun 	case 0x520:
228*4882a593Smuzhiyun 		/* Exynos5250 */
229*4882a593Smuzhiyun 		s5p_cpu_id = 0x5250;
230*4882a593Smuzhiyun 		break;
231*4882a593Smuzhiyun 	case 0x420:
232*4882a593Smuzhiyun 		/* Exynos5420 */
233*4882a593Smuzhiyun 		s5p_cpu_id = 0x5420;
234*4882a593Smuzhiyun 		break;
235*4882a593Smuzhiyun 	case 0x422:
236*4882a593Smuzhiyun 		/*
237*4882a593Smuzhiyun 		 * Exynos5800 is a variant of Exynos5420
238*4882a593Smuzhiyun 		 * and has product id 0x5422
239*4882a593Smuzhiyun 		 */
240*4882a593Smuzhiyun 		s5p_cpu_id = 0x5422;
241*4882a593Smuzhiyun 		break;
242*4882a593Smuzhiyun 	}
243*4882a593Smuzhiyun }
244*4882a593Smuzhiyun 
s5p_get_cpu_name(void)245*4882a593Smuzhiyun static inline char *s5p_get_cpu_name(void)
246*4882a593Smuzhiyun {
247*4882a593Smuzhiyun 	return EXYNOS_CPU_NAME;
248*4882a593Smuzhiyun }
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun #define IS_SAMSUNG_TYPE(type, id)			\
251*4882a593Smuzhiyun static inline int __attribute__((no_instrument_function)) cpu_is_##type(void) \
252*4882a593Smuzhiyun {							\
253*4882a593Smuzhiyun 	return (s5p_cpu_id >> 12) == id;		\
254*4882a593Smuzhiyun }
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun IS_SAMSUNG_TYPE(exynos4, 0x4)
257*4882a593Smuzhiyun IS_SAMSUNG_TYPE(exynos5, 0x5)
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun #define IS_EXYNOS_TYPE(type, id)			\
260*4882a593Smuzhiyun static inline int __attribute__((no_instrument_function)) \
261*4882a593Smuzhiyun 	proid_is_##type(void)				\
262*4882a593Smuzhiyun {							\
263*4882a593Smuzhiyun 	return s5p_cpu_id == id;			\
264*4882a593Smuzhiyun }
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun IS_EXYNOS_TYPE(exynos4210, 0x4210)
267*4882a593Smuzhiyun IS_EXYNOS_TYPE(exynos4412, 0x4412)
268*4882a593Smuzhiyun IS_EXYNOS_TYPE(exynos5250, 0x5250)
269*4882a593Smuzhiyun IS_EXYNOS_TYPE(exynos5420, 0x5420)
270*4882a593Smuzhiyun IS_EXYNOS_TYPE(exynos5422, 0x5422)
271*4882a593Smuzhiyun 
272*4882a593Smuzhiyun #define SAMSUNG_BASE(device, base)				\
273*4882a593Smuzhiyun static inline unsigned long __attribute__((no_instrument_function)) \
274*4882a593Smuzhiyun 	samsung_get_base_##device(void) \
275*4882a593Smuzhiyun {								\
276*4882a593Smuzhiyun 	if (cpu_is_exynos4()) {				\
277*4882a593Smuzhiyun 		if (proid_is_exynos4412())			\
278*4882a593Smuzhiyun 			return EXYNOS4X12_##base;		\
279*4882a593Smuzhiyun 		return EXYNOS4_##base;				\
280*4882a593Smuzhiyun 	} else if (cpu_is_exynos5()) {				\
281*4882a593Smuzhiyun 		if (proid_is_exynos5420() || proid_is_exynos5422())	\
282*4882a593Smuzhiyun 			return EXYNOS5420_##base;		\
283*4882a593Smuzhiyun 		return EXYNOS5_##base;				\
284*4882a593Smuzhiyun 	}							\
285*4882a593Smuzhiyun 	return 0;						\
286*4882a593Smuzhiyun }
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun SAMSUNG_BASE(adc, ADC_BASE)
289*4882a593Smuzhiyun SAMSUNG_BASE(clock, CLOCK_BASE)
290*4882a593Smuzhiyun SAMSUNG_BASE(ace_sfr, ACE_SFR_BASE)
291*4882a593Smuzhiyun SAMSUNG_BASE(sysreg, SYSREG_BASE)
292*4882a593Smuzhiyun SAMSUNG_BASE(i2c, I2C_BASE)
293*4882a593Smuzhiyun SAMSUNG_BASE(i2s, I2S_BASE)
294*4882a593Smuzhiyun SAMSUNG_BASE(mipi_dsim, MIPI_DSIM_BASE)
295*4882a593Smuzhiyun SAMSUNG_BASE(gpio_part1, GPIO_PART1_BASE)
296*4882a593Smuzhiyun SAMSUNG_BASE(gpio_part2, GPIO_PART2_BASE)
297*4882a593Smuzhiyun SAMSUNG_BASE(gpio_part3, GPIO_PART3_BASE)
298*4882a593Smuzhiyun SAMSUNG_BASE(gpio_part4, GPIO_PART4_BASE)
299*4882a593Smuzhiyun SAMSUNG_BASE(pro_id, PRO_ID)
300*4882a593Smuzhiyun SAMSUNG_BASE(mmc, MMC_BASE)
301*4882a593Smuzhiyun SAMSUNG_BASE(modem, MODEM_BASE)
302*4882a593Smuzhiyun SAMSUNG_BASE(sromc, SROMC_BASE)
303*4882a593Smuzhiyun SAMSUNG_BASE(swreset, SWRESET)
304*4882a593Smuzhiyun SAMSUNG_BASE(timer, PWMTIMER_BASE)
305*4882a593Smuzhiyun SAMSUNG_BASE(uart, UART_BASE)
306*4882a593Smuzhiyun SAMSUNG_BASE(usb_phy, USBPHY_BASE)
307*4882a593Smuzhiyun SAMSUNG_BASE(usb3_phy, USB3PHY_BASE)
308*4882a593Smuzhiyun SAMSUNG_BASE(usb_ehci, USB_HOST_EHCI_BASE)
309*4882a593Smuzhiyun SAMSUNG_BASE(usb_xhci, USB_HOST_XHCI_BASE)
310*4882a593Smuzhiyun SAMSUNG_BASE(usb_otg, USBOTG_BASE)
311*4882a593Smuzhiyun SAMSUNG_BASE(watchdog, WATCHDOG_BASE)
312*4882a593Smuzhiyun SAMSUNG_BASE(power, POWER_BASE)
313*4882a593Smuzhiyun SAMSUNG_BASE(spi, SPI_BASE)
314*4882a593Smuzhiyun SAMSUNG_BASE(spi_isp, SPI_ISP_BASE)
315*4882a593Smuzhiyun SAMSUNG_BASE(tzpc, TZPC_BASE)
316*4882a593Smuzhiyun SAMSUNG_BASE(dmc_ctrl, DMC_CTRL_BASE)
317*4882a593Smuzhiyun SAMSUNG_BASE(dmc_phy, DMC_PHY_BASE)
318*4882a593Smuzhiyun SAMSUNG_BASE(dmc_tzasc, DMC_TZASC_BASE)
319*4882a593Smuzhiyun SAMSUNG_BASE(audio_ass, AUDIOSS_BASE)
320*4882a593Smuzhiyun #endif
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #endif	/* _EXYNOS4_CPU_H */
323