aureg.h revision 1.3 1 1.3 hpeyerl /* $NetBSD: aureg.h,v 1.3 2003/04/01 17:30:09 hpeyerl Exp $ */
2 1.1 simonb
3 1.1 simonb /*
4 1.1 simonb * Copyright 2002 Wasabi Systems, Inc.
5 1.1 simonb * All rights reserved.
6 1.1 simonb *
7 1.1 simonb * Written by Simon Burge for Wasabi Systems, Inc.
8 1.1 simonb *
9 1.1 simonb * Redistribution and use in source and binary forms, with or without
10 1.1 simonb * modification, are permitted provided that the following conditions
11 1.1 simonb * are met:
12 1.1 simonb * 1. Redistributions of source code must retain the above copyright
13 1.1 simonb * notice, this list of conditions and the following disclaimer.
14 1.1 simonb * 2. Redistributions in binary form must reproduce the above copyright
15 1.1 simonb * notice, this list of conditions and the following disclaimer in the
16 1.1 simonb * documentation and/or other materials provided with the distribution.
17 1.1 simonb * 3. All advertising materials mentioning features or use of this software
18 1.1 simonb * must display the following acknowledgement:
19 1.1 simonb * This product includes software developed for the NetBSD Project by
20 1.1 simonb * Wasabi Systems, Inc.
21 1.1 simonb * 4. The name of Wasabi Systems, Inc. may not be used to endorse
22 1.1 simonb * or promote products derived from this software without specific prior
23 1.1 simonb * written permission.
24 1.1 simonb *
25 1.1 simonb * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
26 1.1 simonb * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27 1.1 simonb * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 1.1 simonb * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
29 1.1 simonb * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 1.1 simonb * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 1.1 simonb * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 1.1 simonb * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 1.1 simonb * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 1.1 simonb * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 1.1 simonb * POSSIBILITY OF SUCH DAMAGE.
36 1.1 simonb */
37 1.1 simonb
38 1.1 simonb /* *********************************************************************
39 1.1 simonb * Naming schemes for constants in these files:
40 1.1 simonb *
41 1.1 simonb * M_xxx MASK constant (identifies bits in a register).
42 1.1 simonb * For multi-bit fields, all bits in the field will
43 1.1 simonb * be set.
44 1.1 simonb *
45 1.1 simonb * K_xxx "Code" constant (value for data in a multi-bit
46 1.1 simonb * field). The value is right justified.
47 1.1 simonb *
48 1.1 simonb * V_xxx "Value" constant. This is the same as the
49 1.1 simonb * corresponding "K_xxx" constant, except it is
50 1.1 simonb * shifted to the correct position in the register.
51 1.1 simonb *
52 1.1 simonb * S_xxx SHIFT constant. This is the number of bits that
53 1.1 simonb * a field value (code) needs to be shifted
54 1.1 simonb * (towards the left) to put the value in the right
55 1.1 simonb * position for the register.
56 1.1 simonb *
57 1.1 simonb * A_xxx ADDRESS constant. This will be a physical
58 1.1 simonb * address. Use the MIPS_PHYS_TO_KSEG1 macro to
59 1.1 simonb * generate a K1SEG address.
60 1.1 simonb *
61 1.1 simonb * R_xxx RELATIVE offset constant. This is an offset from
62 1.1 simonb * an A_xxx constant (usually the first register in
63 1.1 simonb * a group).
64 1.1 simonb *
65 1.1 simonb * G_xxx(X) GET value. This macro obtains a multi-bit field
66 1.1 simonb * from a register, masks it, and shifts it to
67 1.1 simonb * the bottom of the register (retrieving a K_xxx
68 1.1 simonb * value, for example).
69 1.1 simonb *
70 1.1 simonb * V_xxx(X) VALUE. This macro computes the value of a
71 1.1 simonb * K_xxx constant shifted to the correct position
72 1.1 simonb * in the register.
73 1.1 simonb ********************************************************************* */
74 1.1 simonb
75 1.1 simonb #if !defined(__ASSEMBLER__)
76 1.1 simonb #define _MAKE64(x) ((uint64_t)(x))
77 1.1 simonb #define _MAKE32(x) ((uint32_t)(x))
78 1.1 simonb #else
79 1.1 simonb #define _MAKE64(x) (x)
80 1.1 simonb #define _MAKE32(x) (x)
81 1.1 simonb #endif
82 1.1 simonb
83 1.1 simonb /* Make a mask for 1 bit at position 'n' */
84 1.1 simonb #define _MAKEMASK1_64(n) (_MAKE64(1) << _MAKE64(n))
85 1.1 simonb #define _MAKEMASK1_32(n) (_MAKE32(1) << _MAKE32(n))
86 1.1 simonb
87 1.1 simonb /* Make a mask for 'v' bits at position 'n' */
88 1.1 simonb #define _MAKEMASK_64(v,n) (_MAKE64((_MAKE64(1)<<(v))-1) << _MAKE64(n))
89 1.1 simonb #define _MAKEMASK_32(v,n) (_MAKE32((_MAKE32(1)<<(v))-1) << _MAKE32(n))
90 1.1 simonb
91 1.1 simonb /* Make a value at 'v' at bit position 'n' */
92 1.1 simonb #define _MAKEVALUE_64(v,n) (_MAKE64(v) << _MAKE64(n))
93 1.1 simonb #define _MAKEVALUE_32(v,n) (_MAKE32(v) << _MAKE32(n))
94 1.1 simonb
95 1.1 simonb #define _GETVALUE_64(v,n,m) ((_MAKE64(v) & _MAKE64(m)) >> _MAKE64(n))
96 1.1 simonb #define _GETVALUE_32(v,n,m) ((_MAKE32(v) & _MAKE32(m)) >> _MAKE32(n))
97 1.1 simonb
98 1.1 simonb
99 1.1 simonb /************************************************************************/
100 1.1 simonb /******************** AC97 Controller registers *********************/
101 1.1 simonb /************************************************************************/
102 1.1 simonb #define AC97_BASE 0x10000000
103 1.1 simonb
104 1.1 simonb #define AC97_CONFIG 0x00
105 1.1 simonb
106 1.1 simonb #define M_AC97CFG_RS _MAKEMASK1_32(0)
107 1.1 simonb #define M_AC97CFG_SN _MAKEMASK1_32(1)
108 1.1 simonb #define M_AC97CFG_SG _MAKEMASK1_32(2)
109 1.1 simonb
110 1.1 simonb #define S_AC97CFG_XS _MAKE32(12)
111 1.1 simonb #define M_AC97CFG_XS _MAKEMASK_32(10)
112 1.1 simonb #define V_AC97CFG_XS(x) _MAKEVALUE_32(x, S_AC97CFG_XS)
113 1.1 simonb #define G_AC97CFG_XS(x) _GETVALUE_32(x, S_AC97CFG_XS, M_AC97CFG_XS)
114 1.1 simonb
115 1.1 simonb #define S_AC97CFG_RC _MAKE32(12)
116 1.1 simonb #define M_AC97CFG_RC _MAKEMASK_32(10)
117 1.1 simonb #define V_AC97CFG_RC(x) _MAKEVALUE_32(x, S_AC97CFG_RC)
118 1.1 simonb #define G_AC97CFG_RC(x) _GETVALUE_32(x, S_AC97CFG_RC, M_AC97CFG_RC)
119 1.1 simonb
120 1.1 simonb #define AC97_STATUS 0x04
121 1.1 simonb
122 1.1 simonb #define M_AC97STAT_RF _MAKEMASK1_32(0)
123 1.1 simonb #define M_AC97STAT_RE _MAKEMASK1_32(1)
124 1.1 simonb #define M_AC97STAT_TF _MAKEMASK1_32(3)
125 1.1 simonb #define M_AC97STAT_TE _MAKEMASK1_32(4)
126 1.1 simonb #define M_AC97STAT_CP _MAKEMASK1_32(6)
127 1.1 simonb #define M_AC97STAT_RD _MAKEMASK1_32(7)
128 1.1 simonb #define M_AC97STAT_RO _MAKEMASK1_32(8)
129 1.1 simonb #define M_AC97STAT_RU _MAKEMASK1_32(9)
130 1.1 simonb #define M_AC97STAT_XO _MAKEMASK1_32(10)
131 1.1 simonb #define M_AC97STAT_XU _MAKEMASK1_32(11)
132 1.1 simonb
133 1.1 simonb #define AC97_DATA 0x08
134 1.1 simonb
135 1.1 simonb #define S_AC97DATA_DATA _MAKE32(0)
136 1.1 simonb #define M_AC97DATA_DATA _MAKEMASK_32(16)
137 1.1 simonb #define V_AC97DATA_DATA(x) _MAKEVALUE_32(x, S_AC97DATA_DATA)
138 1.1 simonb #define G_AC97DATA_DATA(x) _GETVALUE_32(x, S_AC97DATA_DATA, M_AC97DATA_DATA)
139 1.1 simonb
140 1.1 simonb #define AC97_COMMAND 0x0c
141 1.1 simonb
142 1.1 simonb #define S_AC97CMD_INDEX _MAKE32(0)
143 1.1 simonb #define M_AC97CMD_INDEX _MAKEMASK_32(7)
144 1.1 simonb #define V_AC97CMD_INDEX(x) _MAKEVALUE_32(x, S_AC97CMD_INDEX)
145 1.1 simonb #define G_AC97CMD_INDEX(x) _GETVALUE_32(x, S_AC97CMD_INDEX, M_AC97CMD_INDEX)
146 1.1 simonb
147 1.1 simonb #define M_AC97CMD_RW _MAKEMASK1_32(7)
148 1.1 simonb
149 1.1 simonb #define S_AC97CMD_DATA _MAKE32(16)
150 1.1 simonb #define M_AC97CMD_DATA _MAKEMASK_32(16)
151 1.1 simonb #define V_AC97CMD_DATA(x) _MAKEVALUE_32(x, S_AC97CMD_DATA)
152 1.1 simonb #define G_AC97CMD_DATA(x) _GETVALUE_32(x, S_AC97CMD_DATA, M_AC97CMD_DATA)
153 1.1 simonb
154 1.1 simonb #define AC97_COMMAND_RESPONSE 0x0c
155 1.1 simonb
156 1.1 simonb #define S_AC97CMDRESP_DATA _MAKE32(0)
157 1.1 simonb #define M_AC97CMDRESP_DATA _MAKEMASK_32(16)
158 1.1 simonb #define V_AC97CMDRESP_DATA(x) _MAKEVALUE_32(x, S_AC97CMDRESP_DATA)
159 1.1 simonb #define G_AC97CMDRESP_DATA(x) _GETVALUE_32(x, S_AC97CMDRESP_DATA, M_AC97CMDRESP_DATA)
160 1.1 simonb
161 1.1 simonb #define AC97_ENABLE 0x10
162 1.1 simonb
163 1.1 simonb #define M_AC97EN_CE _MAKEMASK1_32(0)
164 1.1 simonb #define M_AC97EN_D _MAKEMASK1_32(1)
165 1.1 simonb
166 1.1 simonb #define AC97_SIZE 0x14 /* size of register set */
167 1.1 simonb
168 1.1 simonb /************************************************************************/
169 1.1 simonb /*********************** USB Host registers *************************/
170 1.1 simonb /************************************************************************/
171 1.1 simonb #define USBH_BASE 0x10100000
172 1.1 simonb
173 1.1 simonb #define USBH_ENABLE 0x7fffc
174 1.1 simonb #define UE_RD 0x00000010 /* reset done */
175 1.1 simonb #define UE_CE 0x00000008 /* clock enable */
176 1.1 simonb #define UE_E 0x00000004 /* enable */
177 1.1 simonb #define UE_C 0x00000002 /* coherent */
178 1.1 simonb #define UE_BE 0x00000001 /* big-endian */
179 1.1 simonb
180 1.1 simonb #define USBH_SIZE 0x80000 /* size of register set */
181 1.1 simonb
182 1.1 simonb /************************************************************************/
183 1.1 simonb /********************** USB Device registers ************************/
184 1.1 simonb /************************************************************************/
185 1.1 simonb #define USBD_BASE 0x10200000
186 1.1 simonb
187 1.1 simonb /************************************************************************/
188 1.1 simonb /************************* IRDA registers ***************************/
189 1.1 simonb /************************************************************************/
190 1.1 simonb #define IRDA_BASE 0x10300000
191 1.1 simonb
192 1.1 simonb /************************************************************************/
193 1.1 simonb /****************** Interrupt Controller registers ******************/
194 1.1 simonb /************************************************************************/
195 1.1 simonb
196 1.1 simonb #define IC0_BASE 0x10400000
197 1.1 simonb #define IC1_BASE 0x11800000
198 1.1 simonb
199 1.1 simonb /*
200 1.1 simonb * The *_READ registers read the current value of the register
201 1.1 simonb * The *_SET registers set to 1 all bits that are written 1
202 1.1 simonb * The *_CLEAR registers clear to zero all bits that are written as 1
203 1.1 simonb */
204 1.1 simonb #define IC_CONFIG0_READ 0x40 /* See table below */
205 1.1 simonb #define IC_CONFIG0_SET 0x40
206 1.1 simonb #define IC_CONFIG0_CLEAR 0x44
207 1.1 simonb
208 1.1 simonb #define IC_CONFIG1_READ 0x48 /* See table below */
209 1.1 simonb #define IC_CONFIG1_SET 0x48
210 1.1 simonb #define IC_CONFIG1_CLEAR 0x4c
211 1.1 simonb
212 1.1 simonb #define IC_CONFIG2_READ 0x50 /* See table below */
213 1.1 simonb #define IC_CONFIG2_SET 0x50
214 1.1 simonb #define IC_CONFIG2_CLEAR 0x54
215 1.1 simonb
216 1.1 simonb #define IC_REQUEST0_INT 0x54 /* Show active interrupts on request 0 */
217 1.1 simonb
218 1.1 simonb #define IC_SOURCE_READ 0x58 /* Interrupt source */
219 1.1 simonb #define IC_SOURCE_SET 0x58 /* 0 - test bit used as source */
220 1.1 simonb #define IC_SOURCE_CLEAR 0x5c /* 1 - peripheral/GPIO used as source */
221 1.1 simonb
222 1.1 simonb #define IC_REQUEST1_INT 0x5c /* Show active interrupts on request 1 */
223 1.1 simonb
224 1.1 simonb #define IC_ASSIGN_REQUEST_READ 0x60 /* Assigns the interrupt to one of the */
225 1.1 simonb #define IC_ASSIGN_REQUEST_SET 0x60 /* CPU requests (0 - assign to request 1, */
226 1.1 simonb #define IC_ASSIGN_REQUEST_CLEAR 0x64 /* 1 - assign to request 0) */
227 1.1 simonb
228 1.1 simonb #define IC_WAKEUP_READ 0x68 /* Controls whether the interrupt can */
229 1.1 simonb #define IC_WAKEUP_SET 0x68 /* cause a wakeup from IDLE */
230 1.1 simonb #define IC_WAKEUP_CLEAR 0x6c
231 1.1 simonb
232 1.1 simonb #define IC_MASK_READ 0x70 /* Enables/Disables the interrupt */
233 1.1 simonb #define IC_MASK_SET 0x70
234 1.1 simonb #define IC_MASK_CLEAR 0x74
235 1.1 simonb
236 1.1 simonb #define IC_RISING_EDGE_DETECT 0x78 /* Check/clear rising edge interrupts */
237 1.1 simonb #define IC_RISING_EDGE_DETECT_CLEAR 0x78
238 1.1 simonb
239 1.1 simonb #define IC_FAILLING_EDGE_DETECT 0x7c /* Check/clear falling edge interrupts */
240 1.1 simonb #define IC_FAILLING_EDGE_DETECT_CLEAR 0x7c
241 1.1 simonb
242 1.1 simonb #define IC_TEST_BIT 0x80 /* single bit source select testing register */
243 1.1 simonb
244 1.1 simonb /*
245 1.1 simonb * Interrupt Configuration Register Functions
246 1.1 simonb *
247 1.1 simonb * Cfg2[n] Cfg1[n] Cfg0[n] Function
248 1.1 simonb * 0 0 0 Interrupts Disabled
249 1.1 simonb * 0 0 1 Rising Edge Enabled
250 1.1 simonb * 0 1 0 Falling Edge Enabled
251 1.1 simonb * 0 1 1 Rising and Falling Edge Enabled
252 1.1 simonb * 1 0 0 Interrupts Disabled
253 1.1 simonb * 1 0 1 High Level Enabled
254 1.1 simonb * 1 1 0 Low Level Enabled
255 1.1 simonb * 1 1 1 Both Levels and Both Edges Enabled
256 1.1 simonb */
257 1.1 simonb
258 1.1 simonb /************************************************************************/
259 1.1 simonb /********************** Ethernet MAC registers **********************/
260 1.1 simonb /************************************************************************/
261 1.1 simonb
262 1.1 simonb #define MAC0_BASE 0x10500000
263 1.1 simonb #define MAC1_BASE 0x10510000
264 1.1 simonb #define MACx_SIZE 0x28
265 1.1 simonb
266 1.1 simonb #define AU1500_MAC0_BASE 0x11500000 /* Grr, difference on Au1500 */
267 1.1 simonb #define AU1500_MAC1_BASE 0x11510000 /* Grr, difference on Au1500 */
268 1.1 simonb
269 1.1 simonb #if 0
270 1.1 simonb #define MAC_CONTROL 0x00 /* operation mode and address filter */
271 1.1 simonb #define MC_RA 0x80000000 /* Receive All */
272 1.1 simonb #define MC_EM 0x40000000 /* Endian Mode - data buffer is big endian */
273 1.1 simonb #define MC_DRO 0x00800000 /* Disable Receive Own */
274 1.1 simonb #define MC_LM_MASK 0x00600000 /* Loopback Operating Mode - mask */
275 1.1 simonb #define MC_LM_NORMAL 0x00600000
276 1.1 simonb #define MC_LM_INTERNAL 0x00400000
277 1.1 simonb #define MC_LM_EXTERNAL 0x00200000
278 1.1 simonb #define MC_F 0x00100000 /* Full duplex mode */
279 1.1 simonb #define MC_PM 0x00080000 /* Pall all Multicast */
280 1.1 simonb #define MC_PR 0x00040000 /* Promiscious Mode */
281 1.1 simonb #define MC_IF 0x00020000 /* Inverse Filtering */
282 1.1 simonb #define MC_PB 0x00010000 /* Pass Bad frames */
283 1.1 simonb #define MC_HO 0x00008000 /* Hash Only filtering mode */
284 1.1 simonb #define MC_HP 0x00002000 /* Hash/Perfect filtering mode */
285 1.1 simonb #define MC_LC 0x00001000 /* Late Collision control */
286 1.1 simonb #define MC_DB 0x00000800 /* Disable Broadcast frames */
287 1.1 simonb #define MC_DR 0x00000400 /* Disable Retry */
288 1.1 simonb #define MC_AP 0x00000100 /* Automatic Pad stripping */
289 1.1 simonb #define MC_BL_MASK 0x000000c0 /* Backoff Limit mask */
290 1.1 simonb #define MC_BL_SHIFT 6
291 1.1 simonb #define MC_DC 0x00000020 /* Deferral Check */
292 1.1 simonb #define MC_TE 0x00000008 /* Transmitter Enable */
293 1.1 simonb #define MC_RE 0x00000004 /* Receiver Enable */
294 1.1 simonb #define MAC_ADDRESS_HIGH 0x04 /* high 16 bits of the MAC address */
295 1.1 simonb #define MAC_ADDRESS_LOW 0x08 /* lower 32 bits of the MAC address */
296 1.1 simonb #define MAC_MCAST_HASH_HIGH 0x0c /* high 16 bits of mcat hash address */
297 1.1 simonb #define MAC_MCAST_HASH_LOW 0x10 /* low 32 bits of mcat hash address */
298 1.1 simonb #define MAC_MII_CONTROL 0x14 /* control of PHY management interface */
299 1.1 simonb #define MMC_PHY_ADDR_MASK 0x0000f800 /* PHY Address mask */
300 1.1 simonb #define MMC_PHY_ADDR_SHIFT 11
301 1.1 simonb #define MMC_MIIREG_MASK 0x000007c0 /* MII Register mask */
302 1.1 simonb #define MMC_MIIREG_SHIFT 6
303 1.1 simonb #define MMC_MW 0x00000002 /* MII Write */
304 1.1 simonb #define MMC_MB 0x00000001 /* MII Busy */
305 1.1 simonb #define MAC_MII_DATA 0x18 /* data to/from PHY */
306 1.1 simonb #define MAC_FLOW_CONTROL 0x1c /* frame generation control */
307 1.1 simonb #define MFC_PT_MASK 0xffff0000 /* Pause Time mask */
308 1.1 simonb #define MFC_PT_SHIFT 16
309 1.1 simonb #define MFC_PC 0x00000004 /* Pass Control frame */
310 1.1 simonb #define MFC_FE 0x00000002 /* Flow Control enable */
311 1.1 simonb #define MFC_FB 0x00000001 /* Flow control Busy */
312 1.1 simonb #define MAC_VLAN1_TAG 0x20 /* VLAN1 tag */
313 1.1 simonb #define MAC_VLAN2_TAG 0x24 /* VLAN2 tag */
314 1.1 simonb #endif
315 1.1 simonb
316 1.1 simonb #define MAC0_ENABLE 0x10520000
317 1.1 simonb #define MAC1_ENABLE 0x10520004
318 1.1 simonb #define MACENx_SIZE 0x04
319 1.1 simonb
320 1.1 simonb #define AU1500_MAC0_ENABLE 0x11520000 /* Grr, difference on Au1500 */
321 1.2 simonb #define AU1500_MAC1_ENABLE 0x11520004 /* Grr, difference on Au1500 */
322 1.1 simonb
323 1.1 simonb #if 0
324 1.1 simonb #define ME_DR 0x40 /* DMA reset */
325 1.1 simonb #define ME_R2 0x20 /* Reset2 */
326 1.1 simonb #define ME_R1 0x10 /* Reset1 */
327 1.1 simonb #define ME_C 0x08 /* Cacheable */
328 1.1 simonb #define ME_TS 0x04 /* Toss */
329 1.1 simonb #define ME_R0 0x02 /* Reset0 */
330 1.1 simonb #define ME_EN 0x01 /* Clock Enable */
331 1.1 simonb #endif
332 1.1 simonb
333 1.1 simonb #define MAC0_DMA_BASE 0x14004000
334 1.1 simonb #define MAC1_DMA_BASE 0x14004200
335 1.1 simonb #define MACx_DMA_SIZE 0x140
336 1.1 simonb #if 0
337 1.1 simonb #define MAC_TXDMA 0x000
338 1.1 simonb #define MAC_RXDMA 0x100
339 1.1 simonb #define MAC_TXQLEN 4
340 1.1 simonb #define MAC_RXQLEN 4
341 1.1 simonb
342 1.1 simonb /* MAC Transmit Status registers */
343 1.1 simonb #define MTS_PR 0x80000000 /* Packet Retry */
344 1.1 simonb #define MTS_HB 0x00004000 /* ?!?? */
345 1.1 simonb #define MTS_CC_MASK 0x00003c00 /* Collision Count mask */
346 1.1 simonb #define MTS_CC_SHIFT 10
347 1.1 simonb #define MTS_LO 0x00000200 /* Late collision Observed */
348 1.1 simonb #define MTS_DF 0x00000100 /* Deferred */
349 1.1 simonb #define MTS_UR 0x00000080 /* Underrun */
350 1.1 simonb #define MTS_EC 0x00000040 /* Excessive Collisions */
351 1.1 simonb #define MTS_LC 0x00000020 /* Late Collision */
352 1.1 simonb #define MTS_ED 0x00000010 /* Excessive Deferral */
353 1.1 simonb #define MFS_LS 0x00000008 /* LoSs of carrier */
354 1.1 simonb #define MFS_NC 0x00000004 /* No Carrier */
355 1.1 simonb #define MFS_JT 0x00000002 /* Jabber Timeout */
356 1.1 simonb #define MFS_FA 0x00000001 /* Frame Aborted */
357 1.1 simonb
358 1.1 simonb /* MAC Transmit Buffer Address/Enable registers */
359 1.1 simonb #define MTBAE_ADDR_MASK 0xffffffe0 /* Buffer address */
360 1.1 simonb #define MTBAE_CB_MASK 0x0000000c /* Current (DMA) Buffer */
361 1.1 simonb #define MTBAE_CB_SHIFT 2
362 1.1 simonb #define MTBAE_DONE 0x00000002 /* transation DONE */
363 1.1 simonb #define MTBAE_EN 0x00000001 /* MAC DMA Enable */
364 1.1 simonb
365 1.1 simonb /* MAC Transmit Buffer Length registers */
366 1.1 simonb #define MTBL_LEN_MASK 0x000007ff /* buffer LENgth */
367 1.1 simonb #define MTBL_LEN_SHIFT 0
368 1.1 simonb
369 1.1 simonb /* MAC Receive Status registers */
370 1.1 simonb #define MRS_MI 0x80000000 /* MIssed frame */
371 1.1 simonb #define MRS_PF 0x40000000 /* Packet Filter */
372 1.1 simonb #define MRS_FF 0x20000000 /* Filtering Fail */
373 1.1 simonb #define MRS_BF 0x10000000 /* Broadcast Frame */
374 1.1 simonb #define MRS_MF 0x08000000 /* Multicast Frame */
375 1.1 simonb #define MRS_UC 0x04000000 /* Unsupported Control frame */
376 1.1 simonb #define MRS_CF 0x02000000 /* Control Frame */
377 1.1 simonb #define MRS_LE 0x01000000 /* Length Error */
378 1.1 simonb #define MRS_V2 0x00800000 /* Vlan2 ID */
379 1.1 simonb #define MRS_V1 0x00400000 /* Vlan1 ID */
380 1.1 simonb #define MRS_CR 0x00200000 /* CRC error */
381 1.1 simonb #define MRS_DB 0x00100000 /* Dribbling Bit */
382 1.1 simonb #define MRS_ME 0x00080000 /* MII Error */
383 1.1 simonb #define MRS_FT 0x00040000 /* Frame Type */
384 1.1 simonb #define MRS_CS 0x00020000 /* Collision Seen */
385 1.1 simonb #define MRS_FL 0x00010000 /* Frame too Long */
386 1.1 simonb #define MRS_RF 0x00008000 /* Runt Frame */
387 1.1 simonb #define MRS_WT 0x00004000 /* Watchdog Timeout */
388 1.1 simonb #define MRS_L_MASK 0x00003fff /* frame Length mask*/
389 1.1 simonb #define MRS_L_SHIFT 0
390 1.1 simonb
391 1.1 simonb /* MAC Receive Buffer Address/Enable registers */
392 1.1 simonb #define MRBAE_ADDR_MASK 0xffffffe0 /* Buffer address */
393 1.1 simonb #define MRBAE_CB_MASK 0x0000000c /* Current (DMA) Buffer */
394 1.1 simonb #define MRBAE_CB_SHIFT 2
395 1.1 simonb #define MRBAE_DN 0x00000002 /* transation DoNe */
396 1.1 simonb #define MRBAE_EN 0x00000001 /* MAC DMA Enable */
397 1.1 simonb #endif
398 1.1 simonb
399 1.1 simonb /************************************************************************/
400 1.1 simonb /******************** Secure Digital registers **********************/
401 1.1 simonb /************************************************************************/
402 1.1 simonb #define SD0_BASE 0x10600000
403 1.1 simonb #define SD1_BASE 0x10680000
404 1.1 simonb
405 1.1 simonb /************************************************************************/
406 1.1 simonb /************************* I^2S registers ***************************/
407 1.1 simonb /************************************************************************/
408 1.1 simonb #define I2S_BASE 0x11000000
409 1.1 simonb
410 1.1 simonb /************************************************************************/
411 1.1 simonb /************************** UART registers **************************/
412 1.1 simonb /************************************************************************/
413 1.1 simonb
414 1.1 simonb #define UART0_BASE 0x11100000
415 1.1 simonb #define UART1_BASE 0x11200000
416 1.1 simonb #define UART2_BASE 0x11300000
417 1.1 simonb #define UART3_BASE 0x11400000
418 1.1 simonb
419 1.1 simonb #define UART_RXDATA 0x000 /* Received Data FIFO (R) */
420 1.1 simonb #define UART_TXDATA 0x004 /* Transmit Data FIFO (W) */
421 1.1 simonb #define UART_INTERRUPT_ENABLE 0x008 /* Interrupt Enable Register (R/W) */
422 1.1 simonb #define UIE_MIE 0x8 /* Modem Status Interrupt enable */
423 1.1 simonb #define UIE_LIE 0x4 /* Line Status Interrupt enable */
424 1.1 simonb #define UIE_TIE 0x2 /* Transmit Interrupt Enable */
425 1.1 simonb #define UIE_RIE 0x1 /* Receive Interrupt Enable */
426 1.1 simonb #define UART_INTERRUPT_CAUSE 0x00c /* Pending Interrupt Cause Register (R) */
427 1.1 simonb #define UIC_IID_MASK 0xe /* mask for Interrupt IDentifier */
428 1.1 simonb #define UIC_IID_MS 0x0 /* Modem Status */
429 1.1 simonb #define UIC_IID_TBA 0x2 /* Transmit Buffer Available */
430 1.1 simonb #define UIC_IID_RDA 0x4 /* Receive Data Available */
431 1.1 simonb #define UIC_IID_RLS 0x6 /* Receive Line Status */
432 1.1 simonb #define UIC_IID_CTO 0xc /* Character Time Out */
433 1.1 simonb #define UIC_IP 0x1 /* XXX-no?-XXX Interrupt Pending */
434 1.1 simonb #define UART_FIFO_CONTROL 0x010 /* FIFO Control Register (W) */
435 1.1 simonb #define UFC_RFT_0 0x00 /* Receiver FIFO Threshold of 0 chars */
436 1.1 simonb #define UFC_RFT_4 0x40 /* Receiver FIFO Threshold of 4 chars */
437 1.1 simonb #define UFC_RFT_8 0x80 /* Receiver FIFO Threshold of 8 chars */
438 1.1 simonb #define UFC_RFT_12 0xc0 /* Receiver FIFO Threshold of 12 chars */
439 1.1 simonb #define UFC_TFT_0 0x00 /* Transmit FIFO Threshold of 0 chars */
440 1.1 simonb #define UFC_TFT_4 0x10 /* Transmit FIFO Threshold of 4 chars */
441 1.1 simonb #define UFC_TFT_8 0x20 /* Transmit FIFO Threshold of 8 chars */
442 1.1 simonb #define UFC_TFT_12 0x30 /* Transmit FIFO Threshold of 12 chars */
443 1.1 simonb #define UFC_MS 0x08 /* Mode Select */
444 1.1 simonb #define UFC_TR 0x04 /* Transmitter Reset */
445 1.1 simonb #define UFC_RR 0x02 /* Receiver Reset */
446 1.1 simonb #define UFC_FE 0x01 /* FIFO Enable */
447 1.1 simonb #define UART_LINE_CONTROL 0x014 /* Line Control Register (R/W) */
448 1.1 simonb #define ULC_SB 0x40 /* Send Break */
449 1.1 simonb #define ULC_PAR_MASK 0x30 /* mask for PARity select */
450 1.1 simonb #define ULC_PAR_ODD 0x00 /* odd parity */
451 1.1 simonb #define ULC_PAR_EVEN 0x10 /* even parity */
452 1.1 simonb #define ULC_PAR_MARK 0x20 /* mark parity */
453 1.1 simonb #define ULC_PAR_ZERO 0x30 /* zero parity */
454 1.1 simonb #define ULC_PE 0x08 /* Parity Enable */
455 1.1 simonb #define ULC_ST 0x04 /* 1.5 or 2 stop bits */
456 1.1 simonb #define ULC_WLS_MASK 0x03 /* mask for Word Length Select */
457 1.1 simonb #define ULC_WLS_5 0x00 /* 5 bits per serial word */
458 1.1 simonb #define ULC_WLS_6 0x01 /* 6 bits */
459 1.1 simonb #define ULC_WLS_7 0x02 /* 7 bits */
460 1.1 simonb #define ULC_WLS_8 0x03 /* 8 bits */
461 1.1 simonb #define UART_MODEM_CONTROL 0x018 /* Modem Line Control Register (UART 4 only) (R/W) */
462 1.1 simonb #define UMC_LB 0x10 /* Loop Back */
463 1.1 simonb #define UMC_X2 0x08 /* eXternal line 2 state */
464 1.1 simonb #define UMC_X1 0x04 /* eXternal line 1 state */
465 1.1 simonb #define UMC_RT 0x02 /* Request To send */
466 1.1 simonb #define UMC_DT 0x01 /* Data Terminal ready */
467 1.1 simonb #define UART_LINE_STATUS 0x01c /* Line Status Register (R/W) */
468 1.1 simonb #define ULS_RF 0x80 /* Receiver FIFO contains error */
469 1.1 simonb #define ULS_TE 0x40 /* Transmit shift register Empty */
470 1.1 simonb #define ULS_TFE 0x20 /* Transmit FIFO Empty */
471 1.1 simonb #define ULS_BI 0x10 /* Break Indication */
472 1.1 simonb #define ULS_FE 0x08 /* Framing Error */
473 1.1 simonb #define ULS_PE 0x04 /* Parity Error */
474 1.1 simonb #define ULS_OE 0x02 /* Overrun Error */
475 1.1 simonb #define ULS_DR 0x01 /* Data Ready */
476 1.1 simonb #define ULS_RCV_MASK 0x1f /* mask for incoming data or error */
477 1.1 simonb #define UART_MODEM_STATUS 0x020 /* Modem Line Status Register (UART 4 only) (R/W) */
478 1.1 simonb #define UMS_CD 0x80 /* data Carrier Detect */
479 1.1 simonb #define UMS_RI 0x40 /* Ring Indication */
480 1.1 simonb #define UMS_DS 0x20 /* Data Set ready */
481 1.1 simonb #define UMS_CT 0x10 /* Clear To send */
482 1.1 simonb #define UMS_DD 0x08 /* Delta DCD */
483 1.1 simonb #define UMS_TRI 0x04 /* Terminate Ring Indication */
484 1.1 simonb #define UMS_DR 0x02 /* Delta DSR */
485 1.1 simonb #define UMS_DC 0x01 /* Delta CTS */
486 1.1 simonb #define UART_CLOCK_DIVIDER 0x028 /* Baud Rate Clock Divider (16bit) */
487 1.1 simonb #define UART_MODULE_CONTROL 0x100 /* Module Control Register */
488 1.1 simonb #define UMC_CE 0x2 /* Module Clock Enable */
489 1.1 simonb #define UMC_ME 0x1 /* Module Enable */
490 1.1 simonb
491 1.1 simonb /************************************************************************/
492 1.1 simonb /************************* SSI registers ****************************/
493 1.1 simonb /************************************************************************/
494 1.1 simonb #define SSI0_BASE 0x11600000
495 1.1 simonb #define SSI1_BASE 0x11680000
496 1.1 simonb
497 1.1 simonb /************************************************************************/
498 1.1 simonb /************************ GPIO2 registers ***************************/
499 1.1 simonb /************************************************************************/
500 1.1 simonb #define GPIO2_BASE 0x11700000
501 1.1 simonb
502 1.1 simonb /************************************************************************/
503 1.1 simonb /****************** Programmable Counter registers ******************/
504 1.1 simonb /************************************************************************/
505 1.1 simonb
506 1.1 simonb #define SYS_BASE 0x11900000
507 1.1 simonb
508 1.1 simonb #define PC_BASE SYS_BASE
509 1.1 simonb
510 1.1 simonb #define PC_TRIM0 0x00 /* PC0 Divide (16 bits) */
511 1.1 simonb #define PC_COUNTER_WRITE0 0x04 /* set PC0 */
512 1.1 simonb #define PC_MATCH0_0 0x08 /* match counter & interrupt */
513 1.1 simonb #define PC_MATCH1_0 0x0c /* match counter & interrupt */
514 1.1 simonb #define PC_MATCH2_0 0x10 /* match counter & interrupt */
515 1.1 simonb #define PC_COUNTER_CONTROL 0x14 /* Programmable Counter Control */
516 1.1 simonb #define CC_E1S 0x00800000 /* Enable PC1 write status */
517 1.1 simonb #define CC_T1S 0x00100000 /* Trim PC1 write status */
518 1.1 simonb #define CC_M21 0x00080000 /* Match 2 of PC1 write status */
519 1.1 simonb #define CC_M11 0x00040000 /* Match 1 of PC1 write status */
520 1.1 simonb #define CC_M01 0x00020000 /* Match 0 of PC1 write status */
521 1.1 simonb #define CC_C1S 0x00010000 /* PC1 write status */
522 1.1 simonb #define CC_BP 0x00004000 /* Bypass OSC (use GPIO1) */
523 1.1 simonb #define CC_EN1 0x00002000 /* Enable PC1 */
524 1.1 simonb #define CC_BT1 0x00001000 /* Bypass Trim on PC1 */
525 1.1 simonb #define CC_EN0 0x00000800 /* Enable PC0 */
526 1.1 simonb #define CC_BT0 0x00000400 /* Bypass Trim on PC0 */
527 1.1 simonb #define CC_EO 0x00000100 /* Enable Oscillator */
528 1.1 simonb #define CC_E0S 0x00000080 /* Enable PC0 write status */
529 1.1 simonb #define CC_32S 0x00000020 /* 32.768kHz OSC status */
530 1.1 simonb #define CC_T0S 0x00000010 /* Trim PC0 write status */
531 1.1 simonb #define CC_M20 0x00000008 /* Match 2 of PC0 write status */
532 1.1 simonb #define CC_M10 0x00000004 /* Match 1 of PC0 write status */
533 1.1 simonb #define CC_M00 0x00000002 /* Match 0 of PC0 write status */
534 1.1 simonb #define CC_C0S 0x00000001 /* PC0 write status */
535 1.1 simonb #define PC_COUNTER_READ_0 0x40 /* get PC0 */
536 1.1 simonb #define PC_TRIM1 0x44 /* PC1 Divide (16 bits) */
537 1.1 simonb #define PC_COUNTER_WRITE1 0x48 /* set PC1 */
538 1.1 simonb #define PC_MATCH0_1 0x4c /* match counter & interrupt */
539 1.1 simonb #define PC_MATCH1_1 0x50 /* match counter & interrupt */
540 1.1 simonb #define PC_MATCH2_1 0x54 /* match counter & interrupt */
541 1.1 simonb #define PC_COUNTER_READ_1 0x58 /* get PC1 */
542 1.1 simonb
543 1.1 simonb #define PC_SIZE 0x5c /* size of register set */
544 1.1 simonb #define PC_RATE 32768 /* counter rate is 32.768kHz */
545 1.3 hpeyerl
546 1.3 hpeyerl /************************************************************************/
547 1.3 hpeyerl /******************* Frequency Generator Registers ******************/
548 1.3 hpeyerl /************************************************************************/
549 1.3 hpeyerl
550 1.3 hpeyerl #define SYS_FREQCTRL0 (SYS_BASE + 0x20)
551 1.3 hpeyerl #define SFC_FRDIV2(f) (f<<22) /* 29:22. Freq Divider 2 */
552 1.3 hpeyerl #define SFC_FE2 (1<<21) /* Freq generator output enable 2 */
553 1.3 hpeyerl #define SFC_FS2 (1<<20) /* Freq generator source 2 */
554 1.3 hpeyerl #define SFC_FRDIV1(f) (f<<12) /* 19:12. Freq Divider 1 */
555 1.3 hpeyerl #define SFC_FE1 (1<<11) /* Freq generator output enable 1 */
556 1.3 hpeyerl #define SFC_FS1 (1<<10) /* Freq generator source 1 */
557 1.3 hpeyerl #define SFC_FRDIV0(f) (f<<2) /* 9:2. Freq Divider 0 */
558 1.3 hpeyerl #define SFC_FE0 2 /* Freq generator output enable 0 */
559 1.3 hpeyerl #define SFC_FS0 1 /* Freq generator source 0 */
560 1.3 hpeyerl
561 1.3 hpeyerl #define SYS_FREQCTRL1 (SYS_BASE + 0x24)
562 1.3 hpeyerl #define SFC_FRDIV5(f) (f<<22) /* 29:22. Freq Divider 5 */
563 1.3 hpeyerl #define SFC_FE5 (1<<21) /* Freq generator output enable 5 */
564 1.3 hpeyerl #define SFC_FS5 (1<<20) /* Freq generator source 5 */
565 1.3 hpeyerl #define SFC_FRDIV4(f) (f<<12) /* 19:12. Freq Divider 4 */
566 1.3 hpeyerl #define SFC_FE4 (1<<11) /* Freq generator output enable 4 */
567 1.3 hpeyerl #define SFC_FS4 (1<<10) /* Freq generator source 4 */
568 1.3 hpeyerl #define SFC_FRDIV3(f) (f<<2) /* 9:2. Freq Divider 3 */
569 1.3 hpeyerl #define SFC_FE3 2 /* Freq generator output enable 3 */
570 1.3 hpeyerl #define SFC_FS3 1 /* Freq generator source 3 */
571 1.3 hpeyerl
572 1.3 hpeyerl /************************************************************************/
573 1.3 hpeyerl /****************** Clock Source Control Registers ******************/
574 1.3 hpeyerl /************************************************************************/
575 1.3 hpeyerl
576 1.3 hpeyerl #define SYS_CLKSRC (SYS_BASE + 0x28)
577 1.3 hpeyerl #define SCS_ME1(n) (n<<27) /* EXTCLK1 Clock Mux input select */
578 1.3 hpeyerl #define SCS_ME0(n) (n<<22) /* EXTCLK0 Clock Mux input select */
579 1.3 hpeyerl #define SCS_MPC(n) (n<<17) /* PCI clock mux input select */
580 1.3 hpeyerl #define SCS_MUH(n) (n<<12) /* USB Host clock mux input select */
581 1.3 hpeyerl #define SCS_MUD(n) (n<<7) /* USB Device clock mux input select */
582 1.3 hpeyerl #define SCS_MEx_AUX 0x1 /* Aux clock */
583 1.3 hpeyerl #define SCS_MEx_FREQ0 0x2 /* FREQ0 */
584 1.3 hpeyerl #define SCS_MEx_FREQ1 0x3 /* FREQ1 */
585 1.3 hpeyerl #define SCS_MEx_FREQ2 0x4 /* FREQ2 */
586 1.3 hpeyerl #define SCS_MEx_FREQ3 0x5 /* FREQ3 */
587 1.3 hpeyerl #define SCS_MEx_FREQ4 0x6 /* FREQ4 */
588 1.3 hpeyerl #define SCS_MEx_FREQ5 0x7 /* FREQ5 */
589 1.3 hpeyerl #define SCS_DE1 (1<<26) /* EXTCLK1 clock divider select */
590 1.3 hpeyerl #define SCS_CE1 (1<<25) /* EXTCLK1 clock select */
591 1.3 hpeyerl #define SCS_DE0 (1<<21) /* EXTCLK0 clock divider select */
592 1.3 hpeyerl #define SCS_CE0 (1<<20) /* EXTCLK0 clock select */
593 1.3 hpeyerl #define SCS_DPC (1<<16) /* PCI clock divider select */
594 1.3 hpeyerl #define SCS_CPC (1<<15) /* PCI clock select */
595 1.3 hpeyerl #define SCS_DUH (1<<11) /* USB Host clock divider select */
596 1.3 hpeyerl #define SCS_CUH (1<<10) /* USB Host clock select */
597 1.3 hpeyerl #define SCS_DUD (1<<6) /* USB Device clock divider select */
598 1.3 hpeyerl #define SCS_CUD (1<<5) /* USB Device clock select */
599 1.3 hpeyerl
600 1.3 hpeyerl /************************************************************************/
601 1.3 hpeyerl /*************************** PLL Control *****************************/
602 1.3 hpeyerl /************************************************************************/
603 1.3 hpeyerl
604 1.3 hpeyerl #define SYS_CPUPLL (SYS_BASE + 0x60)
605 1.3 hpeyerl #define SYS_AUXPLL (SYS_BASE + 0x64)
606