Subversion Repositories freemyipod

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 theseven 1
//
2
//
3
//    Copyright 2010 TheSeven
4
//
5
//
6
//    This file is part of emBIOS.
7
//
8
//    emBIOS is free software: you can redistribute it and/or
9
//    modify it under the terms of the GNU General Public License as
10
//    published by the Free Software Foundation, either version 2 of the
11
//    License, or (at your option) any later version.
12
//
13
//    emBIOS is distributed in the hope that it will be useful,
14
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
//    See the GNU General Public License for more details.
17
//
18
//    You should have received a copy of the GNU General Public License along
19
//    with emBIOS.  If not, see <http://www.gnu.org/licenses/>.
20
//
21
//
22
 
23
 
24
#ifndef __S5L8701_H__
25
#define __S5L8701_H__
26
 
27
#include "global.h"
28
 
29
 
30
/////CLKCON/////
31
#define CLKCON       (*((volatile uint32_t*)(0x3C500000)))
32
#define PLL0PMS      (*((volatile uint32_t*)(0x3C500004)))
33
#define PLL1PMS      (*((volatile uint32_t*)(0x3C500008)))
34
#define PLL2PMS      (*((volatile uint32_t*)(0x3C50000C)))
35
#define PLL0LCNT     (*((volatile uint32_t*)(0x3C500014)))
36
#define PLL1LCNT     (*((volatile uint32_t*)(0x3C500018)))
37
#define PLL2LCNT     (*((volatile uint32_t*)(0x3C50001C)))
38
#define PLLLOCK      (*((volatile uint32_t*)(0x3C500020)))
39
#define PLLCON       (*((volatile uint32_t*)(0x3C500024)))
40
#define PWRCON       (*((volatile uint32_t*)(0x3C500028)))
41
#define PWRMODE      (*((volatile uint32_t*)(0x3C50002C)))
42
#define SWRCON       (*((volatile uint32_t*)(0x3C500030)))
43
#define RSTSR        (*((volatile uint32_t*)(0x3C500034)))
44
#define DSPCLKMD     (*((volatile uint32_t*)(0x3C500038)))
45
#define CLKCON2      (*((volatile uint32_t*)(0x3C50003C)))
46
#define PWRCONEXT    (*((volatile uint32_t*)(0x3C500040)))
47
 
48
 
49
/////ICU/////
50
#define SRCPND       (*((volatile uint32_t*)(0x39C00000)))
51
#define INTMOD       (*((volatile uint32_t*)(0x39C00004)))
52
#define INTMSK       (*((volatile uint32_t*)(0x39C00008)))
53
#define INTPRIO      (*((volatile uint32_t*)(0x39C0000C)))
54
#define INTPND       (*((volatile uint32_t*)(0x39C00010)))
55
#define INTOFFSET    (*((volatile uint32_t*)(0x39C00014)))
56
#define EINTPOL      (*((volatile uint32_t*)(0x39C00018)))
57
#define EINTPEND     (*((volatile uint32_t*)(0x39C0001C)))
58
#define EINTMSK      (*((volatile uint32_t*)(0x39C00020)))
59
 
60
 
61
/////GPIO/////
62
#define PCON0        (*((volatile uint32_t*)(0x3CF00000)))
63
#define PDAT0        (*((volatile uint32_t*)(0x3CF00004)))
64
#define PCON1        (*((volatile uint32_t*)(0x3CF00010)))
65
#define PDAT1        (*((volatile uint32_t*)(0x3CF00014)))
66
#define PCON2        (*((volatile uint32_t*)(0x3CF00020)))
67
#define PDAT2        (*((volatile uint32_t*)(0x3CF00024)))
68
#define PCON3        (*((volatile uint32_t*)(0x3CF00030)))
69
#define PDAT3        (*((volatile uint32_t*)(0x3CF00034)))
70
#define PCON4        (*((volatile uint32_t*)(0x3CF00040)))
71
#define PDAT4        (*((volatile uint32_t*)(0x3CF00044)))
72
#define PCON5        (*((volatile uint32_t*)(0x3CF00050)))
73
#define PDAT5        (*((volatile uint32_t*)(0x3CF00054)))
74
#define PUNK5        (*((volatile uint32_t*)(0x3CF0005C)))
75
#define PCON6        (*((volatile uint32_t*)(0x3CF00060)))
76
#define PDAT6        (*((volatile uint32_t*)(0x3CF00064)))
77
#define PCON7        (*((volatile uint32_t*)(0x3CF00070)))
78
#define PDAT7        (*((volatile uint32_t*)(0x3CF00074)))
79
#define PCON10       (*((volatile uint32_t*)(0x3CF000A0)))
80
#define PDAT10       (*((volatile uint32_t*)(0x3CF000A4)))
54 theseven 81
#define PCON11       (*((volatile uint32_t*)(0x3CF000B0)))
82
#define PDAT11       (*((volatile uint32_t*)(0x3CF000B4)))
2 theseven 83
#define PCON15       (*((volatile uint32_t*)(0x3CF000F0)))
84
#define PUNK15       (*((volatile uint32_t*)(0x3CF000FC)))
85
 
86
 
87
/////IODMA/////
88
#define DMABASE0     (*((volatile uint32_t*)(0x38400000)))
89
#define DMACON0      (*((volatile uint32_t*)(0x38400004)))
90
#define DMATCNT0     (*((volatile uint32_t*)(0x38400008)))
91
#define DMACADDR0    (*((volatile uint32_t*)(0x3840000C)))
92
#define DMACTCNT0    (*((volatile uint32_t*)(0x38400010)))
93
#define DMACOM0      (*((volatile uint32_t*)(0x38400014)))
94
#define DMANOF0      (*((volatile uint32_t*)(0x38400018)))
95
#define DMABASE1     (*((volatile uint32_t*)(0x38400020)))
96
#define DMACON1      (*((volatile uint32_t*)(0x38400024)))
97
#define DMATCNT1     (*((volatile uint32_t*)(0x38400028)))
98
#define DMACADDR1    (*((volatile uint32_t*)(0x3840002C)))
99
#define DMACTCNT1    (*((volatile uint32_t*)(0x38400030)))
100
#define DMACOM1      (*((volatile uint32_t*)(0x38400034)))
101
#define DMABASE2     (*((volatile uint32_t*)(0x38400040)))
102
#define DMACON2      (*((volatile uint32_t*)(0x38400044)))
103
#define DMATCNT2     (*((volatile uint32_t*)(0x38400048)))
104
#define DMACADDR2    (*((volatile uint32_t*)(0x3840004C)))
105
#define DMACTCNT2    (*((volatile uint32_t*)(0x38400050)))
106
#define DMACOM2      (*((volatile uint32_t*)(0x38400054)))
107
#define DMABASE3     (*((volatile uint32_t*)(0x38400060)))
108
#define DMACON3      (*((volatile uint32_t*)(0x38400064)))
109
#define DMATCNT3     (*((volatile uint32_t*)(0x38400068)))
110
#define DMACADDR3    (*((volatile uint32_t*)(0x3840006C)))
111
#define DMACTCNT3    (*((volatile uint32_t*)(0x38400070)))
112
#define DMACOM3      (*((volatile uint32_t*)(0x38400074)))
113
#define DMABASE4     (*((volatile uint32_t*)(0x38400080)))
114
#define DMACON4      (*((volatile uint32_t*)(0x38400084)))
115
#define DMATCNT4     (*((volatile uint32_t*)(0x38400088)))
116
#define DMACADDR4    (*((volatile uint32_t*)(0x3840008C)))
117
#define DMACTCNT4    (*((volatile uint32_t*)(0x38400090)))
118
#define DMACOM4      (*((volatile uint32_t*)(0x38400094)))
119
#define DMABASE5     (*((volatile uint32_t*)(0x384000A0)))
120
#define DMACON5      (*((volatile uint32_t*)(0x384000A4)))
121
#define DMATCNT5     (*((volatile uint32_t*)(0x384000A8)))
122
#define DMACADDR5    (*((volatile uint32_t*)(0x384000AC)))
123
#define DMACTCNT5    (*((volatile uint32_t*)(0x384000B0)))
124
#define DMACOM5      (*((volatile uint32_t*)(0x384000B4)))
125
#define DMABASE6     (*((volatile uint32_t*)(0x384000C0)))
126
#define DMACON6      (*((volatile uint32_t*)(0x384000C4)))
127
#define DMATCNT6     (*((volatile uint32_t*)(0x384000C8)))
128
#define DMACADDR6    (*((volatile uint32_t*)(0x384000CC)))
129
#define DMACTCNT6    (*((volatile uint32_t*)(0x384000D0)))
130
#define DMACOM6      (*((volatile uint32_t*)(0x384000D4)))
131
#define DMABASE7     (*((volatile uint32_t*)(0x384000E0)))
132
#define DMACON7      (*((volatile uint32_t*)(0x384000E4)))
133
#define DMATCNT7     (*((volatile uint32_t*)(0x384000E8)))
134
#define DMACADDR7    (*((volatile uint32_t*)(0x384000EC)))
135
#define DMACTCNT7    (*((volatile uint32_t*)(0x384000F0)))
136
#define DMACOM7      (*((volatile uint32_t*)(0x384000F4)))
15 theseven 137
#define DMABASE8     (*((volatile uint32_t*)(0x38400100)))
138
#define DMACON8      (*((volatile uint32_t*)(0x38400104)))
139
#define DMATCNT8     (*((volatile uint32_t*)(0x38400108)))
140
#define DMACADDR8    (*((volatile uint32_t*)(0x3840010C)))
141
#define DMACTCNT8    (*((volatile uint32_t*)(0x38400110)))
142
#define DMACOM8      (*((volatile uint32_t*)(0x38400114)))
2 theseven 143
#define DMAALLST     (*((volatile uint32_t*)(0x38400180)))
15 theseven 144
#define DMAALLST2    (*((volatile uint32_t*)(0x38400184)))
2 theseven 145
#define DMACON_DEVICE_SHIFT    30
146
#define DMACON_DIRECTION_SHIFT 29
147
#define DMACON_DATA_SIZE_SHIFT 22
148
#define DMACON_BURST_LEN_SHIFT 19
149
#define DMACOM_START           4
150
#define DMACOM_CLEARBOTHDONE   7
151
#define DMAALLST_WCOM0         (1 << 0)
152
#define DMAALLST_HCOM0         (1 << 1)
153
#define DMAALLST_DMABUSY0      (1 << 2)
154
#define DMAALLST_HOLD_SKIP     (1 << 3)
155
#define DMAALLST_WCOM1         (1 << 4)
156
#define DMAALLST_HCOM1         (1 << 5)
157
#define DMAALLST_DMABUSY1      (1 << 6)
158
#define DMAALLST_WCOM2         (1 << 8)
159
#define DMAALLST_HCOM2         (1 << 9)
160
#define DMAALLST_DMABUSY2      (1 << 10)
161
#define DMAALLST_WCOM3         (1 << 12)
162
#define DMAALLST_HCOM3         (1 << 13)
163
#define DMAALLST_DMABUSY3      (1 << 14)
164
#define DMAALLST_CHAN0_MASK    (0xF << 0)
165
#define DMAALLST_CHAN1_MASK    (0xF << 4)
166
#define DMAALLST_CHAN2_MASK    (0xF << 8)
167
#define DMAALLST_CHAN3_MASK    (0xF << 12)
168
 
169
 
170
/////FMC/////
171
#define FMCTRL0      (*((volatile uint32_t*)(0x39400000)))
172
#define FMCTRL1      (*((volatile uint32_t*)(0x39400004)))
173
#define FMCMD        (*((volatile uint32_t*)(0x39400008)))
174
#define FMADDR0      (*((volatile uint32_t*)(0x3940000C)))
175
#define FMADDR1      (*((volatile uint32_t*)(0x39400010)))
176
#define FMANUM       (*((volatile uint32_t*)(0x3940002C)))
177
#define FMDNUM       (*((volatile uint32_t*)(0x39400030)))
178
#define FMCSTAT      (*((volatile uint32_t*)(0x39400048)))
179
#define FMFIFO       (*((volatile uint32_t*)(0x39400080)))
180
#define RS_ECC_CTRL  (*((volatile uint32_t*)(0x39400100)))
181
#define FMCTRL0_ENABLEDMA      (1 << 10)
182
#define FMCTRL0_UNK1           (1 << 11)
183
#define FMCTRL1_DOTRANSADDR    (1 << 0)
184
#define FMCTRL1_DOREADDATA     (1 << 1)
185
#define FMCTRL1_DOWRITEDATA    (1 << 2)
186
#define FMCTRL1_CLEARWFIFO     (1 << 6)
187
#define FMCTRL1_CLEARRFIFO     (1 << 7)
188
#define FMCSTAT_RBB            (1 << 0)
189
#define FMCSTAT_RBBDONE        (1 << 1)
190
#define FMCSTAT_CMDDONE        (1 << 2)
191
#define FMCSTAT_ADDRDONE       (1 << 3)
192
#define FMCSTAT_BANK0READY     (1 << 4)
193
#define FMCSTAT_BANK1READY     (1 << 5)
194
#define FMCSTAT_BANK2READY     (1 << 6)
195
#define FMCSTAT_BANK3READY     (1 << 7)
196
 
197
 
198
/////ECC/////
199
#define ECC_DATA_PTR  (*((volatile uint32_t*)(0x39E00004)))
200
#define ECC_SPARE_PTR (*((volatile uint32_t*)(0x39E00008)))
201
#define ECC_CTRL      (*((volatile uint32_t*)(0x39E0000C)))
202
#define ECC_RESULT    (*((volatile uint32_t*)(0x39E00010)))
203
#define ECC_UNK1      (*((volatile uint32_t*)(0x39E00014)))
204
#define ECC_INT_CLR   (*((volatile uint32_t*)(0x39E00040)))
205
#define ECCCTRL_STARTDECODING  (1 << 0)
206
#define ECCCTRL_STARTENCODING  (1 << 1)
207
#define ECCCTRL_STARTDECNOSYND (1 << 2)
208
 
209
 
210
/////CLICKWHEEL/////
211
#define WHEEL00      (*((volatile uint32_t*)(0x3C200000)))
212
#define WHEEL04      (*((volatile uint32_t*)(0x3C200004)))
213
#define WHEEL08      (*((volatile uint32_t*)(0x3C200008)))
214
#define WHEEL0C      (*((volatile uint32_t*)(0x3C20000C)))
215
#define WHEEL10      (*((volatile uint32_t*)(0x3C200010)))
216
#define WHEELINT     (*((volatile uint32_t*)(0x3C200014)))
217
#define WHEELRX      (*((volatile uint32_t*)(0x3C200018)))
218
#define WHEELTX      (*((volatile uint32_t*)(0x3C20001C)))
219
 
220
 
221
/////AES/////
222
#define AESCONTROL   (*((volatile uint32_t*)(0x39800000)))
223
#define AESGO        (*((volatile uint32_t*)(0x39800004)))
224
#define AESUNKREG0   (*((volatile uint32_t*)(0x39800008)))
225
#define AESSTATUS    (*((volatile uint32_t*)(0x3980000C)))
226
#define AESUNKREG1   (*((volatile uint32_t*)(0x39800010)))
227
#define AESKEYLEN    (*((volatile uint32_t*)(0x39800014)))
228
#define AESOUTSIZE   (*((volatile uint32_t*)(0x39800018)))
229
#define AESOUTADDR   (*((volatile uint32_t*)(0x39800020)))
230
#define AESINSIZE    (*((volatile uint32_t*)(0x39800024)))
231
#define AESINADDR    (*((volatile uint32_t*)(0x39800028)))
232
#define AESAUXSIZE   (*((volatile uint32_t*)(0x3980002C)))
233
#define AESAUXADDR   (*((volatile uint32_t*)(0x39800030)))
234
#define AESSIZE3     (*((volatile uint32_t*)(0x39800034)))
235
#define AESKEY         ((volatile uint32_t*)(0x3980004C))
236
#define AESTYPE      (*((volatile uint32_t*)(0x3980006C)))
237
#define AESIV          ((volatile uint32_t*)(0x39800074))
238
#define AESTYPE2     (*((volatile uint32_t*)(0x39800088)))
239
#define AESUNKREG2   (*((volatile uint32_t*)(0x3980008C)))
240
 
241
/////HASH/////
242
#define HASHCTRL     (*((volatile uint32_t*)(0x3C600000)))
243
#define HASHRESULT     ((volatile uint32_t*)(0x3C600020))
244
#define HASHDATAIN     ((volatile uint32_t*)(0x3C600040))
245
 
246
 
247
/////TIMER/////
14 theseven 248
#define TACON        (*((volatile uint32_t*)(0x3C700000)))
249
#define TACMD        (*((volatile uint32_t*)(0x3C700004)))
250
#define TADATA0      (*((volatile uint32_t*)(0x3C700008)))
251
#define TADATA1      (*((volatile uint32_t*)(0x3C70000C)))
252
#define TAPRE        (*((volatile uint32_t*)(0x3C700010)))
253
#define TACNT        (*((volatile uint32_t*)(0x3C700014)))
254
#define TBCON        (*((volatile uint32_t*)(0x3C700020)))
255
#define TBCMD        (*((volatile uint32_t*)(0x3C700024)))
256
#define TBDATA0      (*((volatile uint32_t*)(0x3C700028)))
257
#define TBDATA1      (*((volatile uint32_t*)(0x3C70002C)))
258
#define TBPRE        (*((volatile uint32_t*)(0x3C700030)))
259
#define TBCNT        (*((volatile uint32_t*)(0x3C700034)))
260
#define TCCON        (*((volatile uint32_t*)(0x3C700040)))
261
#define TCCMD        (*((volatile uint32_t*)(0x3C700044)))
262
#define TCDATA0      (*((volatile uint32_t*)(0x3C700048)))
263
#define TCDATA1      (*((volatile uint32_t*)(0x3C70004C)))
264
#define TCPRE        (*((volatile uint32_t*)(0x3C700050)))
265
#define TCCNT        (*((volatile uint32_t*)(0x3C700054)))
266
#define TDCON        (*((volatile uint32_t*)(0x3C700060)))
267
#define TDCMD        (*((volatile uint32_t*)(0x3C700064)))
268
#define TDDATA0      (*((volatile uint32_t*)(0x3C700068)))
269
#define TDDATA1      (*((volatile uint32_t*)(0x3C70006C)))
270
#define TDPRE        (*((volatile uint32_t*)(0x3C700070)))
271
#define TDCNT        (*((volatile uint32_t*)(0x3C700074)))
15 theseven 272
uint64_t read_5usec_timer();
273
uint32_t read_usec_timer();
274
#define FIVE_USEC_TIMER (read_5usec_timer()) /* 64bit 5usec timer */
275
#define USEC_TIMER      (read_usec_timer()) /* usecs */
2 theseven 276
 
277
 
15 theseven 278
/////USB/////
279
#define OTGBASE 0x38800000
280
#define PHYBASE 0x3C400000
281
 
282
 
283
/////I2C/////
284
#define IICCON       (*((volatile uint32_t*)(0x3C900000)))
285
#define IICSTAT      (*((volatile uint32_t*)(0x3C900004)))
286
#define IICADD       (*((volatile uint32_t*)(0x3C900008)))
287
#define IICDS        (*((volatile uint32_t*)(0x3C90000C)))
288
 
289
 
290
/////INTERRUPTS/////
291
#define INTMSK_TIMER   (1<<5)
292
#define INTMSK_DMA     (1<<10)
293
#define INTMSK_USB_OTG (1<<16)
294
#define INTMSK_ECC     (1<<19)
295
#define INTMSK_IIC     (1<<27)
296
 
297
 
2 theseven 298
#endif