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