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