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)))
81
#define PCON15       (*((volatile uint32_t*)(0x3CF000F0)))
82
#define PUNK15       (*((volatile uint32_t*)(0x3CF000FC)))
83
 
84
 
85
/////IODMA/////
86
#define DMABASE0     (*((volatile uint32_t*)(0x38400000)))
87
#define DMACON0      (*((volatile uint32_t*)(0x38400004)))
88
#define DMATCNT0     (*((volatile uint32_t*)(0x38400008)))
89
#define DMACADDR0    (*((volatile uint32_t*)(0x3840000C)))
90
#define DMACTCNT0    (*((volatile uint32_t*)(0x38400010)))
91
#define DMACOM0      (*((volatile uint32_t*)(0x38400014)))
92
#define DMANOF0      (*((volatile uint32_t*)(0x38400018)))
93
#define DMABASE1     (*((volatile uint32_t*)(0x38400020)))
94
#define DMACON1      (*((volatile uint32_t*)(0x38400024)))
95
#define DMATCNT1     (*((volatile uint32_t*)(0x38400028)))
96
#define DMACADDR1    (*((volatile uint32_t*)(0x3840002C)))
97
#define DMACTCNT1    (*((volatile uint32_t*)(0x38400030)))
98
#define DMACOM1      (*((volatile uint32_t*)(0x38400034)))
99
#define DMABASE2     (*((volatile uint32_t*)(0x38400040)))
100
#define DMACON2      (*((volatile uint32_t*)(0x38400044)))
101
#define DMATCNT2     (*((volatile uint32_t*)(0x38400048)))
102
#define DMACADDR2    (*((volatile uint32_t*)(0x3840004C)))
103
#define DMACTCNT2    (*((volatile uint32_t*)(0x38400050)))
104
#define DMACOM2      (*((volatile uint32_t*)(0x38400054)))
105
#define DMABASE3     (*((volatile uint32_t*)(0x38400060)))
106
#define DMACON3      (*((volatile uint32_t*)(0x38400064)))
107
#define DMATCNT3     (*((volatile uint32_t*)(0x38400068)))
108
#define DMACADDR3    (*((volatile uint32_t*)(0x3840006C)))
109
#define DMACTCNT3    (*((volatile uint32_t*)(0x38400070)))
110
#define DMACOM3      (*((volatile uint32_t*)(0x38400074)))
111
#define DMABASE4     (*((volatile uint32_t*)(0x38400080)))
112
#define DMACON4      (*((volatile uint32_t*)(0x38400084)))
113
#define DMATCNT4     (*((volatile uint32_t*)(0x38400088)))
114
#define DMACADDR4    (*((volatile uint32_t*)(0x3840008C)))
115
#define DMACTCNT4    (*((volatile uint32_t*)(0x38400090)))
116
#define DMACOM4      (*((volatile uint32_t*)(0x38400094)))
117
#define DMABASE5     (*((volatile uint32_t*)(0x384000A0)))
118
#define DMACON5      (*((volatile uint32_t*)(0x384000A4)))
119
#define DMATCNT5     (*((volatile uint32_t*)(0x384000A8)))
120
#define DMACADDR5    (*((volatile uint32_t*)(0x384000AC)))
121
#define DMACTCNT5    (*((volatile uint32_t*)(0x384000B0)))
122
#define DMACOM5      (*((volatile uint32_t*)(0x384000B4)))
123
#define DMABASE6     (*((volatile uint32_t*)(0x384000C0)))
124
#define DMACON6      (*((volatile uint32_t*)(0x384000C4)))
125
#define DMATCNT6     (*((volatile uint32_t*)(0x384000C8)))
126
#define DMACADDR6    (*((volatile uint32_t*)(0x384000CC)))
127
#define DMACTCNT6    (*((volatile uint32_t*)(0x384000D0)))
128
#define DMACOM6      (*((volatile uint32_t*)(0x384000D4)))
129
#define DMABASE7     (*((volatile uint32_t*)(0x384000E0)))
130
#define DMACON7      (*((volatile uint32_t*)(0x384000E4)))
131
#define DMATCNT7     (*((volatile uint32_t*)(0x384000E8)))
132
#define DMACADDR7    (*((volatile uint32_t*)(0x384000EC)))
133
#define DMACTCNT7    (*((volatile uint32_t*)(0x384000F0)))
134
#define DMACOM7      (*((volatile uint32_t*)(0x384000F4)))
135
#define DMAALLST     (*((volatile uint32_t*)(0x38400180)))
136
#define DMACON_DEVICE_SHIFT    30
137
#define DMACON_DIRECTION_SHIFT 29
138
#define DMACON_DATA_SIZE_SHIFT 22
139
#define DMACON_BURST_LEN_SHIFT 19
140
#define DMACOM_START           4
141
#define DMACOM_CLEARBOTHDONE   7
142
#define DMAALLST_WCOM0         (1 << 0)
143
#define DMAALLST_HCOM0         (1 << 1)
144
#define DMAALLST_DMABUSY0      (1 << 2)
145
#define DMAALLST_HOLD_SKIP     (1 << 3)
146
#define DMAALLST_WCOM1         (1 << 4)
147
#define DMAALLST_HCOM1         (1 << 5)
148
#define DMAALLST_DMABUSY1      (1 << 6)
149
#define DMAALLST_WCOM2         (1 << 8)
150
#define DMAALLST_HCOM2         (1 << 9)
151
#define DMAALLST_DMABUSY2      (1 << 10)
152
#define DMAALLST_WCOM3         (1 << 12)
153
#define DMAALLST_HCOM3         (1 << 13)
154
#define DMAALLST_DMABUSY3      (1 << 14)
155
#define DMAALLST_CHAN0_MASK    (0xF << 0)
156
#define DMAALLST_CHAN1_MASK    (0xF << 4)
157
#define DMAALLST_CHAN2_MASK    (0xF << 8)
158
#define DMAALLST_CHAN3_MASK    (0xF << 12)
159
 
160
 
161
/////FMC/////
162
#define FMCTRL0      (*((volatile uint32_t*)(0x39400000)))
163
#define FMCTRL1      (*((volatile uint32_t*)(0x39400004)))
164
#define FMCMD        (*((volatile uint32_t*)(0x39400008)))
165
#define FMADDR0      (*((volatile uint32_t*)(0x3940000C)))
166
#define FMADDR1      (*((volatile uint32_t*)(0x39400010)))
167
#define FMANUM       (*((volatile uint32_t*)(0x3940002C)))
168
#define FMDNUM       (*((volatile uint32_t*)(0x39400030)))
169
#define FMCSTAT      (*((volatile uint32_t*)(0x39400048)))
170
#define FMFIFO       (*((volatile uint32_t*)(0x39400080)))
171
#define RS_ECC_CTRL  (*((volatile uint32_t*)(0x39400100)))
172
#define FMCTRL0_ENABLEDMA      (1 << 10)
173
#define FMCTRL0_UNK1           (1 << 11)
174
#define FMCTRL1_DOTRANSADDR    (1 << 0)
175
#define FMCTRL1_DOREADDATA     (1 << 1)
176
#define FMCTRL1_DOWRITEDATA    (1 << 2)
177
#define FMCTRL1_CLEARWFIFO     (1 << 6)
178
#define FMCTRL1_CLEARRFIFO     (1 << 7)
179
#define FMCSTAT_RBB            (1 << 0)
180
#define FMCSTAT_RBBDONE        (1 << 1)
181
#define FMCSTAT_CMDDONE        (1 << 2)
182
#define FMCSTAT_ADDRDONE       (1 << 3)
183
#define FMCSTAT_BANK0READY     (1 << 4)
184
#define FMCSTAT_BANK1READY     (1 << 5)
185
#define FMCSTAT_BANK2READY     (1 << 6)
186
#define FMCSTAT_BANK3READY     (1 << 7)
187
 
188
 
189
/////ECC/////
190
#define ECC_DATA_PTR  (*((volatile uint32_t*)(0x39E00004)))
191
#define ECC_SPARE_PTR (*((volatile uint32_t*)(0x39E00008)))
192
#define ECC_CTRL      (*((volatile uint32_t*)(0x39E0000C)))
193
#define ECC_RESULT    (*((volatile uint32_t*)(0x39E00010)))
194
#define ECC_UNK1      (*((volatile uint32_t*)(0x39E00014)))
195
#define ECC_INT_CLR   (*((volatile uint32_t*)(0x39E00040)))
196
#define INTMSK_ECC             0x80000
197
#define ECCCTRL_STARTDECODING  (1 << 0)
198
#define ECCCTRL_STARTENCODING  (1 << 1)
199
#define ECCCTRL_STARTDECNOSYND (1 << 2)
200
 
201
 
202
/////CLICKWHEEL/////
203
#define WHEEL00      (*((volatile uint32_t*)(0x3C200000)))
204
#define WHEEL04      (*((volatile uint32_t*)(0x3C200004)))
205
#define WHEEL08      (*((volatile uint32_t*)(0x3C200008)))
206
#define WHEEL0C      (*((volatile uint32_t*)(0x3C20000C)))
207
#define WHEEL10      (*((volatile uint32_t*)(0x3C200010)))
208
#define WHEELINT     (*((volatile uint32_t*)(0x3C200014)))
209
#define WHEELRX      (*((volatile uint32_t*)(0x3C200018)))
210
#define WHEELTX      (*((volatile uint32_t*)(0x3C20001C)))
211
 
212
 
213
/////AES/////
214
#define AESCONTROL   (*((volatile uint32_t*)(0x39800000)))
215
#define AESGO        (*((volatile uint32_t*)(0x39800004)))
216
#define AESUNKREG0   (*((volatile uint32_t*)(0x39800008)))
217
#define AESSTATUS    (*((volatile uint32_t*)(0x3980000C)))
218
#define AESUNKREG1   (*((volatile uint32_t*)(0x39800010)))
219
#define AESKEYLEN    (*((volatile uint32_t*)(0x39800014)))
220
#define AESOUTSIZE   (*((volatile uint32_t*)(0x39800018)))
221
#define AESOUTADDR   (*((volatile uint32_t*)(0x39800020)))
222
#define AESINSIZE    (*((volatile uint32_t*)(0x39800024)))
223
#define AESINADDR    (*((volatile uint32_t*)(0x39800028)))
224
#define AESAUXSIZE   (*((volatile uint32_t*)(0x3980002C)))
225
#define AESAUXADDR   (*((volatile uint32_t*)(0x39800030)))
226
#define AESSIZE3     (*((volatile uint32_t*)(0x39800034)))
227
#define AESKEY         ((volatile uint32_t*)(0x3980004C))
228
#define AESTYPE      (*((volatile uint32_t*)(0x3980006C)))
229
#define AESIV          ((volatile uint32_t*)(0x39800074))
230
#define AESTYPE2     (*((volatile uint32_t*)(0x39800088)))
231
#define AESUNKREG2   (*((volatile uint32_t*)(0x3980008C)))
232
 
233
/////HASH/////
234
#define HASHCTRL     (*((volatile uint32_t*)(0x3C600000)))
235
#define HASHRESULT     ((volatile uint32_t*)(0x3C600020))
236
#define HASHDATAIN     ((volatile uint32_t*)(0x3C600040))
237
 
238
 
239
/////TIMER/////
14 theseven 240
#define TACON        (*((volatile uint32_t*)(0x3C700000)))
241
#define TACMD        (*((volatile uint32_t*)(0x3C700004)))
242
#define TADATA0      (*((volatile uint32_t*)(0x3C700008)))
243
#define TADATA1      (*((volatile uint32_t*)(0x3C70000C)))
244
#define TAPRE        (*((volatile uint32_t*)(0x3C700010)))
245
#define TACNT        (*((volatile uint32_t*)(0x3C700014)))
246
#define TBCON        (*((volatile uint32_t*)(0x3C700020)))
247
#define TBCMD        (*((volatile uint32_t*)(0x3C700024)))
248
#define TBDATA0      (*((volatile uint32_t*)(0x3C700028)))
249
#define TBDATA1      (*((volatile uint32_t*)(0x3C70002C)))
250
#define TBPRE        (*((volatile uint32_t*)(0x3C700030)))
251
#define TBCNT        (*((volatile uint32_t*)(0x3C700034)))
252
#define TCCON        (*((volatile uint32_t*)(0x3C700040)))
253
#define TCCMD        (*((volatile uint32_t*)(0x3C700044)))
254
#define TCDATA0      (*((volatile uint32_t*)(0x3C700048)))
255
#define TCDATA1      (*((volatile uint32_t*)(0x3C70004C)))
256
#define TCPRE        (*((volatile uint32_t*)(0x3C700050)))
257
#define TCCNT        (*((volatile uint32_t*)(0x3C700054)))
258
#define TDCON        (*((volatile uint32_t*)(0x3C700060)))
259
#define TDCMD        (*((volatile uint32_t*)(0x3C700064)))
260
#define TDDATA0      (*((volatile uint32_t*)(0x3C700068)))
261
#define TDDATA1      (*((volatile uint32_t*)(0x3C70006C)))
262
#define TDPRE        (*((volatile uint32_t*)(0x3C700070)))
263
#define TDCNT        (*((volatile uint32_t*)(0x3C700074)))
2 theseven 264
#define FIVE_USEC_TIMER (((uint64_t)(*((volatile uint32_t*)(0x3C700080))) << 32) \
265
                        | (*((volatile uint32_t*)(0x3C700084))))  /* 64bit 5usec timer */
266
#define USEC_TIMER      ((long)(FIVE_USEC_TIMER * 5)) /* usecs */
14 theseven 267
#define INTMSK_TIMER (1<<5)
2 theseven 268
 
269
 
270
#endif