1 |
27 |
unneback |
#ifndef CYGONCE_HAL_EDB7XXX_H
|
2 |
|
|
#define CYGONCE_HAL_EDB7XXX_H
|
3 |
|
|
|
4 |
|
|
/*=============================================================================
|
5 |
|
|
//
|
6 |
|
|
// hal_edb7xxx.h
|
7 |
|
|
//
|
8 |
|
|
// HAL Support for Kernel Diagnostic Routines
|
9 |
|
|
//
|
10 |
|
|
//=============================================================================
|
11 |
|
|
//####ECOSGPLCOPYRIGHTBEGIN####
|
12 |
|
|
// -------------------------------------------
|
13 |
|
|
// This file is part of eCos, the Embedded Configurable Operating System.
|
14 |
|
|
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
|
15 |
|
|
//
|
16 |
|
|
// eCos is free software; you can redistribute it and/or modify it under
|
17 |
|
|
// the terms of the GNU General Public License as published by the Free
|
18 |
|
|
// Software Foundation; either version 2 or (at your option) any later version.
|
19 |
|
|
//
|
20 |
|
|
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
|
21 |
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
22 |
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
23 |
|
|
// for more details.
|
24 |
|
|
//
|
25 |
|
|
// You should have received a copy of the GNU General Public License along
|
26 |
|
|
// with eCos; if not, write to the Free Software Foundation, Inc.,
|
27 |
|
|
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
28 |
|
|
//
|
29 |
|
|
// As a special exception, if other files instantiate templates or use macros
|
30 |
|
|
// or inline functions from this file, or you compile this file and link it
|
31 |
|
|
// with other works to produce a work based on this file, this file does not
|
32 |
|
|
// by itself cause the resulting work to be covered by the GNU General Public
|
33 |
|
|
// License. However the source code for this file must still be made available
|
34 |
|
|
// in accordance with section (3) of the GNU General Public License.
|
35 |
|
|
//
|
36 |
|
|
// This exception does not invalidate any other reasons why a work based on
|
37 |
|
|
// this file might be covered by the GNU General Public License.
|
38 |
|
|
//
|
39 |
|
|
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
|
40 |
|
|
// at http://sources.redhat.com/ecos/ecos-license/
|
41 |
|
|
// -------------------------------------------
|
42 |
|
|
//####ECOSGPLCOPYRIGHTEND####
|
43 |
|
|
//=============================================================================
|
44 |
|
|
//#####DESCRIPTIONBEGIN####
|
45 |
|
|
//
|
46 |
|
|
// Author(s): gthomas
|
47 |
|
|
// Contributors: gthomas
|
48 |
|
|
// Date: 1999-04-19
|
49 |
|
|
// Purpose: Cirrus Logic EDB7XXX hardware description
|
50 |
|
|
// Description:
|
51 |
|
|
// Usage: #include <cyg/hal/hal_edb7xxx.h>
|
52 |
|
|
//
|
53 |
|
|
//####DESCRIPTIONEND####
|
54 |
|
|
//
|
55 |
|
|
//===========================================================================*/
|
56 |
|
|
|
57 |
|
|
// Note: these defintions match the documentation, thus no attempt is made
|
58 |
|
|
// to sanitise (mangle) the names. Also, care should be taken to keep this
|
59 |
|
|
// clean for use in assembly code (no "C" constructs).
|
60 |
|
|
|
61 |
|
|
// Comment above notwithstanding, this is needed for the clock UART_DIVISOR
|
62 |
|
|
// selection below.
|
63 |
|
|
#include <pkgconf/hal_arm_edb7xxx.h>
|
64 |
|
|
|
65 |
|
|
#define PADR 0x80000000 // Port A data register
|
66 |
|
|
#define PBDR 0x80000001 // Port B data register
|
67 |
|
|
#define PDDR 0x80000003 // Port D data register
|
68 |
|
|
#define PADDR 0x80000040 // Port A data direction register
|
69 |
|
|
#define PBDDR 0x80000041 // Port B data direction register
|
70 |
|
|
#define PDDDR 0x80000043 // Port D data direction register
|
71 |
|
|
#define PEDR 0x80000080 // Port E data register
|
72 |
|
|
#define PEDDR 0x800000C0 // Port E data direction register
|
73 |
|
|
|
74 |
|
|
#define SYSCON1 0x80000100 // System control register #1
|
75 |
|
|
#define SYSCON1_KBD_CTL 0xF // Keyboard scan - mask
|
76 |
|
|
#define SYSCON1_KBD_HIGH 0 // Keyboard scan - all columns high
|
77 |
|
|
#define SYSCON1_KBD_LOW 1 // Keyboard scan - all columns low
|
78 |
|
|
#define SYSCON1_KBD_TRISTATE 2 // Keyboard scan - all columns tri-state
|
79 |
|
|
#define SYSCON1_KBD_COL(n) (n+8)// Keyboard scan - select column 'n'
|
80 |
|
|
#define SYSCON1_TC1M (1<<4) // Timer/counter #1 - prescale mode
|
81 |
|
|
#define SYSCON1_TC1S (1<<5) // Timer/counter #1 - source (1=512KHz,0=2KHz)
|
82 |
|
|
#define SYSCON1_TC2M (1<<6) // Timer/counter #2 - prescale mode
|
83 |
|
|
#define SYSCON1_TC2S (1<<7) // Timer/counter #2 - source (1=512KHz,0=2KHz)
|
84 |
|
|
#define SYSCON1_UART1EN (1<<8) // UART #1 enable
|
85 |
|
|
#define SYSCON1_BZTOG (1<<9) // Buzzer bit
|
86 |
|
|
#define SYSCON1_BZMOD (1<<10) // Buzzer mode (0=direct,1=TC1)
|
87 |
|
|
#define SYSCON1_DBGEN (1<<11) // Enable debug mode
|
88 |
|
|
#define SYSCON1_LCDEN (1<<12) // Enable LCD
|
89 |
|
|
#define SYSCON1_CDENTX (1<<13) // Enable Tx on CODEC
|
90 |
|
|
#define SYSCON1_CDENRX (1<<14) // Enable Rx on CODEC
|
91 |
|
|
#define SYSCON1_SIREN (1<<15) // Enable SIR protocol on UART #1
|
92 |
|
|
#define SYSCON1_ADCKSEL (3<<16) // Microwire clock
|
93 |
|
|
#define SYSCON1_ADC_CLOCK_4kHZ (0<<16)
|
94 |
|
|
#define SYSCON1_ADC_CLOCK_16kHZ (1<<16)
|
95 |
|
|
#define SYSCON1_ADC_CLOCK_64kHZ (2<<16)
|
96 |
|
|
#define SYSCON1_ADC_CLOCK_128kHZ (3<<16)
|
97 |
|
|
#define SYSCON1_EXCKEN (1<<18) // External expansion clock enable
|
98 |
|
|
#define SYSCON1_WAKEDIS (1<<19) // Disable wakeup from snooze (do not disturb)
|
99 |
|
|
#define SYSCON1_IRTXM (1<<20) // IrDA Tx mode
|
100 |
|
|
|
101 |
|
|
#define SYSCON2 0x80001100 // System control register #2
|
102 |
|
|
#define SYSCON2_SERSEL (1<<0) // 0=master/slave SSI, 1=CODEC
|
103 |
|
|
#define SYSCON2_KBD6 (1<<1) // 0=8 bit keyboard, 1=6 bit
|
104 |
|
|
#define SYSCON2_DRAMSZ (1<<2) // DRAM width 0=32, 1=16
|
105 |
|
|
#define SYSCON2_KBWEN (1<<3) // 1=allow wake up from keyboard
|
106 |
|
|
#define SYSCON2_SS2TXEN (1<<4) // Enable Tx on SS2
|
107 |
|
|
#define SYSCON2_PCMCIA1 (1<<5) // Enable PCMCIA slot #1
|
108 |
|
|
#define SYSCON2_PCMCIA2 (1<<6) // Enable PCMCIA slot #2
|
109 |
|
|
#define SYSCON2_SS2RXEN (1<<7) // Enable Rx on SS2
|
110 |
|
|
#define SYSCON2_UART2EN (1<<8) // Enable UART #2
|
111 |
|
|
#define SYSCON2_SS2MAEN (1<<9) // Enable master mode on SS2
|
112 |
|
|
#define SYSCON2_SNZPOL (1<<10) // Polarity of LCD during snooze
|
113 |
|
|
#define SYSCON2_LCDSNZE (1<<11)
|
114 |
|
|
#define SYSCON2_OSTB (1<<12) // Operating system timing 0=512KHz, 1=500KHz
|
115 |
|
|
#define SYSCON2_CLKENSL (1<<13) // Source of run/clken signal 0=CLKEN, 1=RUN
|
116 |
|
|
#define SYSCON2_BUZFREQ (1<<14) // Buzzer frequency 0=timer, 1=fixed PLL/xtal
|
117 |
|
|
|
118 |
|
|
#define SYSCON3 0x80002200 // System control #3
|
119 |
|
|
#define SYSCON3_ADCCON (1<<0) // ADC enable
|
120 |
|
|
#define SYSCON3_CLKCTL(n) (n<<1) // Processor block speed ((n+1)*18.432)MHz
|
121 |
|
|
#if defined(__EDB7209)
|
122 |
|
|
#define SYSCON3_I2SSEL (1<<3) // Enable i2s instead of ssi#2
|
123 |
|
|
#define SYSCON3_FASTWAKE (1<<8) // Determines wakeup in relationship
|
124 |
|
|
// to the 4 kHZ or 8 Hz clock
|
125 |
|
|
#define SYSCON3_DAIEN (1<<9) // Enables the DAI
|
126 |
|
|
#endif
|
127 |
|
|
#if defined(__EDB7312) || defined(__EDB7209)
|
128 |
|
|
#define SYSCON3_ADCCKNSEN (1<<4) // Determines on which edge ADC
|
129 |
|
|
// data is transmitted and read
|
130 |
|
|
// in relationship to ADCCLK
|
131 |
|
|
#if defined(__EDB7312)
|
132 |
|
|
#define SYSCON3_DAISEL (1<<3) // Enable DAI instead of SSI
|
133 |
|
|
#define SYSCON3_128FS (1<<9) // Select DAI frame size
|
134 |
|
|
#define SYSCON3_ENPD67 (1<<10) // Configures Port D bits 6 and 7
|
135 |
|
|
#endif
|
136 |
|
|
#endif
|
137 |
|
|
|
138 |
|
|
#define SYSFLG1 0x80000140 // System flags #1
|
139 |
|
|
#define SYSFLG1_MCDR (1<<0) // Media changed - direct read
|
140 |
|
|
#define SYSFLG1_DCDET (1<<1) // 0=mains power, 1=battery
|
141 |
|
|
#define SYSFLG1_WUDR (1<<2) // Wakeup direct
|
142 |
|
|
#define SYSFLG1_WUON (1<<3) // Woken up
|
143 |
|
|
#define SYSFLG1_DID (0xF<<4) // Display ID
|
144 |
|
|
#define SYSFLG1_CTS (1<<8) // UART1 CTS
|
145 |
|
|
#define SYSFLG1_DSR (1<<9) // UART1 DSR
|
146 |
|
|
#define SYSFLG1_DCD (1<<10) // UART1 DCD
|
147 |
|
|
#define SYSFLG1_UBUSY1 (1<<11) // UART1 Tx busy
|
148 |
|
|
#define SYSFLG1_NBFLG (1<<12) // New battery flag
|
149 |
|
|
#define SYSFLG1_RSTFLG (1<<13) // Reset (button) flag
|
150 |
|
|
#define SYSFLG1_PFFLG (1<<14) // Power fail flag
|
151 |
|
|
#define SYSFLG1_CLDFLG (1<<15) // Cold start flag
|
152 |
|
|
#define SYSFLG1_RTCDIV (0x3F<<16) // Real time clock divider (counter)
|
153 |
|
|
#define SYSFLG1_URXFE1 (1<<22) // UART1 Rx FIFO empty
|
154 |
|
|
#define SYSFLG1_UTXFF1 (1<<23) // UART1 Tx FIFO full
|
155 |
|
|
#define SYSFLG1_CRXFE (1<<24) // CODEC Rx FIFO empty
|
156 |
|
|
#define SYSFLG1_CTXFF (1<<25) // CODEC Tx FIFO full
|
157 |
|
|
#define SYSFLG1_SSIBUSY (1<<26) // Synchronous serial interface busy
|
158 |
|
|
#define SYSFLG1_BOOTBITS (3<<27) // Boot mode (0=32,1=8,2=16,3=XX)
|
159 |
|
|
#define SYSFLG1_ID (1<<29) // ID=1
|
160 |
|
|
#define SYSFLG1_VERID (3<<30) // Board version
|
161 |
|
|
|
162 |
|
|
#define SYSFLG2 0x80001140 // System flags #2
|
163 |
|
|
|
164 |
|
|
#ifdef __EDB7312
|
165 |
|
|
#define SDCONF 0x80002300 // SDRAM configuration
|
166 |
|
|
#define SDRFOR 0x80002340 // SDRAM refresh
|
167 |
|
|
#endif
|
168 |
|
|
|
169 |
|
|
#define INTSR1 0x80000240 // Interrupt status register #1
|
170 |
|
|
#define INTSR1_EXTFIQ (1<<0) // External fast interrupt
|
171 |
|
|
#define INTSR1_BLINT (1<<1) // Battery low interrupt
|
172 |
|
|
#define INTSR1_WEINT (1<<2) // Watchdog expired interrupt
|
173 |
|
|
#define INTSR1_MCINT (1<<3) // Media changed interrupt
|
174 |
|
|
#define INTSR1_CSINT (1<<4) // CODEC sound interrupt
|
175 |
|
|
#define INTSR1_EINT1 (1<<5) // External interrupt #1
|
176 |
|
|
#define INTSR1_EINT2 (1<<6) // External interrupt #2
|
177 |
|
|
#define INTSR1_EINT3 (1<<7) // External interrupt #3
|
178 |
|
|
#define INTSR1_TC1OI (1<<8) // Timer/counter #1 underflow
|
179 |
|
|
#define INTSR1_TC2OI (1<<9) // Timer/counter #2 underflow
|
180 |
|
|
#define INTSR1_RTCMI (1<<10) // Real time clock match
|
181 |
|
|
#define INTSR1_TINT (1<<11) // 64Hz tick
|
182 |
|
|
#define INTSR1_UTXINT1 (1<<12) // UART1 Tx interrupt
|
183 |
|
|
#define INTSR1_URXINT1 (1<<13) // UART1 Rx interrupt
|
184 |
|
|
#define INTSR1_UMSINT (1<<14) // UART1 modem line change
|
185 |
|
|
#define INTSR1_SSEOTI (1<<15) // Synchronous serial end of transfer
|
186 |
|
|
#define INTMR1 0x80000280 // Interrupt mask register #1
|
187 |
|
|
|
188 |
|
|
#define INTSR2 0x80001240 // Interrupt status #2
|
189 |
|
|
#define INTSR2_KBDINT (1<<0) // Keyboard interrupt
|
190 |
|
|
#define INTSR2_SS2RX (1<<1) // Synchronous serial #2 Rx
|
191 |
|
|
#define INTSR2_SS2TX (1<<2) // Synchronous serial #2 Tx
|
192 |
|
|
#define INTSR2_UTXINT2 (1<<12) // UART #2 Tx interrupt
|
193 |
|
|
#define INTSR2_URXINT2 (1<<13) // UART #2 Rx interrupt
|
194 |
|
|
#define INTMR2 0x80001280 // Interrupt mask #2
|
195 |
|
|
|
196 |
|
|
#define INTSR3 0x80002240 // Interrupt status #3
|
197 |
|
|
#if defined(__EDB7211)
|
198 |
|
|
#define INTSR3_MCPINT (1<<0) // MCP interrupt
|
199 |
|
|
#endif
|
200 |
|
|
#if defined(__EDB7209)
|
201 |
|
|
#define INTSR3_I2SINT (1<<0) // I2S interface interrupt
|
202 |
|
|
#endif
|
203 |
|
|
#if defined(__EDB7312)
|
204 |
|
|
#define INTSR3_DAIINT (1<<0) // DAI interface interrupt
|
205 |
|
|
#endif
|
206 |
|
|
#define INTMR3 0x80002280 // Interrupt mask #3
|
207 |
|
|
|
208 |
|
|
#define UARTDR1 0x80000480 // UART #1 data register
|
209 |
|
|
#define UARTDR2 0x80001480 // UART #2 data register
|
210 |
|
|
#define UBLCR1 0x800004C0 // UART #1 baud rate / line control
|
211 |
|
|
#define UBLCR2 0x800014C0 // UART #2 baud rate / line control
|
212 |
|
|
#define UBLCR_BRDV 0xFFF // Baud rate
|
213 |
|
|
#define UBLCR_BREAK (1<<12) // Generate break signal
|
214 |
|
|
#define UBLCR_PRTEN (1<<13) // Enable parity
|
215 |
|
|
#define UBLCR_EVENPRT (1<<14) // 1=even parity, 0=odd
|
216 |
|
|
#define UBLCR_XSTOP (1<<15) // 0=1 stop bit, 1=2 stop bits
|
217 |
|
|
#define UBLCR_FIFOEN (1<<16) // Enable Tx/Rx FIFOs
|
218 |
|
|
#define UBLCR_WRDLEN (3<<17) // Word (character) length field
|
219 |
|
|
#define UBLCR_WRDLEN5 (0<<17)
|
220 |
|
|
#define UBLCR_WRDLEN6 (1<<17)
|
221 |
|
|
#define UBLCR_WRDLEN7 (2<<17)
|
222 |
|
|
#define UBLCR_WRDLEN8 (3<<17)
|
223 |
|
|
#define UART_DIVISOR 230400
|
224 |
|
|
#define UART_BITRATE(baud) ((UART_DIVISOR/(baud))-1)
|
225 |
|
|
#if 90317 == CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK
|
226 |
|
|
#undef UART_DIVISOR
|
227 |
|
|
// The speed enhancement is 22.5%
|
228 |
|
|
#define UART_DIVISOR (230400 * 1225/1000)
|
229 |
|
|
#endif
|
230 |
|
|
|
231 |
|
|
#define MEMCFG1 0x80000180 // Memory configuration register #1
|
232 |
|
|
#define MEMCFG2 0x800001C0 // Memory configuration register #2
|
233 |
|
|
|
234 |
|
|
#define DRFPR 0x80000200 // DRAM refresh period
|
235 |
|
|
|
236 |
|
|
#define LCDCON 0x800002C0 // LDC control
|
237 |
|
|
#define LCDCON_BUFSIZ 0x00001FFF // Video buffer size
|
238 |
|
|
#define LCDCON_BUFSIZ_S 0 // Position of buffer size
|
239 |
|
|
#define LCDCON_LINE_LENGTH 0x0007E000 // Line length
|
240 |
|
|
#define LCDCON_LINE_LENGTH_S 13 // Position of line length
|
241 |
|
|
#define LCDCON_PIX_PRESCALE 0x01F80000 // Pixel prescale value
|
242 |
|
|
#define LCDCON_PIX_PRESCALE_S 19 // Position of prescale value
|
243 |
|
|
#define LCDCON_AC_PRESCALE 0x3E000000 // LCD AC bias frequency
|
244 |
|
|
#define LCDCON_AC_PRESCALE_S 25 // Position to AC bias
|
245 |
|
|
#define LCDCON_GSEN 0x40000000 // Enable greyscale
|
246 |
|
|
#define LCDCON_GSMD 0x80000000 // Greyscale mode
|
247 |
|
|
// 00 - 1bpp, 01 - 2bpp, 11 - 4 bpp
|
248 |
|
|
|
249 |
|
|
#define TC1D 0x80000300 // Timer/Counter #1 register
|
250 |
|
|
#define TC2D 0x80000340 // Timer/Counter #2 register
|
251 |
|
|
#define RTCDR 0x80000380 // Real time clock data register
|
252 |
|
|
#define RTCMR 0x800003C0 // Real time clock match register
|
253 |
|
|
|
254 |
|
|
#define PMPCON 0x80000400 // DC-DC pump control
|
255 |
|
|
|
256 |
|
|
#define CODR 0x80000440 // CODEC data register
|
257 |
|
|
|
258 |
|
|
#define SYNCIO 0x80000500 // Synchronous I/O data register
|
259 |
|
|
|
260 |
|
|
#define PALLSW 0x80000540 // LCD palette - LSW (Pixel values 0..7)
|
261 |
|
|
#define PALMSW 0x80000580 // LCD palette - MSW (Pixel values 8..15)
|
262 |
|
|
|
263 |
|
|
#define STFCLR 0x800005C0 // Clear startup reason flags
|
264 |
|
|
#define BLEOI 0x80000600 // Clear battery low interrupt
|
265 |
|
|
#define MCEOI 0x80000640 // Clear media changed interrupt
|
266 |
|
|
#define TEOI 0x80000680 // Clear tick/watchdog interrupt
|
267 |
|
|
#define TC1EOI 0x800006C0 // Clear timer/counter #1 interrupt
|
268 |
|
|
#define TC2EOI 0x80000700 // Clear timer/counter #2 interrupt
|
269 |
|
|
#define RTCEOI 0x80000740 // Clear real time clock interrupt
|
270 |
|
|
#define UMSEOI 0x80000780 // Clear UART modem status change interrupt
|
271 |
|
|
#define COEOI 0x800007C0 // Clear CODEC sound interrupt
|
272 |
|
|
|
273 |
|
|
#define HALT 0x80000800 // Enter 'idle' state
|
274 |
|
|
#define STDBY 0x80000840 // Enter 'standby' state
|
275 |
|
|
|
276 |
|
|
#define FRBADDR 0x80001000 // LCD frame buffer start
|
277 |
|
|
|
278 |
|
|
#define SNZDISP 0x800012C0 // Snooze display size
|
279 |
|
|
|
280 |
|
|
#define SS2DR 0x80001500 // Master/slave SSI2 register
|
281 |
|
|
|
282 |
|
|
#define SRXEOF 0x80001600 // Clear Rx FIFO overflow flag
|
283 |
|
|
#define SS2POP 0x800016C0 // Pop SSI2 residual byte into FIFO
|
284 |
|
|
|
285 |
|
|
#define KBDEOI 0x80001700 // Clear keyboard interrupt
|
286 |
|
|
|
287 |
|
|
#define SNOOZE 0x80001800 // Enter 'snooze' state
|
288 |
|
|
|
289 |
|
|
#if defined(__EDB7211)
|
290 |
|
|
#define MCCR 0x80002000 // MCP control register
|
291 |
|
|
#define MCDR0 0x80002040 // MCP data register #0
|
292 |
|
|
#define MCDR1 0x80002080 // MCP data register #1
|
293 |
|
|
#define MCDR2 0x800020C0 // MCP data register #2
|
294 |
|
|
#define MCSR 0x80002100 // MCP status register
|
295 |
|
|
#endif
|
296 |
|
|
|
297 |
|
|
#if defined(__EDB7209) || \
|
298 |
|
|
defined(__EDB7312) || \
|
299 |
|
|
1
|
300 |
|
|
|
301 |
|
|
#define I2S_CTL 0x80002000 // I2S (Audio interface) control
|
302 |
|
|
#define I2S_CTL_FLAG 0x0404 // Magic
|
303 |
|
|
#define I2S_CTL_EN (1<<16) // Enable interface
|
304 |
|
|
#define I2S_CTL_ECS (1<<17) // External clock select
|
305 |
|
|
#define I2S_CTL_LCTM (1<<19) // Left channel transmit interrupt
|
306 |
|
|
#define I2S_CTL_LCRM (1<<20) // Left channel receive interrupt
|
307 |
|
|
#define I2S_CTL_RCTM (1<<21) // Right channel transmit interrupt
|
308 |
|
|
#define I2S_CTL_RCRM (1<<22) // Right channel receive interrupt
|
309 |
|
|
#if defined(__EDB7209)
|
310 |
|
|
#define I2S_CTL_LBM (1<<23) // Loop-back mode
|
311 |
|
|
#endif
|
312 |
|
|
#define I2S_RIGHT_FIFO 0x80002040 // Right channel FIFO access
|
313 |
|
|
#define I2S_LEFT_FIFO 0x80002080 // Left channel FIFO access
|
314 |
|
|
#define I2S_FIFO_CTL 0x800020C0 // FIFO control
|
315 |
|
|
#define I2S_FIFO_CTL_RIGHT_ENABLE 0x00118000
|
316 |
|
|
#define I2S_FIFO_CTL_RIGHT_DISABLE 0x00110000
|
317 |
|
|
#define I2S_FIFO_CTL_LEFT_ENABLE 0x000D8000
|
318 |
|
|
#define I2S_FIFO_CTL_LEFT_DISABLE 0x000D0000
|
319 |
|
|
#define I2S_STAT 0x80002100 // I2S interface status
|
320 |
|
|
#define I2S_STAT_RCTSR (1<<0) // Right channel transmit service request
|
321 |
|
|
#define I2S_STAT_RCRSR (1<<1) // Right channel receive service request
|
322 |
|
|
#define I2S_STAT_LCTSR (1<<2) // Left channel transmit service request
|
323 |
|
|
#define I2S_STAT_LCRSR (1<<3) // Left channel receive service request
|
324 |
|
|
#define I2S_STAT_RCTUR (1<<4) // Right channel transmit FIFO underrun
|
325 |
|
|
#define I2S_STAT_RCROR (1<<5) // Right channel receive FIFO overrun
|
326 |
|
|
#define I2S_STAT_LCTUR (1<<6) // Left channel transmit FIFO underrun
|
327 |
|
|
#define I2S_STAT_LCROR (1<<7) // Left channel receive FIFO overrun
|
328 |
|
|
#define I2S_STAT_RCTNF (1<<8) // Right channel transmit FIFO not full
|
329 |
|
|
#define I2S_STAT_RCRNE (1<<9) // Right channel receive FIFO not empty
|
330 |
|
|
#define I2S_STAT_LCTNF (1<<10) // Left channel transmit FIFO not full
|
331 |
|
|
#define I2S_STAT_LCRNE (1<<11) // Left channel receive FIFO not empty
|
332 |
|
|
#define I2S_STAT_FIFO (1<<12) // A FIFO operation has completed
|
333 |
|
|
#endif
|
334 |
|
|
|
335 |
|
|
#ifdef __EDB7312
|
336 |
|
|
// If DAI_ headers wishes to be used instead (for consistency)
|
337 |
|
|
#define DAI_CTL I2S_CTL
|
338 |
|
|
#define DAI_CTL_FLAG I2S_CTL_FLAG
|
339 |
|
|
#define DAI_CTL_EN I2S_CTL_EN
|
340 |
|
|
#define DAI_CTL_ECS I2S_CTL_ECS
|
341 |
|
|
#define DAI_CTL_LCTM I2S_CTL_LCTM
|
342 |
|
|
#define DAI_CTL_LCRM I2S_CTL_LCRM
|
343 |
|
|
#define DAI_CTL_RCTM I2S_CTL_RCTM
|
344 |
|
|
#define DAI_CTL_RCRM I2S_CTL_RCRM
|
345 |
|
|
|
346 |
|
|
#define DAI_RIGHT_FIFO I2S_RIGHT_FIFO
|
347 |
|
|
#define DAI_LEFT_FIFO I2S_LEFT_FIFO
|
348 |
|
|
|
349 |
|
|
#define DAI_FIFO_CTL I2S_FIFO_CTL
|
350 |
|
|
#define DAI_FIFO_CTL_RIGHT_ENABLE I2S_FIFO_CTL_RIGHT_ENABLE
|
351 |
|
|
#define DAI_FIFO_CTL_RIGHT_DISABLE I2S_FIFO_CTL_RIGHT_DISABLE
|
352 |
|
|
#define DAI_FIFO_CTL_LEFT_ENABLE I2S_FIFO_CTL_LEFT_ENABLE
|
353 |
|
|
#define DAI_FIFO_CTL_LEFT_DISABLE I2S_FIFO_CTL_LEFT_DISABLE
|
354 |
|
|
|
355 |
|
|
#define DAI_STAT I2S_STAT
|
356 |
|
|
#define DAI_STAT_RCTSR I2S_STAT_RCTSR
|
357 |
|
|
#define DAI_STAT_RCRSR I2S_STAT_RCRSR
|
358 |
|
|
#define DAI_STAT_LCTSR I2S_STAT_LCTSR
|
359 |
|
|
#define DAI_STAT_LCRSR I2S_STAT_LCRSR
|
360 |
|
|
#define DAI_STAT_RCTUR I2S_STAT_RCTUR
|
361 |
|
|
#define DAI_STAT_RCROR I2S_STAT_RCROR
|
362 |
|
|
#define DAI_STAT_LCTUR I2S_STAT_LCTUR
|
363 |
|
|
#define DAI_STAT_LCROR I2S_STAT_LCROR
|
364 |
|
|
#define DAI_STAT_RCTNF I2S_STAT_RCTNF
|
365 |
|
|
#define DAI_STAT_RCRNE I2S_STAT_RCRNE
|
366 |
|
|
#define DAI_STAT_LCTNF I2S_STAT_LCTNF
|
367 |
|
|
#define DAI_STAT_LCRNE I2S_STAT_LCRNE
|
368 |
|
|
#define DAI_STAT_FIFO I2S_STAT_FIFO
|
369 |
|
|
|
370 |
|
|
// Additional 7312 register
|
371 |
|
|
#define DAI_MODE 0x80002600 // I2S mode control register
|
372 |
|
|
#define DAI_MODE_I2SF64 (1<<0) // Frame size
|
373 |
|
|
#define DAI_MODE_CLKEN (1<<1) // Enable audio clock generator
|
374 |
|
|
#define DAI_MODE_CLKSRC (1<<2) // Select audio clock source
|
375 |
|
|
#define DAI_MODE_MCLK (1<<3) // Enables MCLK (BUZ) (256 frame size)
|
376 |
|
|
#define DAI_MODE_LBM (1<<5) // Loopback mode
|
377 |
|
|
|
378 |
|
|
#define DAI_MODE_AUDDIV_MASK 0x7F00 // Mask for the frequency divisor
|
379 |
|
|
// for the sample frequency and
|
380 |
|
|
// bit clock
|
381 |
|
|
|
382 |
|
|
#define SYSCON3_I2SSEL SYSCON3_DAISEL // Backward compatiblity
|
383 |
|
|
// for sample i2s_audio_fiq.s
|
384 |
|
|
|
385 |
|
|
#define INTSR3_I2SINT INTSR3_DAIINT // Backward compatiblity
|
386 |
|
|
// for sample i2s_audio_fiq.s
|
387 |
|
|
|
388 |
|
|
|
389 |
|
|
// Further additional 7312 register for special 90MHz variant:
|
390 |
|
|
// PLL_Multiplier_Register 0x80002610 - the location of the PLL multiplier register
|
391 |
|
|
// Value_For_90_MHz_Operation 0x31000000
|
392 |
|
|
#define EP7312_PLL_MR 0x80002610
|
393 |
|
|
#define EP7312_PLL_MR_FOR_90MHz 0x31000000
|
394 |
|
|
|
395 |
|
|
#endif
|
396 |
|
|
|
397 |
|
|
#define LEDFLSH 0x800022C0 // LED flash control
|
398 |
|
|
#define LEDFLSH_ENABLE (1<<6) // LED enabled
|
399 |
|
|
#define LEDFLSH_DUTY(n) ((n-1)<<2) // LED on ratio
|
400 |
|
|
#define LEDFLSH_PERIOD(n) (n-1) // LED active time (1..4)
|
401 |
|
|
|
402 |
|
|
#define KBD_PORT 0x30010000 // Extra 8 bits of keyboard data
|
403 |
|
|
|
404 |
|
|
/*---------------------------------------------------------------------------*/
|
405 |
|
|
/* end of hal_edb7xxx.h */
|
406 |
|
|
#endif /* CYGONCE_HAL_EDB7XXX_H */
|