xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-omap3/cpu.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2006-2008
3*4882a593Smuzhiyun  * Texas Instruments, <www.ti.com>
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _CPU_H
9*4882a593Smuzhiyun #define _CPU_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
12*4882a593Smuzhiyun #include <asm/types.h>
13*4882a593Smuzhiyun #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* Register offsets of common modules */
16*4882a593Smuzhiyun /* Control */
17*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
18*4882a593Smuzhiyun #ifndef __ASSEMBLY__
19*4882a593Smuzhiyun struct ctrl {
20*4882a593Smuzhiyun 	u8 res1[0xC0];
21*4882a593Smuzhiyun 	u16 gpmc_nadv_ale;	/* 0xC0 */
22*4882a593Smuzhiyun 	u16 gpmc_noe;		/* 0xC2 */
23*4882a593Smuzhiyun 	u16 gpmc_nwe;		/* 0xC4 */
24*4882a593Smuzhiyun 	u8 res2[0x22A];
25*4882a593Smuzhiyun 	u32 status;		/* 0x2F0 */
26*4882a593Smuzhiyun 	u32 gpstatus;		/* 0x2F4 */
27*4882a593Smuzhiyun 	u8 res3[0x08];
28*4882a593Smuzhiyun 	u32 rpubkey_0;		/* 0x300 */
29*4882a593Smuzhiyun 	u32 rpubkey_1;		/* 0x304 */
30*4882a593Smuzhiyun 	u32 rpubkey_2;		/* 0x308 */
31*4882a593Smuzhiyun 	u32 rpubkey_3;		/* 0x30C */
32*4882a593Smuzhiyun 	u32 rpubkey_4;		/* 0x310 */
33*4882a593Smuzhiyun 	u8 res4[0x04];
34*4882a593Smuzhiyun 	u32 randkey_0;		/* 0x318 */
35*4882a593Smuzhiyun 	u32 randkey_1;		/* 0x31C */
36*4882a593Smuzhiyun 	u32 randkey_2;		/* 0x320 */
37*4882a593Smuzhiyun 	u32 randkey_3;		/* 0x324 */
38*4882a593Smuzhiyun 	u8 res5[0x124];
39*4882a593Smuzhiyun 	u32 ctrl_omap_stat;	/* 0x44C */
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun #else /* __ASSEMBLY__ */
42*4882a593Smuzhiyun #define CONTROL_STATUS		0x2F0
43*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
44*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
47*4882a593Smuzhiyun #ifndef __ASSEMBLY__
48*4882a593Smuzhiyun struct ctrl_id {
49*4882a593Smuzhiyun 	u8 res1[0x4];
50*4882a593Smuzhiyun 	u32 idcode;		/* 0x04 */
51*4882a593Smuzhiyun 	u32 prod_id;		/* 0x08 */
52*4882a593Smuzhiyun 	u32 sku_id;		/* 0x0c */
53*4882a593Smuzhiyun 	u8 res2[0x08];
54*4882a593Smuzhiyun 	u32 die_id_0;		/* 0x18 */
55*4882a593Smuzhiyun 	u32 die_id_1;		/* 0x1C */
56*4882a593Smuzhiyun 	u32 die_id_2;		/* 0x20 */
57*4882a593Smuzhiyun 	u32 die_id_3;		/* 0x24 */
58*4882a593Smuzhiyun };
59*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
60*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun /* boot pin mask */
63*4882a593Smuzhiyun #define SYSBOOT_MASK		0x1F
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun /* device speed */
66*4882a593Smuzhiyun #define SKUID_CLK_MASK		0xf
67*4882a593Smuzhiyun #define SKUID_CLK_600MHZ	0x0
68*4882a593Smuzhiyun #define SKUID_CLK_720MHZ	0x8
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define GPMC_BASE		(OMAP34XX_GPMC_BASE)
71*4882a593Smuzhiyun #define GPMC_CONFIG_CS0		0x60
72*4882a593Smuzhiyun #define GPMC_CONFIG_CS0_BASE	(GPMC_BASE + GPMC_CONFIG_CS0)
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
75*4882a593Smuzhiyun #ifdef __ASSEMBLY__
76*4882a593Smuzhiyun #define GPMC_CONFIG1		0x00
77*4882a593Smuzhiyun #define GPMC_CONFIG2		0x04
78*4882a593Smuzhiyun #define GPMC_CONFIG3		0x08
79*4882a593Smuzhiyun #define GPMC_CONFIG4		0x0C
80*4882a593Smuzhiyun #define GPMC_CONFIG5		0x10
81*4882a593Smuzhiyun #define GPMC_CONFIG6		0x14
82*4882a593Smuzhiyun #define GPMC_CONFIG7		0x18
83*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
84*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun /* GPMC Mapping */
87*4882a593Smuzhiyun #define FLASH_BASE		0x10000000	/* NOR flash, */
88*4882a593Smuzhiyun 						/* aligned to 256 Meg */
89*4882a593Smuzhiyun #define FLASH_BASE_SDPV1	0x04000000	/* NOR flash, */
90*4882a593Smuzhiyun 						/* aligned to 64 Meg */
91*4882a593Smuzhiyun #define FLASH_BASE_SDPV2	0x10000000	/* NOR flash, */
92*4882a593Smuzhiyun 						/* aligned to 256 Meg */
93*4882a593Smuzhiyun #define DEBUG_BASE		0x08000000	/* debug board */
94*4882a593Smuzhiyun #define NAND_BASE		0x30000000	/* NAND addr */
95*4882a593Smuzhiyun 						/* (actual size small port) */
96*4882a593Smuzhiyun #define ONENAND_MAP		0x20000000	/* OneNand addr */
97*4882a593Smuzhiyun 						/* (actual size small port) */
98*4882a593Smuzhiyun /* SMS */
99*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
100*4882a593Smuzhiyun #ifndef __ASSEMBLY__
101*4882a593Smuzhiyun struct sms {
102*4882a593Smuzhiyun 	u8 res1[0x10];
103*4882a593Smuzhiyun 	u32 sysconfig;		/* 0x10 */
104*4882a593Smuzhiyun 	u8 res2[0x34];
105*4882a593Smuzhiyun 	u32 rg_att0;		/* 0x48 */
106*4882a593Smuzhiyun 	u8 res3[0x84];
107*4882a593Smuzhiyun 	u32 class_arb0;		/* 0xD0 */
108*4882a593Smuzhiyun };
109*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
110*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun #define BURSTCOMPLETE_GROUP7	(0x1 << 31)
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun /* SDRC */
115*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
116*4882a593Smuzhiyun #ifndef __ASSEMBLY__
117*4882a593Smuzhiyun struct sdrc_cs {
118*4882a593Smuzhiyun 	u32 mcfg;		/* 0x80 || 0xB0 */
119*4882a593Smuzhiyun 	u32 mr;			/* 0x84 || 0xB4 */
120*4882a593Smuzhiyun 	u8 res1[0x4];
121*4882a593Smuzhiyun 	u32 emr2;		/* 0x8C || 0xBC */
122*4882a593Smuzhiyun 	u8 res2[0x14];
123*4882a593Smuzhiyun 	u32 rfr_ctrl;		/* 0x84 || 0xD4 */
124*4882a593Smuzhiyun 	u32 manual;		/* 0xA8 || 0xD8 */
125*4882a593Smuzhiyun 	u8 res3[0x4];
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun struct sdrc_actim {
129*4882a593Smuzhiyun 	u32 ctrla;		/* 0x9C || 0xC4 */
130*4882a593Smuzhiyun 	u32 ctrlb;		/* 0xA0 || 0xC8 */
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun struct sdrc {
134*4882a593Smuzhiyun 	u8 res1[0x10];
135*4882a593Smuzhiyun 	u32 sysconfig;		/* 0x10 */
136*4882a593Smuzhiyun 	u32 status;		/* 0x14 */
137*4882a593Smuzhiyun 	u8 res2[0x28];
138*4882a593Smuzhiyun 	u32 cs_cfg;		/* 0x40 */
139*4882a593Smuzhiyun 	u32 sharing;		/* 0x44 */
140*4882a593Smuzhiyun 	u8 res3[0x18];
141*4882a593Smuzhiyun 	u32 dlla_ctrl;		/* 0x60 */
142*4882a593Smuzhiyun 	u32 dlla_status;	/* 0x64 */
143*4882a593Smuzhiyun 	u32 dllb_ctrl;		/* 0x68 */
144*4882a593Smuzhiyun 	u32 dllb_status;	/* 0x6C */
145*4882a593Smuzhiyun 	u32 power;		/* 0x70 */
146*4882a593Smuzhiyun 	u8 res4[0xC];
147*4882a593Smuzhiyun 	struct sdrc_cs cs[2];	/* 0x80 || 0xB0 */
148*4882a593Smuzhiyun };
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun /* EMIF4 */
151*4882a593Smuzhiyun typedef struct emif4 {
152*4882a593Smuzhiyun 	unsigned int emif_mod_id_rev;
153*4882a593Smuzhiyun 	unsigned int sdram_sts;
154*4882a593Smuzhiyun 	unsigned int sdram_config;
155*4882a593Smuzhiyun 	unsigned int res1;
156*4882a593Smuzhiyun 	unsigned int sdram_refresh_ctrl;
157*4882a593Smuzhiyun 	unsigned int sdram_refresh_ctrl_shdw;
158*4882a593Smuzhiyun 	unsigned int sdram_time1;
159*4882a593Smuzhiyun 	unsigned int sdram_time1_shdw;
160*4882a593Smuzhiyun 	unsigned int sdram_time2;
161*4882a593Smuzhiyun 	unsigned int sdram_time2_shdw;
162*4882a593Smuzhiyun 	unsigned int sdram_time3;
163*4882a593Smuzhiyun 	unsigned int sdram_time3_shdw;
164*4882a593Smuzhiyun 	unsigned char res2[8];
165*4882a593Smuzhiyun 	unsigned int sdram_pwr_mgmt;
166*4882a593Smuzhiyun 	unsigned int sdram_pwr_mgmt_shdw;
167*4882a593Smuzhiyun 	unsigned char res3[32];
168*4882a593Smuzhiyun 	unsigned int sdram_iodft_tlgc;
169*4882a593Smuzhiyun 	unsigned char res4[128];
170*4882a593Smuzhiyun 	unsigned int ddr_phyctrl1;
171*4882a593Smuzhiyun 	unsigned int ddr_phyctrl1_shdw;
172*4882a593Smuzhiyun 	unsigned int ddr_phyctrl2;
173*4882a593Smuzhiyun } emif4_t;
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
176*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define DLLPHASE_90		(0x1 << 1)
179*4882a593Smuzhiyun #define LOADDLL			(0x1 << 2)
180*4882a593Smuzhiyun #define ENADLL			(0x1 << 3)
181*4882a593Smuzhiyun #define DLL_DELAY_MASK		0xFF00
182*4882a593Smuzhiyun #define DLL_NO_FILTER_MASK	((0x1 << 9) | (0x1 << 8))
183*4882a593Smuzhiyun 
184*4882a593Smuzhiyun #define PAGEPOLICY_HIGH		(0x1 << 0)
185*4882a593Smuzhiyun #define SRFRONRESET		(0x1 << 7)
186*4882a593Smuzhiyun #define PWDNEN			(0x1 << 2)
187*4882a593Smuzhiyun #define WAKEUPPROC		(0x1 << 26)
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun #define DDR_SDRAM		(0x1 << 0)
190*4882a593Smuzhiyun #define DEEPPD			(0x1 << 3)
191*4882a593Smuzhiyun #define B32NOT16		(0x1 << 4)
192*4882a593Smuzhiyun #define BANKALLOCATION		(0x2 << 6)
193*4882a593Smuzhiyun #define RAMSIZE_128		(0x40 << 8) /* RAM size in 2MB chunks */
194*4882a593Smuzhiyun #define ADDRMUXLEGACY		(0x1 << 19)
195*4882a593Smuzhiyun #define CASWIDTH_10BITS		(0x5 << 20)
196*4882a593Smuzhiyun #define RASWIDTH_13BITS		(0x2 << 24)
197*4882a593Smuzhiyun #define BURSTLENGTH4		(0x2 << 0)
198*4882a593Smuzhiyun #define CASL3			(0x3 << 4)
199*4882a593Smuzhiyun #define SDRC_ACTIM_CTRL0_BASE	(OMAP34XX_SDRC_BASE + 0x9C)
200*4882a593Smuzhiyun #define SDRC_ACTIM_CTRL1_BASE	(OMAP34XX_SDRC_BASE + 0xC4)
201*4882a593Smuzhiyun #define ARE_ARCV_1		(0x1 << 0)
202*4882a593Smuzhiyun #define ARCV			(0x4e2 << 8) /* Autorefresh count */
203*4882a593Smuzhiyun #define OMAP34XX_SDRC_CS0	0x80000000
204*4882a593Smuzhiyun #define OMAP34XX_SDRC_CS1	0xA0000000
205*4882a593Smuzhiyun #define CMD_NOP			0x0
206*4882a593Smuzhiyun #define CMD_PRECHARGE		0x1
207*4882a593Smuzhiyun #define CMD_AUTOREFRESH		0x2
208*4882a593Smuzhiyun #define CMD_ENTR_PWRDOWN	0x3
209*4882a593Smuzhiyun #define CMD_EXIT_PWRDOWN	0x4
210*4882a593Smuzhiyun #define CMD_ENTR_SRFRSH		0x5
211*4882a593Smuzhiyun #define CMD_CKE_HIGH		0x6
212*4882a593Smuzhiyun #define CMD_CKE_LOW		0x7
213*4882a593Smuzhiyun #define SOFTRESET		(0x1 << 1)
214*4882a593Smuzhiyun #define SMART_IDLE		(0x2 << 3)
215*4882a593Smuzhiyun #define REF_ON_IDLE		(0x1 << 6)
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun /* DMA */
218*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
219*4882a593Smuzhiyun #ifndef __ASSEMBLY__
220*4882a593Smuzhiyun struct dma4_chan {
221*4882a593Smuzhiyun 	u32 ccr;
222*4882a593Smuzhiyun 	u32 clnk_ctrl;
223*4882a593Smuzhiyun 	u32 cicr;
224*4882a593Smuzhiyun 	u32 csr;
225*4882a593Smuzhiyun 	u32 csdp;
226*4882a593Smuzhiyun 	u32 cen;
227*4882a593Smuzhiyun 	u32 cfn;
228*4882a593Smuzhiyun 	u32 cssa;
229*4882a593Smuzhiyun 	u32 cdsa;
230*4882a593Smuzhiyun 	u32 csel;
231*4882a593Smuzhiyun 	u32 csfl;
232*4882a593Smuzhiyun 	u32 cdel;
233*4882a593Smuzhiyun 	u32 cdfl;
234*4882a593Smuzhiyun 	u32 csac;
235*4882a593Smuzhiyun 	u32 cdac;
236*4882a593Smuzhiyun 	u32 ccen;
237*4882a593Smuzhiyun 	u32 ccfn;
238*4882a593Smuzhiyun 	u32 color;
239*4882a593Smuzhiyun };
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun struct dma4 {
242*4882a593Smuzhiyun 	u32 revision;
243*4882a593Smuzhiyun 	u8 res1[0x4];
244*4882a593Smuzhiyun 	u32 irqstatus_l[0x4];
245*4882a593Smuzhiyun 	u32 irqenable_l[0x4];
246*4882a593Smuzhiyun 	u32 sysstatus;
247*4882a593Smuzhiyun 	u32 ocp_sysconfig;
248*4882a593Smuzhiyun 	u8 res2[0x34];
249*4882a593Smuzhiyun 	u32 caps_0;
250*4882a593Smuzhiyun 	u8 res3[0x4];
251*4882a593Smuzhiyun 	u32 caps_2;
252*4882a593Smuzhiyun 	u32 caps_3;
253*4882a593Smuzhiyun 	u32 caps_4;
254*4882a593Smuzhiyun 	u32 gcr;
255*4882a593Smuzhiyun 	u8 res4[0x4];
256*4882a593Smuzhiyun 	struct dma4_chan chan[32];
257*4882a593Smuzhiyun };
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun #endif /*__ASSEMBLY__ */
260*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun /* timer regs offsets (32 bit regs) */
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
265*4882a593Smuzhiyun #ifndef __ASSEMBLY__
266*4882a593Smuzhiyun struct gptimer {
267*4882a593Smuzhiyun 	u32 tidr;	/* 0x00 r */
268*4882a593Smuzhiyun 	u8 res[0xc];
269*4882a593Smuzhiyun 	u32 tiocp_cfg;	/* 0x10 rw */
270*4882a593Smuzhiyun 	u32 tistat;	/* 0x14 r */
271*4882a593Smuzhiyun 	u32 tisr;	/* 0x18 rw */
272*4882a593Smuzhiyun 	u32 tier;	/* 0x1c rw */
273*4882a593Smuzhiyun 	u32 twer;	/* 0x20 rw */
274*4882a593Smuzhiyun 	u32 tclr;	/* 0x24 rw */
275*4882a593Smuzhiyun 	u32 tcrr;	/* 0x28 rw */
276*4882a593Smuzhiyun 	u32 tldr;	/* 0x2c rw */
277*4882a593Smuzhiyun 	u32 ttgr;	/* 0x30 rw */
278*4882a593Smuzhiyun 	u32 twpc;	/* 0x34 r*/
279*4882a593Smuzhiyun 	u32 tmar;	/* 0x38 rw*/
280*4882a593Smuzhiyun 	u32 tcar1;	/* 0x3c r */
281*4882a593Smuzhiyun 	u32 tcicr;	/* 0x40 rw */
282*4882a593Smuzhiyun 	u32 tcar2;	/* 0x44 r */
283*4882a593Smuzhiyun };
284*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
285*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun /* enable sys_clk NO-prescale /1 */
288*4882a593Smuzhiyun #define GPT_EN			((0x0 << 2) | (0x1 << 1) | (0x1 << 0))
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun /* Watchdog */
291*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
292*4882a593Smuzhiyun #ifndef __ASSEMBLY__
293*4882a593Smuzhiyun struct watchdog {
294*4882a593Smuzhiyun 	u8 res1[0x34];
295*4882a593Smuzhiyun 	u32 wwps;	/* 0x34 r */
296*4882a593Smuzhiyun 	u8 res2[0x10];
297*4882a593Smuzhiyun 	u32 wspr;	/* 0x48 rw */
298*4882a593Smuzhiyun };
299*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
300*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun #define WD_UNLOCK1		0xAAAA
303*4882a593Smuzhiyun #define WD_UNLOCK2		0x5555
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun /* PRCM */
306*4882a593Smuzhiyun #define PRCM_BASE		0x48004000
307*4882a593Smuzhiyun 
308*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
309*4882a593Smuzhiyun #ifndef __ASSEMBLY__
310*4882a593Smuzhiyun struct prcm {
311*4882a593Smuzhiyun 	u32 fclken_iva2;	/* 0x00 */
312*4882a593Smuzhiyun 	u32 clken_pll_iva2;	/* 0x04 */
313*4882a593Smuzhiyun 	u8 res1[0x1c];
314*4882a593Smuzhiyun 	u32 idlest_pll_iva2;	/* 0x24 */
315*4882a593Smuzhiyun 	u8 res2[0x18];
316*4882a593Smuzhiyun 	u32 clksel1_pll_iva2 ;	/* 0x40 */
317*4882a593Smuzhiyun 	u32 clksel2_pll_iva2;	/* 0x44 */
318*4882a593Smuzhiyun 	u8 res3[0x8bc];
319*4882a593Smuzhiyun 	u32 clken_pll_mpu;	/* 0x904 */
320*4882a593Smuzhiyun 	u8 res4[0x1c];
321*4882a593Smuzhiyun 	u32 idlest_pll_mpu;	/* 0x924 */
322*4882a593Smuzhiyun 	u8 res5[0x18];
323*4882a593Smuzhiyun 	u32 clksel1_pll_mpu;	/* 0x940 */
324*4882a593Smuzhiyun 	u32 clksel2_pll_mpu;	/* 0x944 */
325*4882a593Smuzhiyun 	u8 res6[0xb8];
326*4882a593Smuzhiyun 	u32 fclken1_core;	/* 0xa00 */
327*4882a593Smuzhiyun 	u32 res_fclken2_core;
328*4882a593Smuzhiyun 	u32 fclken3_core;	/* 0xa08 */
329*4882a593Smuzhiyun 	u8 res7[0x4];
330*4882a593Smuzhiyun 	u32 iclken1_core;	/* 0xa10 */
331*4882a593Smuzhiyun 	u32 iclken2_core;	/* 0xa14 */
332*4882a593Smuzhiyun 	u32 iclken3_core;	/* 0xa18 */
333*4882a593Smuzhiyun 	u8 res8[0x24];
334*4882a593Smuzhiyun 	u32 clksel_core;	/* 0xa40 */
335*4882a593Smuzhiyun 	u8 res9[0xbc];
336*4882a593Smuzhiyun 	u32 fclken_gfx;		/* 0xb00 */
337*4882a593Smuzhiyun 	u8 res10[0xc];
338*4882a593Smuzhiyun 	u32 iclken_gfx;		/* 0xb10 */
339*4882a593Smuzhiyun 	u8 res11[0x2c];
340*4882a593Smuzhiyun 	u32 clksel_gfx;		/* 0xb40 */
341*4882a593Smuzhiyun 	u8 res12[0xbc];
342*4882a593Smuzhiyun 	u32 fclken_wkup;	/* 0xc00 */
343*4882a593Smuzhiyun 	u8 res13[0xc];
344*4882a593Smuzhiyun 	u32 iclken_wkup;	/* 0xc10 */
345*4882a593Smuzhiyun 	u8 res14[0xc];
346*4882a593Smuzhiyun 	u32 idlest_wkup;	/* 0xc20 */
347*4882a593Smuzhiyun 	u8 res15[0x1c];
348*4882a593Smuzhiyun 	u32 clksel_wkup;	/* 0xc40 */
349*4882a593Smuzhiyun 	u8 res16[0xbc];
350*4882a593Smuzhiyun 	u32 clken_pll;		/* 0xd00 */
351*4882a593Smuzhiyun 	u32 clken2_pll;	        /* 0xd04 */
352*4882a593Smuzhiyun 	u8 res17[0x18];
353*4882a593Smuzhiyun 	u32 idlest_ckgen;	/* 0xd20 */
354*4882a593Smuzhiyun 	u32 idlest2_ckgen;	/* 0xd24 */
355*4882a593Smuzhiyun 	u8 res18[0x18];
356*4882a593Smuzhiyun 	u32 clksel1_pll;	/* 0xd40 */
357*4882a593Smuzhiyun 	u32 clksel2_pll;	/* 0xd44 */
358*4882a593Smuzhiyun 	u32 clksel3_pll;	/* 0xd48 */
359*4882a593Smuzhiyun 	u32 clksel4_pll;	/* 0xd4c */
360*4882a593Smuzhiyun 	u32 clksel5_pll;	/* 0xd50 */
361*4882a593Smuzhiyun 	u8 res19[0xac];
362*4882a593Smuzhiyun 	u32 fclken_dss;		/* 0xe00 */
363*4882a593Smuzhiyun 	u8 res20[0xc];
364*4882a593Smuzhiyun 	u32 iclken_dss;		/* 0xe10 */
365*4882a593Smuzhiyun 	u8 res21[0x2c];
366*4882a593Smuzhiyun 	u32 clksel_dss;		/* 0xe40 */
367*4882a593Smuzhiyun 	u8 res22[0xbc];
368*4882a593Smuzhiyun 	u32 fclken_cam;		/* 0xf00 */
369*4882a593Smuzhiyun 	u8 res23[0xc];
370*4882a593Smuzhiyun 	u32 iclken_cam;		/* 0xf10 */
371*4882a593Smuzhiyun 	u8 res24[0x2c];
372*4882a593Smuzhiyun 	u32 clksel_cam;		/* 0xf40 */
373*4882a593Smuzhiyun 	u8 res25[0xbc];
374*4882a593Smuzhiyun 	u32 fclken_per;		/* 0x1000 */
375*4882a593Smuzhiyun 	u8 res26[0xc];
376*4882a593Smuzhiyun 	u32 iclken_per;		/* 0x1010 */
377*4882a593Smuzhiyun 	u8 res27[0x2c];
378*4882a593Smuzhiyun 	u32 clksel_per;		/* 0x1040 */
379*4882a593Smuzhiyun 	u8 res28[0xfc];
380*4882a593Smuzhiyun 	u32 clksel1_emu;	/* 0x1140 */
381*4882a593Smuzhiyun 	u8 res29[0x2bc];
382*4882a593Smuzhiyun 	u32 fclken_usbhost;	/* 0x1400 */
383*4882a593Smuzhiyun 	u8 res30[0xc];
384*4882a593Smuzhiyun 	u32 iclken_usbhost;	/* 0x1410 */
385*4882a593Smuzhiyun };
386*4882a593Smuzhiyun #else /* __ASSEMBLY__ */
387*4882a593Smuzhiyun #define CM_CLKSEL_CORE		0x48004a40
388*4882a593Smuzhiyun #define CM_CLKSEL_GFX		0x48004b40
389*4882a593Smuzhiyun #define CM_CLKSEL_WKUP		0x48004c40
390*4882a593Smuzhiyun #define CM_CLKEN_PLL		0x48004d00
391*4882a593Smuzhiyun #define CM_CLKSEL1_PLL		0x48004d40
392*4882a593Smuzhiyun #define CM_CLKSEL1_EMU		0x48005140
393*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
394*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
395*4882a593Smuzhiyun 
396*4882a593Smuzhiyun #define PRM_BASE		0x48306000
397*4882a593Smuzhiyun 
398*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
399*4882a593Smuzhiyun #ifndef __ASSEMBLY__
400*4882a593Smuzhiyun struct prm {
401*4882a593Smuzhiyun 	u8 res1[0xd40];
402*4882a593Smuzhiyun 	u32 clksel;		/* 0xd40 */
403*4882a593Smuzhiyun 	u8 res2[0x50c];
404*4882a593Smuzhiyun 	u32 rstctrl;		/* 0x1250 */
405*4882a593Smuzhiyun 	u8 res3[0x1c];
406*4882a593Smuzhiyun 	u32 clksrc_ctrl;	/* 0x1270 */
407*4882a593Smuzhiyun };
408*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
409*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
410*4882a593Smuzhiyun 
411*4882a593Smuzhiyun #define PRM_RSTCTRL		0x48307250
412*4882a593Smuzhiyun #define PRM_RSTCTRL_RESET	0x04
413*4882a593Smuzhiyun #define PRM_RSTST			0x48307258
414*4882a593Smuzhiyun #define PRM_RSTST_WARM_RESET_MASK	0x7D2
415*4882a593Smuzhiyun #define SYSCLKDIV_1		(0x1 << 6)
416*4882a593Smuzhiyun #define SYSCLKDIV_2		(0x1 << 7)
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun #define CLKSEL_GPT1		(0x1 << 0)
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun #define EN_GPT1			(0x1 << 0)
421*4882a593Smuzhiyun #define EN_32KSYNC		(0x1 << 2)
422*4882a593Smuzhiyun 
423*4882a593Smuzhiyun #define ST_WDT2			(0x1 << 5)
424*4882a593Smuzhiyun 
425*4882a593Smuzhiyun #define ST_MPU_CLK		(0x1 << 0)
426*4882a593Smuzhiyun 
427*4882a593Smuzhiyun #define ST_CORE_CLK		(0x1 << 0)
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun #define ST_PERIPH_CLK		(0x1 << 1)
430*4882a593Smuzhiyun 
431*4882a593Smuzhiyun #define ST_IVA2_CLK		(0x1 << 0)
432*4882a593Smuzhiyun 
433*4882a593Smuzhiyun #define RESETDONE		(0x1 << 0)
434*4882a593Smuzhiyun 
435*4882a593Smuzhiyun #define TCLR_ST			(0x1 << 0)
436*4882a593Smuzhiyun #define TCLR_AR			(0x1 << 1)
437*4882a593Smuzhiyun #define TCLR_PRE		(0x1 << 5)
438*4882a593Smuzhiyun 
439*4882a593Smuzhiyun /* SMX-APE */
440*4882a593Smuzhiyun #define PM_RT_APE_BASE_ADDR_ARM		(SMX_APE_BASE + 0x10000)
441*4882a593Smuzhiyun #define PM_GPMC_BASE_ADDR_ARM		(SMX_APE_BASE + 0x12400)
442*4882a593Smuzhiyun #define PM_OCM_RAM_BASE_ADDR_ARM	(SMX_APE_BASE + 0x12800)
443*4882a593Smuzhiyun #define PM_IVA2_BASE_ADDR_ARM		(SMX_APE_BASE + 0x14000)
444*4882a593Smuzhiyun 
445*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES
446*4882a593Smuzhiyun #ifndef __ASSEMBLY__
447*4882a593Smuzhiyun struct pm {
448*4882a593Smuzhiyun 	u8 res1[0x48];
449*4882a593Smuzhiyun 	u32 req_info_permission_0;	/* 0x48 */
450*4882a593Smuzhiyun 	u8 res2[0x4];
451*4882a593Smuzhiyun 	u32 read_permission_0;		/* 0x50 */
452*4882a593Smuzhiyun 	u8 res3[0x4];
453*4882a593Smuzhiyun 	u32 wirte_permission_0;		/* 0x58 */
454*4882a593Smuzhiyun 	u8 res4[0x4];
455*4882a593Smuzhiyun 	u32 addr_match_1;		/* 0x58 */
456*4882a593Smuzhiyun 	u8 res5[0x4];
457*4882a593Smuzhiyun 	u32 req_info_permission_1;	/* 0x68 */
458*4882a593Smuzhiyun 	u8 res6[0x14];
459*4882a593Smuzhiyun 	u32 addr_match_2;		/* 0x80 */
460*4882a593Smuzhiyun };
461*4882a593Smuzhiyun #endif /*__ASSEMBLY__ */
462*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */
463*4882a593Smuzhiyun 
464*4882a593Smuzhiyun /* Permission values for registers -Full fledged permissions to all */
465*4882a593Smuzhiyun #define UNLOCK_1			0xFFFFFFFF
466*4882a593Smuzhiyun #define UNLOCK_2			0x00000000
467*4882a593Smuzhiyun #define UNLOCK_3			0x0000FFFF
468*4882a593Smuzhiyun 
469*4882a593Smuzhiyun #define NOT_EARLY			0
470*4882a593Smuzhiyun 
471*4882a593Smuzhiyun /* I2C base */
472*4882a593Smuzhiyun #define I2C_BASE1		(OMAP34XX_CORE_L4_IO_BASE + 0x70000)
473*4882a593Smuzhiyun #define I2C_BASE2		(OMAP34XX_CORE_L4_IO_BASE + 0x72000)
474*4882a593Smuzhiyun #define I2C_BASE3		(OMAP34XX_CORE_L4_IO_BASE + 0x60000)
475*4882a593Smuzhiyun 
476*4882a593Smuzhiyun /* MUSB base */
477*4882a593Smuzhiyun #define MUSB_BASE		(OMAP34XX_CORE_L4_IO_BASE + 0xAB000)
478*4882a593Smuzhiyun 
479*4882a593Smuzhiyun /* OMAP3 GPIO registers */
480*4882a593Smuzhiyun #define OMAP_GPIO_REVISION		0x0000
481*4882a593Smuzhiyun #define OMAP_GPIO_SYSCONFIG		0x0010
482*4882a593Smuzhiyun #define OMAP_GPIO_SYSSTATUS		0x0014
483*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS1		0x0018
484*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS2		0x0028
485*4882a593Smuzhiyun #define OMAP_GPIO_IRQENABLE2		0x002c
486*4882a593Smuzhiyun #define OMAP_GPIO_IRQENABLE1		0x001c
487*4882a593Smuzhiyun #define OMAP_GPIO_WAKE_EN		0x0020
488*4882a593Smuzhiyun #define OMAP_GPIO_CTRL			0x0030
489*4882a593Smuzhiyun #define OMAP_GPIO_OE			0x0034
490*4882a593Smuzhiyun #define OMAP_GPIO_DATAIN		0x0038
491*4882a593Smuzhiyun #define OMAP_GPIO_DATAOUT		0x003c
492*4882a593Smuzhiyun #define OMAP_GPIO_LEVELDETECT0		0x0040
493*4882a593Smuzhiyun #define OMAP_GPIO_LEVELDETECT1		0x0044
494*4882a593Smuzhiyun #define OMAP_GPIO_RISINGDETECT		0x0048
495*4882a593Smuzhiyun #define OMAP_GPIO_FALLINGDETECT		0x004c
496*4882a593Smuzhiyun #define OMAP_GPIO_DEBOUNCE_EN		0x0050
497*4882a593Smuzhiyun #define OMAP_GPIO_DEBOUNCE_VAL		0x0054
498*4882a593Smuzhiyun #define OMAP_GPIO_CLEARIRQENABLE1	0x0060
499*4882a593Smuzhiyun #define OMAP_GPIO_SETIRQENABLE1		0x0064
500*4882a593Smuzhiyun #define OMAP_GPIO_CLEARWKUENA		0x0080
501*4882a593Smuzhiyun #define OMAP_GPIO_SETWKUENA		0x0084
502*4882a593Smuzhiyun #define OMAP_GPIO_CLEARDATAOUT		0x0090
503*4882a593Smuzhiyun #define OMAP_GPIO_SETDATAOUT		0x0094
504*4882a593Smuzhiyun 
505*4882a593Smuzhiyun #endif /* _CPU_H */
506