xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-rmobile/include/mach/sh73a0.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #ifndef __ASM_ARCH_RMOBILE_SH73A0_H
2*4882a593Smuzhiyun #define __ASM_ARCH_RMOBILE_SH73A0_H
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun /* Global Timer */
5*4882a593Smuzhiyun #define GLOBAL_TIMER_BASE_ADDR	(0xF0000200)
6*4882a593Smuzhiyun #define MERAM_BASE	(0xE5580000)
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /* GIC */
9*4882a593Smuzhiyun #define GIC_BASE	(0xF0000100)
10*4882a593Smuzhiyun #define ICCICR	GIC_BASE
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /* Secure control register */
13*4882a593Smuzhiyun #define LIFEC_SEC_SRC	(0xE6110008)
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* RWDT */
16*4882a593Smuzhiyun #define	RWDT_BASE   (0xE6020000)
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* HPB Semaphore Control Registers */
19*4882a593Smuzhiyun #define HPB_BASE	(0xE6001010)
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /* Bus Semaphore Control Registers */
22*4882a593Smuzhiyun #define HPBSCR_BASE (0xE6001600)
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /* SBSC1 */
25*4882a593Smuzhiyun #define SBSC1_BASE	(0xFE400000)
26*4882a593Smuzhiyun #define	SDMRA1A		(SBSC1_BASE + 0x100000)
27*4882a593Smuzhiyun #define	SDMRA2A		(SBSC1_BASE + 0x1C0000)
28*4882a593Smuzhiyun #define	SDMRA3A		(SBSC1_BASE + 0x104000)
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /* SBSC2 */
31*4882a593Smuzhiyun #define SBSC2_BASE	(0xFB400000)
32*4882a593Smuzhiyun #define	SDMRA1B		(SBSC2_BASE + 0x100000)
33*4882a593Smuzhiyun #define	SDMRA2B		(SBSC2_BASE + 0x1C0000)
34*4882a593Smuzhiyun #define	SDMRA3B		(SBSC2_BASE + 0x104000)
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun /* CPG */
37*4882a593Smuzhiyun #define CPG_BASE   (0xE6150000)
38*4882a593Smuzhiyun #define	CPG_SRCR_BASE	(CPG_BASE + 0x80A0)
39*4882a593Smuzhiyun #define WUPCR	(CPG_BASE + 0x1010)
40*4882a593Smuzhiyun #define SRESCR	(CPG_BASE + 0x1018)
41*4882a593Smuzhiyun #define PCLKCR	(CPG_BASE + 0x1020)
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun /* SYSC */
44*4882a593Smuzhiyun #define SYSC_BASE   (0xE6180000)
45*4882a593Smuzhiyun #define RESCNT2	(SYSC_BASE + 0x8020)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* BSC */
48*4882a593Smuzhiyun #define BSC_BASE (0xFEC10000)
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun /* SCIF */
51*4882a593Smuzhiyun #define SCIF0_BASE	(0xE6C40000)
52*4882a593Smuzhiyun #define SCIF1_BASE	(0xE6C50000)
53*4882a593Smuzhiyun #define SCIF2_BASE	(0xE6C60000)
54*4882a593Smuzhiyun #define SCIF3_BASE	(0xE6C70000)
55*4882a593Smuzhiyun #define SCIF4_BASE	(0xE6C80000)
56*4882a593Smuzhiyun #define SCIF5_BASE	(0xE6CB0000)
57*4882a593Smuzhiyun #define SCIF6_BASE	(0xE6CC0000)
58*4882a593Smuzhiyun #define SCIF7_BASE	(0xE6CD0000)
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun #ifndef __ASSEMBLY__
61*4882a593Smuzhiyun #include <asm/types.h>
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* RWDT */
64*4882a593Smuzhiyun struct sh73a0_rwdt {
65*4882a593Smuzhiyun 	u16 rwtcnt0;	/* 0x00 */
66*4882a593Smuzhiyun 	u16 dummy0;	/* 0x02 */
67*4882a593Smuzhiyun 	u16 rwtcsra0;	/* 0x04 */
68*4882a593Smuzhiyun 	u16 dummy1;	/* 0x06 */
69*4882a593Smuzhiyun 	u16 rwtcsrb0;	/* 0x08 */
70*4882a593Smuzhiyun };
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /* HPB Semaphore Control Registers */
73*4882a593Smuzhiyun struct sh73a0_hpb {
74*4882a593Smuzhiyun 	u32 hpbctrl0;
75*4882a593Smuzhiyun 	u32 hpbctrl1;
76*4882a593Smuzhiyun 	u32 hpbctrl2;
77*4882a593Smuzhiyun 	u32 cccr;
78*4882a593Smuzhiyun 	u32 dummy0; /* 0x20 */
79*4882a593Smuzhiyun 	u32 hpbctrl4;
80*4882a593Smuzhiyun 	u32 hpbctrl5;
81*4882a593Smuzhiyun 	u32 dummy1; /* 0x2C */
82*4882a593Smuzhiyun 	u32 hpbctrl6;
83*4882a593Smuzhiyun };
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /* Bus Semaphore Control Registers */
86*4882a593Smuzhiyun struct sh73a0_hpb_bscr {
87*4882a593Smuzhiyun 	u32 mpsrc; /* 0x00 */
88*4882a593Smuzhiyun 	u32 mpacctl; /* 0x04 */
89*4882a593Smuzhiyun 	u32 dummy0[6];
90*4882a593Smuzhiyun 	u32 smgpiosrc; /* 0x20 */
91*4882a593Smuzhiyun 	u32 smgpioerr;
92*4882a593Smuzhiyun 	u32 smgpiotime;
93*4882a593Smuzhiyun 	u32 smgpiocnt;
94*4882a593Smuzhiyun 	u32 dummy1[4]; /* 0x30 .. 0x3C */
95*4882a593Smuzhiyun 	u32 smcmt2src;
96*4882a593Smuzhiyun 	u32 smcmt2err;
97*4882a593Smuzhiyun 	u32 smcmt2time;
98*4882a593Smuzhiyun 	u32 smcmt2cnt;
99*4882a593Smuzhiyun 	u32 smcpgsrc;
100*4882a593Smuzhiyun 	u32 smcpgerr;
101*4882a593Smuzhiyun 	u32 smcpgtime;
102*4882a593Smuzhiyun 	u32 smcpgcnt;
103*4882a593Smuzhiyun 	u32 dummy2[4]; /* 0x60 - 0x6C */
104*4882a593Smuzhiyun 	u32 smsyscsrc;
105*4882a593Smuzhiyun 	u32 smsyscerr;
106*4882a593Smuzhiyun 	u32 smsysctime;
107*4882a593Smuzhiyun 	u32 smsysccnt;
108*4882a593Smuzhiyun };
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun /* SBSC */
111*4882a593Smuzhiyun struct sh73a0_sbsc {
112*4882a593Smuzhiyun 	u32 dummy0[2]; /* 0x00, 0x04 */
113*4882a593Smuzhiyun 	u32 sdcr0;
114*4882a593Smuzhiyun 	u32 sdcr1;
115*4882a593Smuzhiyun 	u32 sdpcr;
116*4882a593Smuzhiyun 	u32 dummy1; /* 0x14 */
117*4882a593Smuzhiyun 	u32 sdcr0s;
118*4882a593Smuzhiyun 	u32 sdcr1s;
119*4882a593Smuzhiyun 	u32 rtcsr;
120*4882a593Smuzhiyun 	u32 dummy2; /* 0x24 */
121*4882a593Smuzhiyun 	u32 rtcor;
122*4882a593Smuzhiyun 	u32 rtcorh;
123*4882a593Smuzhiyun 	u32 rtcors;
124*4882a593Smuzhiyun 	u32 rtcorsh;
125*4882a593Smuzhiyun 	u32 dummy3[2]; /* 0x38, 0x3C */
126*4882a593Smuzhiyun 	u32 sdwcrc0;
127*4882a593Smuzhiyun 	u32 sdwcrc1;
128*4882a593Smuzhiyun 	u32 sdwcr00;
129*4882a593Smuzhiyun 	u32 sdwcr01;
130*4882a593Smuzhiyun 	u32 sdwcr10;
131*4882a593Smuzhiyun 	u32 sdwcr11;
132*4882a593Smuzhiyun 	u32 sdpdcr0;
133*4882a593Smuzhiyun 	u32 dummy4; /* 0x5C */
134*4882a593Smuzhiyun 	u32 sdwcr2;
135*4882a593Smuzhiyun 	u32 sdwcrc2;
136*4882a593Smuzhiyun 	u32 zqccr;
137*4882a593Smuzhiyun 	u32 dummy5[6]; /* 0x6C .. 0x80 */
138*4882a593Smuzhiyun 	u32 sdmracr0;
139*4882a593Smuzhiyun 	u32 dummy6; /* 0x88 */
140*4882a593Smuzhiyun 	u32 sdmrtmpcr;
141*4882a593Smuzhiyun 	u32 dummy7; /* 0x90 */
142*4882a593Smuzhiyun 	u32 sdmrtmpmsk;
143*4882a593Smuzhiyun 	u32 dummy8; /* 0x98 */
144*4882a593Smuzhiyun 	u32 sdgencnt;
145*4882a593Smuzhiyun 	u32 dphycnt0;
146*4882a593Smuzhiyun 	u32 dphycnt1;
147*4882a593Smuzhiyun 	u32 dphycnt2;
148*4882a593Smuzhiyun 	u32 dummy9[2]; /* 0xAC .. 0xB0 */
149*4882a593Smuzhiyun 	u32 sddrvcr0;
150*4882a593Smuzhiyun 	u32 dummy10[14]; /* 0xB8 .. 0xEC */
151*4882a593Smuzhiyun 	u32 dptdivcr0;
152*4882a593Smuzhiyun 	u32 dptdivcr1;
153*4882a593Smuzhiyun 	u32 dptdivcr2;
154*4882a593Smuzhiyun 	u32 dummy11; /* 0xFC */
155*4882a593Smuzhiyun 	u32 sdptcr0;
156*4882a593Smuzhiyun 	u32 sdptcr1;
157*4882a593Smuzhiyun 	u32 sdptcr2;
158*4882a593Smuzhiyun 	u32 sdptcr3; /* 0x10C */
159*4882a593Smuzhiyun 	u32 dummy12[145]; /* 0x110 .. 0x350 */
160*4882a593Smuzhiyun 	u32 dllcnt0; /* 0x354 */
161*4882a593Smuzhiyun 	u32 sbscmon0;
162*4882a593Smuzhiyun };
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun /* CPG */
165*4882a593Smuzhiyun struct sh73a0_sbsc_cpg {
166*4882a593Smuzhiyun 	u32 frqcra; /* 0x00 */
167*4882a593Smuzhiyun 	u32 frqcrb;
168*4882a593Smuzhiyun 	u32 vclkcr1;
169*4882a593Smuzhiyun 	u32 vclkcr2;
170*4882a593Smuzhiyun 	u32 zbckcr;
171*4882a593Smuzhiyun 	u32 flckcr;
172*4882a593Smuzhiyun 	u32 fsiackcr;
173*4882a593Smuzhiyun 	u32 vclkcr3;
174*4882a593Smuzhiyun 	u32 rtstbcr;
175*4882a593Smuzhiyun 	u32 systbcr;
176*4882a593Smuzhiyun 	u32 pll1cr;
177*4882a593Smuzhiyun 	u32 pll2cr;
178*4882a593Smuzhiyun 	u32 mstpsr0;
179*4882a593Smuzhiyun 	u32 dummy0; /* 0x34 */
180*4882a593Smuzhiyun 	u32 mstpsr1;
181*4882a593Smuzhiyun 	u32 mstpsr5;
182*4882a593Smuzhiyun 	u32 mstpsr2;
183*4882a593Smuzhiyun 	u32 dummy1; /* 0x44 */
184*4882a593Smuzhiyun 	u32 mstpsr3;
185*4882a593Smuzhiyun 	u32 mstpsr4;
186*4882a593Smuzhiyun 	u32 dummy2; /* 0x50 */
187*4882a593Smuzhiyun 	u32 astat;
188*4882a593Smuzhiyun 	u32 dvfscr0;
189*4882a593Smuzhiyun 	u32 dvfscr1;
190*4882a593Smuzhiyun 	u32 dsitckcr;
191*4882a593Smuzhiyun 	u32 dsi0pckcr;
192*4882a593Smuzhiyun 	u32 dsi1pckcr;
193*4882a593Smuzhiyun 	u32 dsi0phycr;
194*4882a593Smuzhiyun 	u32 dsi1phycr;
195*4882a593Smuzhiyun 	u32 sd0ckcr;
196*4882a593Smuzhiyun 	u32 sd1ckcr;
197*4882a593Smuzhiyun 	u32 sd2ckcr;
198*4882a593Smuzhiyun 	u32 subckcr;
199*4882a593Smuzhiyun 	u32 spuackcr;
200*4882a593Smuzhiyun 	u32 msuckcr;
201*4882a593Smuzhiyun 	u32 hsickcr;
202*4882a593Smuzhiyun 	u32 fsibckcr;
203*4882a593Smuzhiyun 	u32 spuvckcr;
204*4882a593Smuzhiyun 	u32 mfck1cr;
205*4882a593Smuzhiyun 	u32 mfck2cr;
206*4882a593Smuzhiyun 	u32 dummy3[8]; /* 0xA0 .. 0xBC */
207*4882a593Smuzhiyun 	u32 ckscr;
208*4882a593Smuzhiyun 	u32 dummy4; /* 0xC4 */
209*4882a593Smuzhiyun 	u32 pll1stpcr;
210*4882a593Smuzhiyun 	u32 mpmode;
211*4882a593Smuzhiyun 	u32 pllecr;
212*4882a593Smuzhiyun 	u32 dummy5; /* 0xD4 */
213*4882a593Smuzhiyun 	u32 pll0cr;
214*4882a593Smuzhiyun 	u32 pll3cr;
215*4882a593Smuzhiyun 	u32 dummy6; /* 0xE0 */
216*4882a593Smuzhiyun 	u32 frqcrd;
217*4882a593Smuzhiyun 	u32 dummyi7; /* 0xE8 */
218*4882a593Smuzhiyun 	u32 vrefcr;
219*4882a593Smuzhiyun 	u32 pll0stpcr;
220*4882a593Smuzhiyun 	u32 dummy8; /* 0xF4 */
221*4882a593Smuzhiyun 	u32 pll2stpcr;
222*4882a593Smuzhiyun 	u32 pll3stpcr;
223*4882a593Smuzhiyun 	u32 dummy9[4]; /* 0x100 .. 0x10c */
224*4882a593Smuzhiyun 	u32 rmstpcr0;
225*4882a593Smuzhiyun 	u32 rmstpcr1;
226*4882a593Smuzhiyun 	u32 rmstpcr2;
227*4882a593Smuzhiyun 	u32 rmstpcr3;
228*4882a593Smuzhiyun 	u32 rmstpcr4;
229*4882a593Smuzhiyun 	u32 rmstpcr5;
230*4882a593Smuzhiyun 	u32 dummy10[2]; /* 0x128 .. 0x12c */
231*4882a593Smuzhiyun 	u32 smstpcr0;
232*4882a593Smuzhiyun 	u32 smstpcr1;
233*4882a593Smuzhiyun 	u32 smstpcr2;
234*4882a593Smuzhiyun 	u32 smstpcr3;
235*4882a593Smuzhiyun 	u32 smstpcr4;
236*4882a593Smuzhiyun 	u32 smstpcr5;
237*4882a593Smuzhiyun 	u32 dummy11[2]; /* 0x148 .. 0x14c */
238*4882a593Smuzhiyun 	u32 cpgxxcs4;
239*4882a593Smuzhiyun 	u32 dummy12[7]; /* 0x154 .. 0x16c */
240*4882a593Smuzhiyun 	u32 dvfscr2;
241*4882a593Smuzhiyun 	u32 dvfscr3;
242*4882a593Smuzhiyun 	u32 dvfscr4;
243*4882a593Smuzhiyun 	u32 dvfscr5; /* 0x17C */
244*4882a593Smuzhiyun };
245*4882a593Smuzhiyun 
246*4882a593Smuzhiyun /* CPG SRCR part OK */
247*4882a593Smuzhiyun struct sh73a0_sbsc_cpg_srcr {
248*4882a593Smuzhiyun 	u32 srcr0;
249*4882a593Smuzhiyun 	u32 dummy0; /* 0xA4 */
250*4882a593Smuzhiyun 	u32 srcr1;
251*4882a593Smuzhiyun 	u32 dummy1; /* 0xAC */
252*4882a593Smuzhiyun 	u32 srcr2;
253*4882a593Smuzhiyun 	u32 dummy2; /* 0xB4 */
254*4882a593Smuzhiyun 	u32 srcr3;
255*4882a593Smuzhiyun 	u32 srcr4;
256*4882a593Smuzhiyun 	u32 dummy3; /* 0xC0 */
257*4882a593Smuzhiyun 	u32 srcr5;
258*4882a593Smuzhiyun };
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun /* BSC */
261*4882a593Smuzhiyun struct sh73a0_bsc {
262*4882a593Smuzhiyun 	u32 cmncr;
263*4882a593Smuzhiyun 	u32 cs0bcr;
264*4882a593Smuzhiyun 	u32 cs2bcr;
265*4882a593Smuzhiyun 	u32 dummy0; /* 0x0C */
266*4882a593Smuzhiyun 	u32 cs4bcr;
267*4882a593Smuzhiyun 	u32 cs5abcr;
268*4882a593Smuzhiyun 	u32 cs5bbcr;
269*4882a593Smuzhiyun 	u32 cs6abcr;
270*4882a593Smuzhiyun 	u32 cs6bbcr;
271*4882a593Smuzhiyun 	u32 cs0wcr;
272*4882a593Smuzhiyun 	u32 cs2wcr;
273*4882a593Smuzhiyun 	u32 dummy1; /* 0x2C */
274*4882a593Smuzhiyun 	u32 cs4wcr;
275*4882a593Smuzhiyun 	u32 cs5awcr;
276*4882a593Smuzhiyun 	u32 cs5bwcr;
277*4882a593Smuzhiyun 	u32 cs6awcr;
278*4882a593Smuzhiyun 	u32 cs6bwcr;
279*4882a593Smuzhiyun 	u32 rbwtcnt;
280*4882a593Smuzhiyun 	u32 busycr;
281*4882a593Smuzhiyun 	u32 dummy2; /* 0x5c */
282*4882a593Smuzhiyun 	u32 cs7abcr;
283*4882a593Smuzhiyun 	u32 cs7awcr;
284*4882a593Smuzhiyun 	u32 dummy3[2]; /* 0x68, 0x6C */
285*4882a593Smuzhiyun 	u32 bromtimcr;
286*4882a593Smuzhiyun };
287*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #endif /* __ASM_ARCH_RMOBILE_SH73A0_H */
290