to make u-boot work for fat32 filesystem
[jz_uboot.git] / include / asm-mips / jz4730.h
blob84d0aeef698c0d1e74a838f4a21753cfe8e6748e
1 /*
2 * Include file for Ingenic Semiconductor's JZ4730 CPU.
3 */
4 #ifndef __JZ4730_H__
5 #define __JZ4730_H__
7 #ifndef __ASSEMBLY__
9 #include <asm/addrspace.h>
10 #include <asm/cacheops.h>
12 #define cache_unroll(base,op) \
13 __asm__ __volatile__(" \
14 .set noreorder; \
15 .set mips3; \
16 cache %1, (%0); \
17 .set mips0; \
18 .set reorder" \
19 : \
20 : "r" (base), \
21 "i" (op));
23 static inline void jz_flush_dcache(void)
25 unsigned long start;
26 unsigned long end;
28 start = KSEG0;
29 end = start + CFG_DCACHE_SIZE;
30 while (start < end) {
31 cache_unroll(start,Index_Writeback_Inv_D);
32 start += CFG_CACHELINE_SIZE;
36 static inline void jz_flush_icache(void)
38 unsigned long start;
39 unsigned long end;
41 start = KSEG0;
42 end = start + CFG_ICACHE_SIZE;
43 while(start < end) {
44 cache_unroll(start,Index_Invalidate_I);
45 start += CFG_CACHELINE_SIZE;
49 /* cpu pipeline flush */
50 static inline void jz_sync(void)
52 __asm__ volatile ("sync");
55 static inline void jz_writeb(u32 address, u8 value)
57 *((volatile u8 *)address) = value;
60 static inline void jz_writew(u32 address, u8 value)
62 *((volatile u16 *)address) = value;
65 static inline void jz_writel(u32 address, u32 value)
67 *((volatile u32 *)address) = value;
70 static inline u8 jz_readb(u32 address)
72 return *((volatile u8 *)address);
75 static inline u16 jz_readw(u32 address)
77 return *((volatile u16 *)address);
80 static inline u32 jz_readl(u32 address)
82 return *((volatile u32 *)address);
85 #define REG8(addr) *((volatile u8 *)(addr))
86 #define REG16(addr) *((volatile u16 *)(addr))
87 #define REG32(addr) *((volatile u32 *)(addr))
89 #else
91 #define REG8(addr) (addr)
92 #define REG16(addr) (addr)
93 #define REG32(addr) (addr)
95 #endif /* !ASSEMBLY */
97 #define HARB_BASE 0xB3000000
98 #define EMC_BASE 0xB3010000
99 #define DMAC_BASE 0xB3020000
100 #define UHC_BASE 0xB3030000
101 #define UDC_BASE 0xB3040000
102 #define LCD_BASE 0xB3050000
103 #define CIM_BASE 0xB3060000
104 #define ETH_BASE 0xB3100000
105 #define NBM_BASE 0xB3F00000
107 #define CPM_BASE 0xB0000000
108 #define INTC_BASE 0xB0001000
109 #define OST_BASE 0xB0002000
110 #define RTC_BASE 0xB0003000
111 #define WDT_BASE 0xB0004000
112 #define GPIO_BASE 0xB0010000
113 #define AIC_BASE 0xB0020000
114 #define MSC_BASE 0xB0021000
115 #define UART0_BASE 0xB0030000
116 #define UART1_BASE 0xB0031000
117 #define UART2_BASE 0xB0032000
118 #define UART3_BASE 0xB0033000
119 #define FIR_BASE 0xB0040000
120 #define SCC_BASE 0xB0041000
121 #define SCC0_BASE 0xB0041000
122 #define I2C_BASE 0xB0042000
123 #define SSI_BASE 0xB0043000
124 #define SCC1_BASE 0xB0044000
125 #define PWM0_BASE 0xB0050000
126 #define PWM1_BASE 0xB0051000
127 #define DES_BASE 0xB0060000
128 #define UPRT_BASE 0xB0061000
129 #define KBC_BASE 0xB0062000
134 /*************************************************************************
135 * MSC
136 *************************************************************************/
137 #define MSC_STRPCL (MSC_BASE + 0x000)
138 #define MSC_STAT (MSC_BASE + 0x004)
139 #define MSC_CLKRT (MSC_BASE + 0x008)
140 #define MSC_CMDAT (MSC_BASE + 0x00C)
141 #define MSC_RESTO (MSC_BASE + 0x010)
142 #define MSC_RDTO (MSC_BASE + 0x014)
143 #define MSC_BLKLEN (MSC_BASE + 0x018)
144 #define MSC_NOB (MSC_BASE + 0x01C)
145 #define MSC_SNOB (MSC_BASE + 0x020)
146 #define MSC_IMASK (MSC_BASE + 0x024)
147 #define MSC_IREG (MSC_BASE + 0x028)
148 #define MSC_CMD (MSC_BASE + 0x02C)
149 #define MSC_ARG (MSC_BASE + 0x030)
150 #define MSC_RES (MSC_BASE + 0x034)
151 #define MSC_RXFIFO (MSC_BASE + 0x038)
152 #define MSC_TXFIFO (MSC_BASE + 0x03C)
154 #define REG_MSC_STRPCL REG16(MSC_STRPCL)
155 #define REG_MSC_STAT REG32(MSC_STAT)
156 #define REG_MSC_CLKRT REG16(MSC_CLKRT)
157 #define REG_MSC_CMDAT REG32(MSC_CMDAT)
158 #define REG_MSC_RESTO REG16(MSC_RESTO)
159 #define REG_MSC_RDTO REG16(MSC_RDTO)
160 #define REG_MSC_BLKLEN REG16(MSC_BLKLEN)
161 #define REG_MSC_NOB REG16(MSC_NOB)
162 #define REG_MSC_SNOB REG16(MSC_SNOB)
163 #define REG_MSC_IMASK REG16(MSC_IMASK)
164 #define REG_MSC_IREG REG16(MSC_IREG)
165 #define REG_MSC_CMD REG8(MSC_CMD)
166 #define REG_MSC_ARG REG32(MSC_ARG)
167 #define REG_MSC_RES REG16(MSC_RES)
168 #define REG_MSC_RXFIFO REG32(MSC_RXFIFO)
169 #define REG_MSC_TXFIFO REG32(MSC_TXFIFO)
171 /* MSC Clock and Control Register (MSC_STRPCL) */
173 #define MSC_STRPCL_EXIT_MULTIPLE (1 << 7)
174 #define MSC_STRPCL_EXIT_TRANSFER (1 << 6)
175 #define MSC_STRPCL_START_READWAIT (1 << 5)
176 #define MSC_STRPCL_STOP_READWAIT (1 << 4)
177 #define MSC_STRPCL_RESET (1 << 3)
178 #define MSC_STRPCL_START_OP (1 << 2)
179 #define MSC_STRPCL_CLOCK_CONTROL_BIT 0
180 #define MSC_STRPCL_CLOCK_CONTROL_MASK (0x3 << MSC_STRPCL_CLOCK_CONTROL_BIT)
181 #define MSC_STRPCL_CLOCK_CONTROL_STOP (0x1 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Stop MMC/SD clock */
182 #define MSC_STRPCL_CLOCK_CONTROL_START (0x2 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Start MMC/SD clock */
184 /* MSC Status Register (MSC_STAT) */
186 #define MSC_STAT_IS_RESETTING (1 << 15)
187 #define MSC_STAT_SDIO_INT_ACTIVE (1 << 14)
188 #define MSC_STAT_PRG_DONE (1 << 13)
189 #define MSC_STAT_DATA_TRAN_DONE (1 << 12)
190 #define MSC_STAT_END_CMD_RES (1 << 11)
191 #define MSC_STAT_DATA_FIFO_AFULL (1 << 10)
192 #define MSC_STAT_IS_READWAIT (1 << 9)
193 #define MSC_STAT_CLK_EN (1 << 8)
194 #define MSC_STAT_DATA_FIFO_FULL (1 << 7)
195 #define MSC_STAT_DATA_FIFO_EMPTY (1 << 6)
196 #define MSC_STAT_CRC_RES_ERR (1 << 5)
197 #define MSC_STAT_CRC_READ_ERROR (1 << 4)
198 #define MSC_STAT_CRC_WRITE_ERROR_BIT 2
199 #define MSC_STAT_CRC_WRITE_ERROR_MASK (0x3 << MSC_STAT_CRC_WRITE_ERROR_BIT)
200 #define MSC_STAT_CRC_WRITE_ERROR_NO (0 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No error on transmission of data */
201 #define MSC_STAT_CRC_WRITE_ERROR (1 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* Card observed erroneous transmission of data */
202 #define MSC_STAT_CRC_WRITE_ERROR_NOSTS (2 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No CRC status is sent back */
203 #define MSC_STAT_TIME_OUT_RES (1 << 1)
204 #define MSC_STAT_TIME_OUT_READ (1 << 0)
206 /* MSC Bus Clock Control Register (MSC_CLKRT) */
208 #define MSC_CLKRT_CLK_RATE_BIT 0
209 #define MSC_CLKRT_CLK_RATE_MASK (0x7 << MSC_CLKRT_CLK_RATE_BIT)
210 #define MSC_CLKRT_CLK_RATE_DIV_1 (0x0 << MSC_CLKRT_CLK_RATE_BIT) /* CLK_SRC */
211 #define MSC_CLKRT_CLK_RATE_DIV_2 (0x1 << MSC_CLKRT_CLK_RATE_BIT) /* 1/2 of CLK_SRC */
212 #define MSC_CLKRT_CLK_RATE_DIV_4 (0x2 << MSC_CLKRT_CLK_RATE_BIT) /* 1/4 of CLK_SRC */
213 #define MSC_CLKRT_CLK_RATE_DIV_8 (0x3 << MSC_CLKRT_CLK_RATE_BIT) /* 1/8 of CLK_SRC */
214 #define MSC_CLKRT_CLK_RATE_DIV_16 (0x4 << MSC_CLKRT_CLK_RATE_BIT) /* 1/16 of CLK_SRC */
215 #define MSC_CLKRT_CLK_RATE_DIV_32 (0x5 << MSC_CLKRT_CLK_RATE_BIT) /* 1/32 of CLK_SRC */
216 #define MSC_CLKRT_CLK_RATE_DIV_64 (0x6 << MSC_CLKRT_CLK_RATE_BIT) /* 1/64 of CLK_SRC */
217 #define MSC_CLKRT_CLK_RATE_DIV_128 (0x7 << MSC_CLKRT_CLK_RATE_BIT) /* 1/128 of CLK_SRC */
219 /* MSC Command Sequence Control Register (MSC_CMDAT) */
221 #define MSC_CMDAT_IO_ABORT (1 << 11)
222 #define MSC_CMDAT_BUS_WIDTH_BIT 9
223 #define MSC_CMDAT_BUS_WIDTH_MASK (0x3 << MSC_CMDAT_BUS_WIDTH_BIT)
224 #define MSC_CMDAT_BUS_WIDTH_1BIT (0x0 << MSC_CMDAT_BUS_WIDTH_BIT) /* 1-bit data bus */
225 #define MSC_CMDAT_BUS_WIDTH_4BIT (0x2 << MSC_CMDAT_BUS_WIDTH_BIT) /* 4-bit data bus */
226 #define CMDAT_BUS_WIDTH1 (0x0 << MSC_CMDAT_BUS_WIDTH_BIT)
227 #define CMDAT_BUS_WIDTH4 (0x2 << MSC_CMDAT_BUS_WIDTH_BIT)
228 #define MSC_CMDAT_DMA_EN (1 << 8)
229 #define MSC_CMDAT_INIT (1 << 7)
230 #define MSC_CMDAT_BUSY (1 << 6)
231 #define MSC_CMDAT_STREAM_BLOCK (1 << 5)
232 #define MSC_CMDAT_WRITE (1 << 4)
233 #define MSC_CMDAT_READ (0 << 4)
234 #define MSC_CMDAT_DATA_EN (1 << 3)
235 #define MSC_CMDAT_RESPONSE_BIT 0
236 #define MSC_CMDAT_RESPONSE_MASK (0x7 << MSC_CMDAT_RESPONSE_BIT)
237 #define MSC_CMDAT_RESPONSE_NONE (0x0 << MSC_CMDAT_RESPONSE_BIT) /* No response */
238 #define MSC_CMDAT_RESPONSE_R1 (0x1 << MSC_CMDAT_RESPONSE_BIT) /* Format R1 and R1b */
239 #define MSC_CMDAT_RESPONSE_R2 (0x2 << MSC_CMDAT_RESPONSE_BIT) /* Format R2 */
240 #define MSC_CMDAT_RESPONSE_R3 (0x3 << MSC_CMDAT_RESPONSE_BIT) /* Format R3 */
241 #define MSC_CMDAT_RESPONSE_R4 (0x4 << MSC_CMDAT_RESPONSE_BIT) /* Format R4 */
242 #define MSC_CMDAT_RESPONSE_R5 (0x5 << MSC_CMDAT_RESPONSE_BIT) /* Format R5 */
243 #define MSC_CMDAT_RESPONSE_R6 (0x6 << MSC_CMDAT_RESPONSE_BIT) /* Format R6 */
245 #define CMDAT_DMA_EN (1 << 8)
246 #define CMDAT_INIT (1 << 7)
247 #define CMDAT_BUSY (1 << 6)
248 #define CMDAT_STREAM (1 << 5)
249 #define CMDAT_WRITE (1 << 4)
250 #define CMDAT_DATA_EN (1 << 3)
252 /* MSC Interrupts Mask Register (MSC_IMASK) */
254 #define MSC_IMASK_SDIO (1 << 7)
255 #define MSC_IMASK_TXFIFO_WR_REQ (1 << 6)
256 #define MSC_IMASK_RXFIFO_RD_REQ (1 << 5)
257 #define MSC_IMASK_END_CMD_RES (1 << 2)
258 #define MSC_IMASK_PRG_DONE (1 << 1)
259 #define MSC_IMASK_DATA_TRAN_DONE (1 << 0)
262 /* MSC Interrupts Status Register (MSC_IREG) */
264 #define MSC_IREG_SDIO (1 << 7)
265 #define MSC_IREG_TXFIFO_WR_REQ (1 << 6)
266 #define MSC_IREG_RXFIFO_RD_REQ (1 << 5)
267 #define MSC_IREG_END_CMD_RES (1 << 2)
268 #define MSC_IREG_PRG_DONE (1 << 1)
269 #define MSC_IREG_DATA_TRAN_DONE (1 << 0)
271 /*************************************************************************
272 * RTC
273 *************************************************************************/
274 #define RTC_RCR (RTC_BASE + 0x00)
275 #define RTC_RSR (RTC_BASE + 0x04)
276 #define RTC_RSAR (RTC_BASE + 0x08)
277 #define RTC_RGR (RTC_BASE + 0x0c)
279 #define REG_RTC_RCR REG32(RTC_RCR)
280 #define REG_RTC_RSR REG32(RTC_RSR)
281 #define REG_RTC_RSAR REG32(RTC_RSAR)
282 #define REG_RTC_RGR REG32(RTC_RGR)
284 #define RTC_RCR_HZ (1 << 6)
285 #define RTC_RCR_HZIE (1 << 5)
286 #define RTC_RCR_AF (1 << 4)
287 #define RTC_RCR_AIE (1 << 3)
288 #define RTC_RCR_AE (1 << 2)
289 #define RTC_RCR_START (1 << 0)
291 #define RTC_RGR_LOCK (1 << 31)
292 #define RTC_RGR_ADJ_BIT 16
293 #define RTC_RGR_ADJ_MASK (0x3ff << RTC_RGR_ADJ_BIT)
294 #define RTC_RGR_DIV_BIT 0
295 #define RTC_REG_DIV_MASK (0xff << RTC_RGR_DIV_BIT)
300 /*************************************************************************
301 * FIR
302 *************************************************************************/
303 #define FIR_TDR (FIR_BASE + 0x000)
304 #define FIR_RDR (FIR_BASE + 0x004)
305 #define FIR_TFLR (FIR_BASE + 0x008)
306 #define FIR_AR (FIR_BASE + 0x00C)
307 #define FIR_CR1 (FIR_BASE + 0x010)
308 #define FIR_CR2 (FIR_BASE + 0x014)
309 #define FIR_SR (FIR_BASE + 0x018)
311 #define REG_FIR_TDR REG8(FIR_TDR)
312 #define REG_FIR_RDR REG8(FIR_RDR)
313 #define REG_FIR_TFLR REG16(FIR_TFLR)
314 #define REG_FIR_AR REG8(FIR_AR)
315 #define REG_FIR_CR1 REG8(FIR_CR1)
316 #define REG_FIR_CR2 REG16(FIR_CR2)
317 #define REG_FIR_SR REG16(FIR_SR)
319 /* FIR Control Register 1 (FIR_CR1) */
321 #define FIR_CR1_FIRUE (1 << 7)
322 #define FIR_CR1_ACE (1 << 6)
323 #define FIR_CR1_EOUS (1 << 5)
324 #define FIR_CR1_TIIE (1 << 4)
325 #define FIR_CR1_TFIE (1 << 3)
326 #define FIR_CR1_RFIE (1 << 2)
327 #define FIR_CR1_TXE (1 << 1)
328 #define FIR_CR1_RXE (1 << 0)
330 /* FIR Control Register 2 (FIR_CR2) */
332 #define FIR_CR2_SIPE (1 << 10)
333 #define FIR_CR2_BCRC (1 << 9)
334 #define FIR_CR2_TFLRS (1 << 8)
335 #define FIR_CR2_ISS (1 << 7)
336 #define FIR_CR2_LMS (1 << 6)
337 #define FIR_CR2_TPPS (1 << 5)
338 #define FIR_CR2_RPPS (1 << 4)
339 #define FIR_CR2_TTRG_BIT 2
340 #define FIR_CR2_TTRG_MASK (0x3 << FIR_CR2_TTRG_BIT)
341 #define FIR_CR2_TTRG_16 (0 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 16 */
342 #define FIR_CR2_TTRG_32 (1 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 32 */
343 #define FIR_CR2_TTRG_64 (2 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 64 */
344 #define FIR_CR2_TTRG_128 (3 << FIR_CR2_TTRG_BIT) /* Transmit Trigger Level is 128 */
345 #define FIR_CR2_RTRG_BIT 0
346 #define FIR_CR2_RTRG_MASK (0x3 << FIR_CR2_RTRG_BIT)
347 #define FIR_CR2_RTRG_16 (0 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 16 */
348 #define FIR_CR2_RTRG_32 (1 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 32 */
349 #define FIR_CR2_RTRG_64 (2 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 64 */
350 #define FIR_CR2_RTRG_128 (3 << FIR_CR2_RTRG_BIT) /* Receive Trigger Level is 128 */
352 /* FIR Status Register (FIR_SR) */
354 #define FIR_SR_RFW (1 << 12)
355 #define FIR_SR_RFA (1 << 11)
356 #define FIR_SR_TFRTL (1 << 10)
357 #define FIR_SR_RFRTL (1 << 9)
358 #define FIR_SR_URUN (1 << 8)
359 #define FIR_SR_RFTE (1 << 7)
360 #define FIR_SR_ORUN (1 << 6)
361 #define FIR_SR_CRCE (1 << 5)
362 #define FIR_SR_FEND (1 << 4)
363 #define FIR_SR_TFF (1 << 3)
364 #define FIR_SR_RFE (1 << 2)
365 #define FIR_SR_TIDLE (1 << 1)
366 #define FIR_SR_RB (1 << 0)
371 /*************************************************************************
372 * SCC
373 *************************************************************************/
374 #define SCC_DR(base) ((base) + 0x000)
375 #define SCC_FDR(base) ((base) + 0x004)
376 #define SCC_CR(base) ((base) + 0x008)
377 #define SCC_SR(base) ((base) + 0x00C)
378 #define SCC_TFR(base) ((base) + 0x010)
379 #define SCC_EGTR(base) ((base) + 0x014)
380 #define SCC_ECR(base) ((base) + 0x018)
381 #define SCC_RTOR(base) ((base) + 0x01C)
383 #define REG_SCC_DR(base) REG8(SCC_DR(base))
384 #define REG_SCC_FDR(base) REG8(SCC_FDR(base))
385 #define REG_SCC_CR(base) REG32(SCC_CR(base))
386 #define REG_SCC_SR(base) REG16(SCC_SR(base))
387 #define REG_SCC_TFR(base) REG16(SCC_TFR(base))
388 #define REG_SCC_EGTR(base) REG8(SCC_EGTR(base))
389 #define REG_SCC_ECR(base) REG32(SCC_ECR(base))
390 #define REG_SCC_RTOR(base) REG8(SCC_RTOR(base))
392 /* SCC FIFO Data Count Register (SCC_FDR) */
394 #define SCC_FDR_EMPTY 0x00
395 #define SCC_FDR_FULL 0x10
397 /* SCC Control Register (SCC_CR) */
399 #define SCC_CR_SCCE (1 << 31)
400 #define SCC_CR_TRS (1 << 30)
401 #define SCC_CR_T2R (1 << 29)
402 #define SCC_CR_FDIV_BIT 24
403 #define SCC_CR_FDIV_MASK (0x3 << SCC_CR_FDIV_BIT)
404 #define SCC_CR_FDIV_1 (0 << SCC_CR_FDIV_BIT) /* SCC_CLK frequency is the same as device clock */
405 #define SCC_CR_FDIV_2 (1 << SCC_CR_FDIV_BIT) /* SCC_CLK frequency is half of device clock */
406 #define SCC_CR_FLUSH (1 << 23)
407 #define SCC_CR_TRIG_BIT 16
408 #define SCC_CR_TRIG_MASK (0x3 << SCC_CR_TRIG_BIT)
409 #define SCC_CR_TRIG_1 (0 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 1 */
410 #define SCC_CR_TRIG_4 (1 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 4 */
411 #define SCC_CR_TRIG_8 (2 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 8 */
412 #define SCC_CR_TRIG_14 (3 << SCC_CR_TRIG_BIT) /* Receive/Transmit-FIFO Trigger is 14 */
413 #define SCC_CR_TP (1 << 15)
414 #define SCC_CR_CONV (1 << 14)
415 #define SCC_CR_TXIE (1 << 13)
416 #define SCC_CR_RXIE (1 << 12)
417 #define SCC_CR_TENDIE (1 << 11)
418 #define SCC_CR_RTOIE (1 << 10)
419 #define SCC_CR_ECIE (1 << 9)
420 #define SCC_CR_EPIE (1 << 8)
421 #define SCC_CR_RETIE (1 << 7)
422 #define SCC_CR_EOIE (1 << 6)
423 #define SCC_CR_TSEND (1 << 3)
424 #define SCC_CR_PX_BIT 1
425 #define SCC_CR_PX_MASK (0x3 << SCC_CR_PX_BIT)
426 #define SCC_CR_PX_NOT_SUPPORT (0 << SCC_CR_PX_BIT) /* SCC does not support clock stop */
427 #define SCC_CR_PX_STOP_LOW (1 << SCC_CR_PX_BIT) /* SCC_CLK stops at state low */
428 #define SCC_CR_PX_STOP_HIGH (2 << SCC_CR_PX_BIT) /* SCC_CLK stops at state high */
429 #define SCC_CR_CLKSTP (1 << 0)
431 /* SCC Status Register (SCC_SR) */
433 #define SCC_SR_TRANS (1 << 15)
434 #define SCC_SR_ORER (1 << 12)
435 #define SCC_SR_RTO (1 << 11)
436 #define SCC_SR_PER (1 << 10)
437 #define SCC_SR_TFTG (1 << 9)
438 #define SCC_SR_RFTG (1 << 8)
439 #define SCC_SR_TEND (1 << 7)
440 #define SCC_SR_RETR_3 (1 << 4)
441 #define SCC_SR_ECNTO (1 << 0)
446 /*************************************************************************
447 * ETH
448 *************************************************************************/
449 #define ETH_BMR (ETH_BASE + 0x1000)
450 #define ETH_TPDR (ETH_BASE + 0x1004)
451 #define ETH_RPDR (ETH_BASE + 0x1008)
452 #define ETH_RAR (ETH_BASE + 0x100C)
453 #define ETH_TAR (ETH_BASE + 0x1010)
454 #define ETH_SR (ETH_BASE + 0x1014)
455 #define ETH_CR (ETH_BASE + 0x1018)
456 #define ETH_IER (ETH_BASE + 0x101C)
457 #define ETH_MFCR (ETH_BASE + 0x1020)
458 #define ETH_CTAR (ETH_BASE + 0x1050)
459 #define ETH_CRAR (ETH_BASE + 0x1054)
460 #define ETH_MCR (ETH_BASE + 0x0000)
461 #define ETH_MAHR (ETH_BASE + 0x0004)
462 #define ETH_MALR (ETH_BASE + 0x0008)
463 #define ETH_HTHR (ETH_BASE + 0x000C)
464 #define ETH_HTLR (ETH_BASE + 0x0010)
465 #define ETH_MIAR (ETH_BASE + 0x0014)
466 #define ETH_MIDR (ETH_BASE + 0x0018)
467 #define ETH_FCR (ETH_BASE + 0x001C)
468 #define ETH_VTR1 (ETH_BASE + 0x0020)
469 #define ETH_VTR2 (ETH_BASE + 0x0024)
470 #define ETH_WKFR (ETH_BASE + 0x0028)
471 #define ETH_PMTR (ETH_BASE + 0x002C)
473 #define REG_ETH_BMR REG32(ETH_BMR)
474 #define REG_ETH_TPDR REG32(ETH_TPDR)
475 #define REG_ETH_RPDR REG32(ETH_RPDR)
476 #define REG_ETH_RAR REG32(ETH_RAR)
477 #define REG_ETH_TAR REG32(ETH_TAR)
478 #define REG_ETH_SR REG32(ETH_SR)
479 #define REG_ETH_CR REG32(ETH_CR)
480 #define REG_ETH_IER REG32(ETH_IER)
481 #define REG_ETH_MFCR REG32(ETH_MFCR)
482 #define REG_ETH_CTAR REG32(ETH_CTAR)
483 #define REG_ETH_CRAR REG32(ETH_CRAR)
484 #define REG_ETH_MCR REG32(ETH_MCR)
485 #define REG_ETH_MAHR REG32(ETH_MAHR)
486 #define REG_ETH_MALR REG32(ETH_MALR)
487 #define REG_ETH_HTHR REG32(ETH_HTHR)
488 #define REG_ETH_HTLR REG32(ETH_HTLR)
489 #define REG_ETH_MIAR REG32(ETH_MIAR)
490 #define REG_ETH_MIDR REG32(ETH_MIDR)
491 #define REG_ETH_FCR REG32(ETH_FCR)
492 #define REG_ETH_VTR1 REG32(ETH_VTR1)
493 #define REG_ETH_VTR2 REG32(ETH_VTR2)
494 #define REG_ETH_WKFR REG32(ETH_WKFR)
495 #define REG_ETH_PMTR REG32(ETH_PMTR)
497 /* Bus Mode Register (ETH_BMR) */
499 #define ETH_BMR_DBO (1 << 20)
500 #define ETH_BMR_PBL_BIT 8
501 #define ETH_BMR_PBL_MASK (0x3f << ETH_BMR_PBL_BIT)
502 #define ETH_BMR_PBL_1 (0x1 << ETH_BMR_PBL_BIT)
503 #define ETH_BMR_PBL_4 (0x4 << ETH_BMR_PBL_BIT)
504 #define ETH_BMR_BLE (1 << 7)
505 #define ETH_BMR_DSL_BIT 2
506 #define ETH_BMR_DSL_MASK (0x1f << ETH_BMR_DSL_BIT)
507 #define ETH_BMR_DSL_0 (0x0 << ETH_BMR_DSL_BIT)
508 #define ETH_BMR_DSL_1 (0x1 << ETH_BMR_DSL_BIT)
509 #define ETH_BMR_DSL_2 (0x2 << ETH_BMR_DSL_BIT)
510 #define ETH_BMR_DSL_4 (0x4 << ETH_BMR_DSL_BIT)
511 #define ETH_BMR_DSL_8 (0x8 << ETH_BMR_DSL_BIT)
512 #define ETH_BMR_SWR (1 << 0)
514 /* DMA Status Register (ETH_SR) */
516 #define ETH_SR_EB_BIT 23
517 #define ETH_SR_EB_MASK (0x7 << ETH_SR_EB_BIT)
518 #define ETH_SR_EB_TX_ABORT (0x1 << ETH_SR_EB_BIT)
519 #define ETH_SR_EB_RX_ABORT (0x2 << ETH_SR_EB_BIT)
520 #define ETH_SR_TS_BIT 20
521 #define ETH_SR_TS_MASK (0x7 << ETH_SR_TS_BIT)
522 #define ETH_SR_TS_STOP (0x0 << ETH_SR_TS_BIT)
523 #define ETH_SR_TS_FTD (0x1 << ETH_SR_TS_BIT)
524 #define ETH_SR_TS_WEOT (0x2 << ETH_SR_TS_BIT)
525 #define ETH_SR_TS_QDAT (0x3 << ETH_SR_TS_BIT)
526 #define ETH_SR_TS_SUSPEND (0x6 << ETH_SR_TS_BIT)
527 #define ETH_SR_TS_CTD (0x7 << ETH_SR_TS_BIT)
528 #define ETH_SR_RS_BIT 17
529 #define ETH_SR_RS_MASK (0x7 << ETH_SR_RS_BIT)
530 #define ETH_SR_RS_STOP (0x0 << ETH_SR_RS_BIT)
531 #define ETH_SR_RS_FRD (0x1 << ETH_SR_RS_BIT)
532 #define ETH_SR_RS_CEOR (0x2 << ETH_SR_RS_BIT)
533 #define ETH_SR_RS_WRP (0x3 << ETH_SR_RS_BIT)
534 #define ETH_SR_RS_SUSPEND (0x4 << ETH_SR_RS_BIT)
535 #define ETH_SR_RS_CRD (0x5 << ETH_SR_RS_BIT)
536 #define ETH_SR_RS_FCF (0x6 << ETH_SR_RS_BIT)
537 #define ETH_SR_RS_QRF (0x7 << ETH_SR_RS_BIT)
538 #define ETH_SR_NIS (1 << 16)
539 #define ETH_SR_AIS (1 << 15)
540 #define ETH_SR_ERI (1 << 14)
541 #define ETH_SR_FBE (1 << 13)
542 #define ETH_SR_ETI (1 << 10)
543 #define ETH_SR_RWT (1 << 9)
544 #define ETH_SR_RPS (1 << 8)
545 #define ETH_SR_RU (1 << 7)
546 #define ETH_SR_RI (1 << 6)
547 #define ETH_SR_UNF (1 << 5)
548 #define ETH_SR_TJT (1 << 3)
549 #define ETH_SR_TU (1 << 2)
550 #define ETH_SR_TPS (1 << 1)
551 #define ETH_SR_TI (1 << 0)
553 /* Control (Operation Mode) Register (ETH_CR) */
555 #define ETH_CR_TTM (1 << 22)
556 #define ETH_CR_SF (1 << 21)
557 #define ETH_CR_TR_BIT 14
558 #define ETH_CR_TR_MASK (0x3 << ETH_CR_TR_BIT)
559 #define ETH_CR_ST (1 << 13)
560 #define ETH_CR_OSF (1 << 2)
561 #define ETH_CR_SR (1 << 1)
563 /* Interrupt Enable Register (ETH_IER) */
565 #define ETH_IER_NI (1 << 16)
566 #define ETH_IER_AI (1 << 15)
567 #define ETH_IER_ERE (1 << 14)
568 #define ETH_IER_FBE (1 << 13)
569 #define ETH_IER_ET (1 << 10)
570 #define ETH_IER_RWE (1 << 9)
571 #define ETH_IER_RS (1 << 8)
572 #define ETH_IER_RU (1 << 7)
573 #define ETH_IER_RI (1 << 6)
574 #define ETH_IER_UN (1 << 5)
575 #define ETH_IER_TJ (1 << 3)
576 #define ETH_IER_TU (1 << 2)
577 #define ETH_IER_TS (1 << 1)
578 #define ETH_IER_TI (1 << 0)
580 /* Missed Frame and Buffer Overflow Counter Register (ETH_MFCR) */
582 #define ETH_MFCR_OVERFLOW_BIT 17
583 #define ETH_MFCR_OVERFLOW_MASK (0x7ff << ETH_MFCR_OVERFLOW_BIT)
584 #define ETH_MFCR_MFC_BIT 0
585 #define ETH_MFCR_MFC_MASK (0xffff << ETH_MFCR_MFC_BIT)
587 /* MAC Control Register (ETH_MCR) */
589 #define ETH_MCR_RA (1 << 31)
590 #define ETH_MCR_HBD (1 << 28)
591 #define ETH_MCR_PS (1 << 27)
592 #define ETH_MCR_DRO (1 << 23)
593 #define ETH_MCR_OM_BIT 21
594 #define ETH_MCR_OM_MASK (0x3 << ETH_MCR_OM_BIT)
595 #define ETH_MCR_OM_NORMAL (0x0 << ETH_MCR_OM_BIT)
596 #define ETH_MCR_OM_INTERNAL (0x1 << ETH_MCR_OM_BIT)
597 #define ETH_MCR_OM_EXTERNAL (0x2 << ETH_MCR_OM_BIT)
598 #define ETH_MCR_F (1 << 20)
599 #define ETH_MCR_PM (1 << 19)
600 #define ETH_MCR_PR (1 << 18)
601 #define ETH_MCR_IF (1 << 17)
602 #define ETH_MCR_PB (1 << 16)
603 #define ETH_MCR_HO (1 << 15)
604 #define ETH_MCR_HP (1 << 13)
605 #define ETH_MCR_LCC (1 << 12)
606 #define ETH_MCR_DBF (1 << 11)
607 #define ETH_MCR_DTRY (1 << 10)
608 #define ETH_MCR_ASTP (1 << 8)
609 #define ETH_MCR_BOLMT_BIT 6
610 #define ETH_MCR_BOLMT_MASK (0x3 << ETH_MCR_BOLMT_BIT)
611 #define ETH_MCR_BOLMT_10 (0 << ETH_MCR_BOLMT_BIT)
612 #define ETH_MCR_BOLMT_8 (1 << ETH_MCR_BOLMT_BIT)
613 #define ETH_MCR_BOLMT_4 (2 << ETH_MCR_BOLMT_BIT)
614 #define ETH_MCR_BOLMT_1 (3 << ETH_MCR_BOLMT_BIT)
615 #define ETH_MCR_DC (1 << 5)
616 #define ETH_MCR_TE (1 << 3)
617 #define ETH_MCR_RE (1 << 2)
619 /* MII Address Register (ETH_MIAR) */
621 #define ETH_MIAR_PHY_ADDR_BIT 11
622 #define ETH_MIAR_PHY_ADDR_MASK (0x1f << ETH_MIAR_PHY_ADDR_BIT)
623 #define ETH_MIAR_MII_REG_BIT 6
624 #define ETH_MIAR_MII_REG_MASK (0x1f << ETH_MIAR_MII_REG_BIT)
625 #define ETH_MIAR_MII_WRITE (1 << 1)
626 #define ETH_MIAR_MII_BUSY (1 << 0)
628 /* Flow Control Register (ETH_FCR) */
630 #define ETH_FCR_PAUSE_TIME_BIT 16
631 #define ETH_FCR_PAUSE_TIME_MASK (0xffff << ETH_FCR_PAUSE_TIME_BIT)
632 #define ETH_FCR_PCF (1 << 2)
633 #define ETH_FCR_FCE (1 << 1)
634 #define ETH_FCR_BUSY (1 << 0)
636 /* PMT Control and Status Register (ETH_PMTR) */
638 #define ETH_PMTR_GU (1 << 9)
639 #define ETH_PMTR_RF (1 << 6)
640 #define ETH_PMTR_MF (1 << 5)
641 #define ETH_PMTR_RWK (1 << 2)
642 #define ETH_PMTR_MPK (1 << 1)
644 /* Receive Descriptor 0 (ETH_RD0) Bits */
646 #define ETH_RD0_OWN (1 << 31)
647 #define ETH_RD0_FF (1 << 30)
648 #define ETH_RD0_FL_BIT 16
649 #define ETH_RD0_FL_MASK (0x3fff << ETH_RD0_FL_BIT)
650 #define ETH_RD0_ES (1 << 15)
651 #define ETH_RD0_DE (1 << 14)
652 #define ETH_RD0_LE (1 << 12)
653 #define ETH_RD0_RF (1 << 11)
654 #define ETH_RD0_MF (1 << 10)
655 #define ETH_RD0_FD (1 << 9)
656 #define ETH_RD0_LD (1 << 8)
657 #define ETH_RD0_TL (1 << 7)
658 #define ETH_RD0_CS (1 << 6)
659 #define ETH_RD0_FT (1 << 5)
660 #define ETH_RD0_WT (1 << 4)
661 #define ETH_RD0_ME (1 << 3)
662 #define ETH_RD0_DB (1 << 2)
663 #define ETH_RD0_CE (1 << 1)
665 /* Receive Descriptor 1 (ETH_RD1) Bits */
667 #define ETH_RD1_RER (1 << 25)
668 #define ETH_RD1_RCH (1 << 24)
669 #define ETH_RD1_RBS2_BIT 11
670 #define ETH_RD1_RBS2_MASK (0x7ff << ETH_RD1_RBS2_BIT)
671 #define ETH_RD1_RBS1_BIT 0
672 #define ETH_RD1_RBS1_MASK (0x7ff << ETH_RD1_RBS1_BIT)
674 /* Transmit Descriptor 0 (ETH_TD0) Bits */
676 #define ETH_TD0_OWN (1 << 31)
677 #define ETH_TD0_FA (1 << 15)
678 #define ETH_TD0_LOC (1 << 11)
679 #define ETH_TD0_NC (1 << 10)
680 #define ETH_TD0_LC (1 << 9)
681 #define ETH_TD0_EC (1 << 8)
682 #define ETH_TD0_HBF (1 << 7)
683 #define ETH_TD0_CC_BIT 3
684 #define ETH_TD0_CC_MASK (0xf << ETH_TD0_CC_BIT)
685 #define ETH_TD0_ED (1 << 2)
686 #define ETH_TD0_UF (1 << 1)
687 #define ETH_TD0_DF (1 << 0)
689 /* Transmit Descriptor 1 (ETH_TD1) Bits */
691 #define ETH_TD1_IC (1 << 31)
692 #define ETH_TD1_LS (1 << 30)
693 #define ETH_TD1_FS (1 << 29)
694 #define ETH_TD1_AC (1 << 26)
695 #define ETH_TD1_TER (1 << 25)
696 #define ETH_TD1_TCH (1 << 24)
697 #define ETH_TD1_DPD (1 << 23)
698 #define ETH_TD1_TBS2_BIT 11
699 #define ETH_TD1_TBS2_MASK (0x7ff << ETH_TD1_TBS2_BIT)
700 #define ETH_TD1_TBS1_BIT 0
701 #define ETH_TD1_TBS1_MASK (0x7ff << ETH_TD1_TBS1_BIT)
706 /*************************************************************************
707 * WDT
708 *************************************************************************/
709 #define WDT_WTCSR (WDT_BASE + 0x00)
710 #define WDT_WTCNT (WDT_BASE + 0x04)
712 #define REG_WDT_WTCSR REG8(WDT_WTCSR)
713 #define REG_WDT_WTCNT REG32(WDT_WTCNT)
715 #define WDT_WTCSR_START (1 << 4)
720 /*************************************************************************
721 * OST
722 *************************************************************************/
723 #define OST_TER (OST_BASE + 0x00)
724 #define OST_TRDR(n) (OST_BASE + 0x10 + ((n) * 0x20))
725 #define OST_TCNT(n) (OST_BASE + 0x14 + ((n) * 0x20))
726 #define OST_TCSR(n) (OST_BASE + 0x18 + ((n) * 0x20))
727 #define OST_TCRB(n) (OST_BASE + 0x1c + ((n) * 0x20))
729 #define REG_OST_TER REG8(OST_TER)
730 #define REG_OST_TRDR(n) REG32(OST_TRDR((n)))
731 #define REG_OST_TCNT(n) REG32(OST_TCNT((n)))
732 #define REG_OST_TCSR(n) REG16(OST_TCSR((n)))
733 #define REG_OST_TCRB(n) REG32(OST_TCRB((n)))
735 #define OST_TCSR_BUSY (1 << 7)
736 #define OST_TCSR_UF (1 << 6)
737 #define OST_TCSR_UIE (1 << 5)
738 #define OST_TCSR_CKS_BIT 0
739 #define OST_TCSR_CKS_MASK (0x07 << OST_TCSR_CKS_BIT)
740 #define OST_TCSR_CKS_PCLK_4 (0 << OST_TCSR_CKS_BIT)
741 #define OST_TCSR_CKS_PCLK_16 (1 << OST_TCSR_CKS_BIT)
742 #define OST_TCSR_CKS_PCLK_64 (2 << OST_TCSR_CKS_BIT)
743 #define OST_TCSR_CKS_PCLK_256 (3 << OST_TCSR_CKS_BIT)
744 #define OST_TCSR_CKS_RTCCLK (4 << OST_TCSR_CKS_BIT)
745 #define OST_TCSR_CKS_EXTAL (5 << OST_TCSR_CKS_BIT)
747 #define OST_TCSR0 OST_TCSR(0)
748 #define OST_TCSR1 OST_TCSR(1)
749 #define OST_TCSR2 OST_TCSR(2)
750 #define OST_TRDR0 OST_TRDR(0)
751 #define OST_TRDR1 OST_TRDR(1)
752 #define OST_TRDR2 OST_TRDR(2)
753 #define OST_TCNT0 OST_TCNT(0)
754 #define OST_TCNT1 OST_TCNT(1)
755 #define OST_TCNT2 OST_TCNT(2)
756 #define OST_TCRB0 OST_TCRB(0)
757 #define OST_TCRB1 OST_TCRB(1)
758 #define OST_TCRB2 OST_TCRB(2)
760 /*************************************************************************
761 * UART
762 *************************************************************************/
764 #define IRDA_BASE UART0_BASE
765 #define UART_BASE UART0_BASE
766 #define UART_OFF 0x1000
768 /* register offset */
769 #define OFF_RDR (0x00) /* R 8b H'xx */
770 #define OFF_TDR (0x00) /* W 8b H'xx */
771 #define OFF_DLLR (0x00) /* RW 8b H'00 */
772 #define OFF_DLHR (0x04) /* RW 8b H'00 */
773 #define OFF_IER (0x04) /* RW 8b H'00 */
774 #define OFF_ISR (0x08) /* R 8b H'01 */
775 #define OFF_FCR (0x08) /* W 8b H'00 */
776 #define OFF_LCR (0x0C) /* RW 8b H'00 */
777 #define OFF_MCR (0x10) /* RW 8b H'00 */
778 #define OFF_LSR (0x14) /* R 8b H'00 */
779 #define OFF_MSR (0x18) /* R 8b H'00 */
780 #define OFF_SPR (0x1C) /* RW 8b H'00 */
781 #define OFF_MCR (0x10) /* RW 8b H'00 */
782 #define OFF_SIRCR (0x20) /* RW 8b H'00, UART0 */
784 /* register address */
785 #define UART0_RDR (UART0_BASE + OFF_RDR)
786 #define UART0_TDR (UART0_BASE + OFF_TDR)
787 #define UART0_DLLR (UART0_BASE + OFF_DLLR)
788 #define UART0_DLHR (UART0_BASE + OFF_DLHR)
789 #define UART0_IER (UART0_BASE + OFF_IER)
790 #define UART0_ISR (UART0_BASE + OFF_ISR)
791 #define UART0_FCR (UART0_BASE + OFF_FCR)
792 #define UART0_LCR (UART0_BASE + OFF_LCR)
793 #define UART0_MCR (UART0_BASE + OFF_MCR)
794 #define UART0_LSR (UART0_BASE + OFF_LSR)
795 #define UART0_MSR (UART0_BASE + OFF_MSR)
796 #define UART0_SPR (UART0_BASE + OFF_SPR)
797 #define UART0_SIRCR (UART0_BASE + OFF_SIRCR)
799 #define UART1_RDR (UART1_BASE + OFF_RDR)
800 #define UART1_TDR (UART1_BASE + OFF_TDR)
801 #define UART1_DLLR (UART1_BASE + OFF_DLLR)
802 #define UART1_DLHR (UART1_BASE + OFF_DLHR)
803 #define UART1_IER (UART1_BASE + OFF_IER)
804 #define UART1_ISR (UART1_BASE + OFF_ISR)
805 #define UART1_FCR (UART1_BASE + OFF_FCR)
806 #define UART1_LCR (UART1_BASE + OFF_LCR)
807 #define UART1_MCR (UART1_BASE + OFF_MCR)
808 #define UART1_LSR (UART1_BASE + OFF_LSR)
809 #define UART1_MSR (UART1_BASE + OFF_MSR)
810 #define UART1_SPR (UART1_BASE + OFF_SPR)
811 #define UART1_SIRCR (UART1_BASE + OFF_SIRCR)
813 #define UART2_RDR (UART2_BASE + OFF_RDR)
814 #define UART2_TDR (UART2_BASE + OFF_TDR)
815 #define UART2_DLLR (UART2_BASE + OFF_DLLR)
816 #define UART2_DLHR (UART2_BASE + OFF_DLHR)
817 #define UART2_IER (UART2_BASE + OFF_IER)
818 #define UART2_ISR (UART2_BASE + OFF_ISR)
819 #define UART2_FCR (UART2_BASE + OFF_FCR)
820 #define UART2_LCR (UART2_BASE + OFF_LCR)
821 #define UART2_MCR (UART2_BASE + OFF_MCR)
822 #define UART2_LSR (UART2_BASE + OFF_LSR)
823 #define UART2_MSR (UART2_BASE + OFF_MSR)
824 #define UART2_SPR (UART2_BASE + OFF_SPR)
825 #define UART2_SIRCR (UART2_BASE + OFF_SIRCR)
827 #define UART3_RDR (UART3_BASE + OFF_RDR)
828 #define UART3_TDR (UART3_BASE + OFF_TDR)
829 #define UART3_DLLR (UART3_BASE + OFF_DLLR)
830 #define UART3_DLHR (UART3_BASE + OFF_DLHR)
831 #define UART3_IER (UART3_BASE + OFF_IER)
832 #define UART3_ISR (UART3_BASE + OFF_ISR)
833 #define UART3_FCR (UART3_BASE + OFF_FCR)
834 #define UART3_LCR (UART3_BASE + OFF_LCR)
835 #define UART3_MCR (UART3_BASE + OFF_MCR)
836 #define UART3_LSR (UART3_BASE + OFF_LSR)
837 #define UART3_MSR (UART3_BASE + OFF_MSR)
838 #define UART3_SPR (UART3_BASE + OFF_SPR)
839 #define UART3_SIRCR (UART3_BASE + OFF_SIRCR)
842 * Define macros for UART_IER
843 * UART Interrupt Enable Register
845 #define UART_IER_RIE (1 << 0) /* 0: receive fifo "full" interrupt disable */
846 #define UART_IER_TIE (1 << 1) /* 0: transmit fifo "empty" interrupt disable */
847 #define UART_IER_RLIE (1 << 2) /* 0: receive line status interrupt disable */
848 #define UART_IER_MIE (1 << 3) /* 0: modem status interrupt disable */
849 #define UART_IER_RTIE (1 << 4) /* 0: receive timeout interrupt disable */
852 * Define macros for UART_ISR
853 * UART Interrupt Status Register
855 #define UART_ISR_IP (1 << 0) /* 0: interrupt is pending 1: no interrupt */
856 #define UART_ISR_IID (7 << 1) /* Source of Interrupt */
857 #define UART_ISR_IID_MSI (0 << 1) /* Modem status interrupt */
858 #define UART_ISR_IID_THRI (1 << 1) /* Transmitter holding register empty */
859 #define UART_ISR_IID_RDI (2 << 1) /* Receiver data interrupt */
860 #define UART_ISR_IID_RLSI (3 << 1) /* Receiver line status interrupt */
861 #define UART_ISR_FFMS (3 << 6) /* FIFO mode select, set when UART_FCR.FE is set to 1 */
862 #define UART_ISR_FFMS_NO_FIFO (0 << 6)
863 #define UART_ISR_FFMS_FIFO_MODE (3 << 6)
866 * Define macros for UART_FCR
867 * UART FIFO Control Register
869 #define UART_FCR_FE (1 << 0) /* 0: non-FIFO mode 1: FIFO mode */
870 #define UART_FCR_RFLS (1 << 1) /* write 1 to flush receive FIFO */
871 #define UART_FCR_TFLS (1 << 2) /* write 1 to flush transmit FIFO */
872 #define UART_FCR_DMS (1 << 3) /* 0: disable DMA mode */
873 #define UART_FCR_UUE (1 << 4) /* 0: disable UART */
874 #define UART_FCR_RTRG (3 << 6) /* Receive FIFO Data Trigger */
875 #define UART_FCR_RTRG_1 (0 << 6)
876 #define UART_FCR_RTRG_4 (1 << 6)
877 #define UART_FCR_RTRG_8 (2 << 6)
878 #define UART_FCR_RTRG_15 (3 << 6)
881 * Define macros for UART_LCR
882 * UART Line Control Register
884 #define UART_LCR_WLEN (3 << 0) /* word length */
885 #define UART_LCR_WLEN_5 (0 << 0)
886 #define UART_LCR_WLEN_6 (1 << 0)
887 #define UART_LCR_WLEN_7 (2 << 0)
888 #define UART_LCR_WLEN_8 (3 << 0)
889 #define UART_LCR_STOP (1 << 2) /* 0: 1 stop bit when word length is 5,6,7,8
890 1: 1.5 stop bits when 5; 2 stop bits when 6,7,8 */
891 #define UART_LCR_STOP_1 (0 << 2) /* 0: 1 stop bit when word length is 5,6,7,8
892 1: 1.5 stop bits when 5; 2 stop bits when 6,7,8 */
893 #define UART_LCR_STOP_2 (1 << 2) /* 0: 1 stop bit when word length is 5,6,7,8
894 1: 1.5 stop bits when 5; 2 stop bits when 6,7,8 */
896 #define UART_LCR_PE (1 << 3) /* 0: parity disable */
897 #define UART_LCR_PROE (1 << 4) /* 0: even parity 1: odd parity */
898 #define UART_LCR_SPAR (1 << 5) /* 0: sticky parity disable */
899 #define UART_LCR_SBRK (1 << 6) /* write 0 normal, write 1 send break */
900 #define UART_LCR_DLAB (1 << 7) /* 0: access UART_RDR/TDR/IER 1: access UART_DLLR/DLHR */
903 * Define macros for UART_LSR
904 * UART Line Status Register
906 #define UART_LSR_DR (1 << 0) /* 0: receive FIFO is empty 1: receive data is ready */
907 #define UART_LSR_ORER (1 << 1) /* 0: no overrun error */
908 #define UART_LSR_PER (1 << 2) /* 0: no parity error */
909 #define UART_LSR_FER (1 << 3) /* 0; no framing error */
910 #define UART_LSR_BRK (1 << 4) /* 0: no break detected 1: receive a break signal */
911 #define UART_LSR_TDRQ (1 << 5) /* 1: transmit FIFO half "empty" */
912 #define UART_LSR_TEMT (1 << 6) /* 1: transmit FIFO and shift registers empty */
913 #define UART_LSR_RFER (1 << 7) /* 0: no receive error 1: receive error in FIFO mode */
916 * Define macros for UART_MCR
917 * UART Modem Control Register
919 #define UART_MCR_DTR (1 << 0) /* 0: DTR_ ouput high */
920 #define UART_MCR_RTS (1 << 1) /* 0: RTS_ output high */
921 #define UART_MCR_OUT1 (1 << 2) /* 0: UART_MSR.RI is set to 0 and RI_ input high */
922 #define UART_MCR_OUT2 (1 << 3) /* 0: UART_MSR.DCD is set to 0 and DCD_ input high */
923 #define UART_MCR_LOOP (1 << 4) /* 0: normal 1: loopback mode */
924 #define UART_MCR_MCE (1 << 7) /* 0: modem function is disable */
927 * Define macros for UART_MSR
928 * UART Modem Status Register
930 #define UART_MSR_DCTS (1 << 0) /* 0: no change on CTS_ pin since last read of UART_MSR */
931 #define UART_MSR_DDSR (1 << 1) /* 0: no change on DSR_ pin since last read of UART_MSR */
932 #define UART_MSR_DRI (1 << 2) /* 0: no change on RI_ pin since last read of UART_MSR */
933 #define UART_MSR_DDCD (1 << 3) /* 0: no change on DCD_ pin since last read of UART_MSR */
934 #define UART_MSR_CTS (1 << 4) /* 0: CTS_ pin is high */
935 #define UART_MSR_DSR (1 << 5) /* 0: DSR_ pin is high */
936 #define UART_MSR_RI (1 << 6) /* 0: RI_ pin is high */
937 #define UART_MSR_DCD (1 << 7) /* 0: DCD_ pin is high */
940 * Define macros for SIRCR
941 * Slow IrDA Control Register
943 #define SIRCR_TSIRE (1 << 0) /* 0: transmitter is in UART mode 1: IrDA mode */
944 #define SIRCR_RSIRE (1 << 1) /* 0: receiver is in UART mode 1: IrDA mode */
945 #define SIRCR_TPWS (1 << 2) /* 0: transmit 0 pulse width is 3/16 of bit length
946 1: 0 pulse width is 1.6us for 115.2Kbps */
947 #define SIRCR_TXPL (1 << 3) /* 0: encoder generates a positive pulse for 0 */
948 #define SIRCR_RXPL (1 << 4) /* 0: decoder interprets positive pulse as 0 */
952 /*************************************************************************
953 * INTC
954 *************************************************************************/
955 #define INTC_ISR (INTC_BASE + 0x00)
956 #define INTC_IMR (INTC_BASE + 0x04)
957 #define INTC_IMSR (INTC_BASE + 0x08)
958 #define INTC_IMCR (INTC_BASE + 0x0c)
959 #define INTC_IPR (INTC_BASE + 0x10)
961 #define REG_INTC_ISR REG32(INTC_ISR)
962 #define REG_INTC_IMR REG32(INTC_IMR)
963 #define REG_INTC_IMSR REG32(INTC_IMSR)
964 #define REG_INTC_IMCR REG32(INTC_IMCR)
965 #define REG_INTC_IPR REG32(INTC_IPR)
967 #define IRQ_I2C 1
968 #define IRQ_PS2 2
969 #define IRQ_UPRT 3
970 #define IRQ_CORE 4
971 #define IRQ_UART3 6
972 #define IRQ_UART2 7
973 #define IRQ_UART1 8
974 #define IRQ_UART0 9
975 #define IRQ_SCC1 10
976 #define IRQ_SCC0 11
977 #define IRQ_UDC 12
978 #define IRQ_UHC 13
979 #define IRQ_MSC 14
980 #define IRQ_RTC 15
981 #define IRQ_FIR 16
982 #define IRQ_SSI 17
983 #define IRQ_CIM 18
984 #define IRQ_ETH 19
985 #define IRQ_AIC 20
986 #define IRQ_DMAC 21
987 #define IRQ_OST2 22
988 #define IRQ_OST1 23
989 #define IRQ_OST0 24
990 #define IRQ_GPIO3 25
991 #define IRQ_GPIO2 26
992 #define IRQ_GPIO1 27
993 #define IRQ_GPIO0 28
994 #define IRQ_LCD 30
999 /*************************************************************************
1000 * CIM
1001 *************************************************************************/
1002 #define CIM_CFG (CIM_BASE + 0x0000)
1003 #define CIM_CTRL (CIM_BASE + 0x0004)
1004 #define CIM_STATE (CIM_BASE + 0x0008)
1005 #define CIM_IID (CIM_BASE + 0x000C)
1006 #define CIM_RXFIFO (CIM_BASE + 0x0010)
1007 #define CIM_DA (CIM_BASE + 0x0020)
1008 #define CIM_FA (CIM_BASE + 0x0024)
1009 #define CIM_FID (CIM_BASE + 0x0028)
1010 #define CIM_CMD (CIM_BASE + 0x002C)
1012 #define REG_CIM_CFG REG32(CIM_CFG)
1013 #define REG_CIM_CTRL REG32(CIM_CTRL)
1014 #define REG_CIM_STATE REG32(CIM_STATE)
1015 #define REG_CIM_IID REG32(CIM_IID)
1016 #define REG_CIM_RXFIFO REG32(CIM_RXFIFO)
1017 #define REG_CIM_DA REG32(CIM_DA)
1018 #define REG_CIM_FA REG32(CIM_FA)
1019 #define REG_CIM_FID REG32(CIM_FID)
1020 #define REG_CIM_CMD REG32(CIM_CMD)
1022 /* CIM Configuration Register (CIM_CFG) */
1024 #define CIM_CFG_INV_DAT (1 << 15)
1025 #define CIM_CFG_VSP (1 << 14)
1026 #define CIM_CFG_HSP (1 << 13)
1027 #define CIM_CFG_PCP (1 << 12)
1028 #define CIM_CFG_DUMMY_ZERO (1 << 9)
1029 #define CIM_CFG_EXT_VSYNC (1 << 8)
1030 #define CIM_CFG_PACK_BIT 4
1031 #define CIM_CFG_PACK_MASK (0x7 << CIM_CFG_PACK_BIT)
1032 #define CIM_CFG_PACK_0 (0 << CIM_CFG_PACK_BIT)
1033 #define CIM_CFG_PACK_1 (1 << CIM_CFG_PACK_BIT)
1034 #define CIM_CFG_PACK_2 (2 << CIM_CFG_PACK_BIT)
1035 #define CIM_CFG_PACK_3 (3 << CIM_CFG_PACK_BIT)
1036 #define CIM_CFG_PACK_4 (4 << CIM_CFG_PACK_BIT)
1037 #define CIM_CFG_PACK_5 (5 << CIM_CFG_PACK_BIT)
1038 #define CIM_CFG_PACK_6 (6 << CIM_CFG_PACK_BIT)
1039 #define CIM_CFG_PACK_7 (7 << CIM_CFG_PACK_BIT)
1040 #define CIM_CFG_DSM_BIT 0
1041 #define CIM_CFG_DSM_MASK (0x3 << CIM_CFG_DSM_BIT)
1042 #define CIM_CFG_DSM_CPM (0 << CIM_CFG_DSM_BIT) /* CCIR656 Progressive Mode */
1043 #define CIM_CFG_DSM_CIM (1 << CIM_CFG_DSM_BIT) /* CCIR656 Interlace Mode */
1044 #define CIM_CFG_DSM_GCM (2 << CIM_CFG_DSM_BIT) /* Gated Clock Mode */
1045 #define CIM_CFG_DSM_NGCM (3 << CIM_CFG_DSM_BIT) /* Non-Gated Clock Mode */
1047 /* CIM Control Register (CIM_CTRL) */
1049 #define CIM_CTRL_MCLKDIV_BIT 24
1050 #define CIM_CTRL_MCLKDIV_MASK (0xff << CIM_CTRL_MCLKDIV_BIT)
1051 #define CIM_CTRL_FRC_BIT 16
1052 #define CIM_CTRL_FRC_MASK (0xf << CIM_CTRL_FRC_BIT)
1053 #define CIM_CTRL_FRC_1 (0x0 << CIM_CTRL_FRC_BIT) /* Sample every frame */
1054 #define CIM_CTRL_FRC_2 (0x1 << CIM_CTRL_FRC_BIT) /* Sample 1/2 frame */
1055 #define CIM_CTRL_FRC_3 (0x2 << CIM_CTRL_FRC_BIT) /* Sample 1/3 frame */
1056 #define CIM_CTRL_FRC_4 (0x3 << CIM_CTRL_FRC_BIT) /* Sample 1/4 frame */
1057 #define CIM_CTRL_FRC_5 (0x4 << CIM_CTRL_FRC_BIT) /* Sample 1/5 frame */
1058 #define CIM_CTRL_FRC_6 (0x5 << CIM_CTRL_FRC_BIT) /* Sample 1/6 frame */
1059 #define CIM_CTRL_FRC_7 (0x6 << CIM_CTRL_FRC_BIT) /* Sample 1/7 frame */
1060 #define CIM_CTRL_FRC_8 (0x7 << CIM_CTRL_FRC_BIT) /* Sample 1/8 frame */
1061 #define CIM_CTRL_FRC_9 (0x8 << CIM_CTRL_FRC_BIT) /* Sample 1/9 frame */
1062 #define CIM_CTRL_FRC_10 (0x9 << CIM_CTRL_FRC_BIT) /* Sample 1/10 frame */
1063 #define CIM_CTRL_FRC_11 (0xA << CIM_CTRL_FRC_BIT) /* Sample 1/11 frame */
1064 #define CIM_CTRL_FRC_12 (0xB << CIM_CTRL_FRC_BIT) /* Sample 1/12 frame */
1065 #define CIM_CTRL_FRC_13 (0xC << CIM_CTRL_FRC_BIT) /* Sample 1/13 frame */
1066 #define CIM_CTRL_FRC_14 (0xD << CIM_CTRL_FRC_BIT) /* Sample 1/14 frame */
1067 #define CIM_CTRL_FRC_15 (0xE << CIM_CTRL_FRC_BIT) /* Sample 1/15 frame */
1068 #define CIM_CTRL_FRC_16 (0xF << CIM_CTRL_FRC_BIT) /* Sample 1/16 frame */
1069 #define CIM_CTRL_VDDM (1 << 13)
1070 #define CIM_CTRL_DMA_SOFM (1 << 12)
1071 #define CIM_CTRL_DMA_EOFM (1 << 11)
1072 #define CIM_CTRL_DMA_STOPM (1 << 10)
1073 #define CIM_CTRL_RXF_TRIGM (1 << 9)
1074 #define CIM_CTRL_RXF_OFM (1 << 8)
1075 #define CIM_CTRL_RXF_TRIG_BIT 4
1076 #define CIM_CTRL_RXF_TRIG_MASK (0x7 << CIM_CTRL_RXF_TRIG_BIT)
1077 #define CIM_CTRL_RXF_TRIG_4 (0 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 4 */
1078 #define CIM_CTRL_RXF_TRIG_8 (1 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 8 */
1079 #define CIM_CTRL_RXF_TRIG_12 (2 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 12 */
1080 #define CIM_CTRL_RXF_TRIG_16 (3 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 16 */
1081 #define CIM_CTRL_RXF_TRIG_20 (4 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 20 */
1082 #define CIM_CTRL_RXF_TRIG_24 (5 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 24 */
1083 #define CIM_CTRL_RXF_TRIG_28 (6 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 28 */
1084 #define CIM_CTRL_RXF_TRIG_32 (7 << CIM_CTRL_RXF_TRIG_BIT) /* RXFIFO Trigger Value is 32 */
1085 #define CIM_CTRL_DMA_EN (1 << 2)
1086 #define CIM_CTRL_RXF_RST (1 << 1)
1087 #define CIM_CTRL_ENA (1 << 0)
1089 /* CIM State Register (CIM_STATE) */
1091 #define CIM_STATE_DMA_SOF (1 << 6)
1092 #define CIM_STATE_DMA_EOF (1 << 5)
1093 #define CIM_STATE_DMA_STOP (1 << 4)
1094 #define CIM_STATE_RXF_OF (1 << 3)
1095 #define CIM_STATE_RXF_TRIG (1 << 2)
1096 #define CIM_STATE_RXF_EMPTY (1 << 1)
1097 #define CIM_STATE_VDD (1 << 0)
1099 /* CIM DMA Command Register (CIM_CMD) */
1101 #define CIM_CMD_SOFINT (1 << 31)
1102 #define CIM_CMD_EOFINT (1 << 30)
1103 #define CIM_CMD_STOP (1 << 28)
1104 #define CIM_CMD_LEN_BIT 0
1105 #define CIM_CMD_LEN_MASK (0xffffff << CIM_CMD_LEN_BIT)
1110 /*************************************************************************
1111 * PWM
1112 *************************************************************************/
1113 #define PWM_CTR(n) (PWM##n##_BASE + 0x000)
1114 #define PWM_PER(n) (PWM##n##_BASE + 0x004)
1115 #define PWM_DUT(n) (PWM##n##_BASE + 0x008)
1117 #define REG_PWM_CTR(n) REG8(PWM_CTR(n))
1118 #define REG_PWM_PER(n) REG16(PWM_PER(n))
1119 #define REG_PWM_DUT(n) REG16(PWM_DUT(n))
1121 /* PWM Control Register (PWM_CTR) */
1123 #define PWM_CTR_EN (1 << 7)
1124 #define PWM_CTR_SD (1 << 6)
1125 #define PWM_CTR_PRESCALE_BIT 0
1126 #define PWM_CTR_PRESCALE_MASK (0x3f << PWM_CTR_PRESCALE_BIT)
1128 /* PWM Period Register (PWM_PER) */
1130 #define PWM_PER_PERIOD_BIT 0
1131 #define PWM_PER_PERIOD_MASK (0x3ff << PWM_PER_PERIOD_BIT)
1133 /* PWM Duty Register (PWM_DUT) */
1135 #define PWM_DUT_FDUTY (1 << 10)
1136 #define PWM_DUT_DUTY_BIT 0
1137 #define PWM_DUT_DUTY_MASK (0x3ff << PWM_DUT_DUTY_BIT)
1142 /*************************************************************************
1143 * EMC
1144 *************************************************************************/
1145 #define EMC_BCR (EMC_BASE + 0x00)
1146 #define EMC_SMCR0 (EMC_BASE + 0x10)
1147 #define EMC_SMCR1 (EMC_BASE + 0x14)
1148 #define EMC_SMCR2 (EMC_BASE + 0x18)
1149 #define EMC_SMCR3 (EMC_BASE + 0x1c)
1150 #define EMC_SMCR4 (EMC_BASE + 0x20)
1151 #define EMC_SMCR5 (EMC_BASE + 0x24)
1152 #define EMC_SMCR6 (EMC_BASE + 0x28)
1153 #define EMC_SMCR7 (EMC_BASE + 0x2c)
1154 #define EMC_SACR0 (EMC_BASE + 0x30)
1155 #define EMC_SACR1 (EMC_BASE + 0x34)
1156 #define EMC_SACR2 (EMC_BASE + 0x38)
1157 #define EMC_SACR3 (EMC_BASE + 0x3c)
1158 #define EMC_SACR4 (EMC_BASE + 0x40)
1159 #define EMC_SACR5 (EMC_BASE + 0x44)
1160 #define EMC_SACR6 (EMC_BASE + 0x48)
1161 #define EMC_SACR7 (EMC_BASE + 0x4c)
1162 #define EMC_NFCSR (EMC_BASE + 0x50)
1163 #define EMC_NFECC (EMC_BASE + 0x54)
1164 #define EMC_PCCR1 (EMC_BASE + 0x60)
1165 #define EMC_PCCR2 (EMC_BASE + 0x64)
1166 #define EMC_PCCR3 (EMC_BASE + 0x68)
1167 #define EMC_PCCR4 (EMC_BASE + 0x6c)
1168 #define EMC_DMCR (EMC_BASE + 0x80)
1169 #define EMC_RTCSR (EMC_BASE + 0x84)
1170 #define EMC_RTCNT (EMC_BASE + 0x88)
1171 #define EMC_RTCOR (EMC_BASE + 0x8c)
1172 #define EMC_DMAR1 (EMC_BASE + 0x90)
1173 #define EMC_DMAR2 (EMC_BASE + 0x94)
1174 #define EMC_DMAR3 (EMC_BASE + 0x98)
1175 #define EMC_DMAR4 (EMC_BASE + 0x9c)
1177 #define EMC_SDMR0 (EMC_BASE + 0xa000)
1178 #define EMC_SDMR1 (EMC_BASE + 0xb000)
1179 #define EMC_SDMR2 (EMC_BASE + 0xc000)
1180 #define EMC_SDMR3 (EMC_BASE + 0xd000)
1182 /* NAND command/address/data port */
1183 #define NAND_DATAPORT 0xB4000000 /* read-write area */
1184 #define NAND_COMMPORT 0xB4040000 /* write only area */
1185 #define NAND_ADDRPORT 0xB4080000 /* write only area */
1187 #define REG_EMC_BCR REG32(EMC_BCR)
1188 #define REG_EMC_SMCR0 REG32(EMC_SMCR0)
1189 #define REG_EMC_SMCR1 REG32(EMC_SMCR1)
1190 #define REG_EMC_SMCR2 REG32(EMC_SMCR2)
1191 #define REG_EMC_SMCR3 REG32(EMC_SMCR3)
1192 #define REG_EMC_SMCR4 REG32(EMC_SMCR4)
1193 #define REG_EMC_SMCR5 REG32(EMC_SMCR5)
1194 #define REG_EMC_SMCR6 REG32(EMC_SMCR6)
1195 #define REG_EMC_SMCR7 REG32(EMC_SMCR7)
1196 #define REG_EMC_SACR0 REG32(EMC_SACR0)
1197 #define REG_EMC_SACR1 REG32(EMC_SACR1)
1198 #define REG_EMC_SACR2 REG32(EMC_SACR2)
1199 #define REG_EMC_SACR3 REG32(EMC_SACR3)
1200 #define REG_EMC_SACR4 REG32(EMC_SACR4)
1201 #define REG_EMC_SACR5 REG32(EMC_SACR5)
1202 #define REG_EMC_SACR6 REG32(EMC_SACR6)
1203 #define REG_EMC_SACR7 REG32(EMC_SACR7)
1204 #define REG_EMC_NFCSR REG32(EMC_NFCSR)
1205 #define REG_EMC_NFECC REG32(EMC_NFECC)
1206 #define REG_EMC_DMCR REG32(EMC_DMCR)
1207 #define REG_EMC_RTCSR REG16(EMC_RTCSR)
1208 #define REG_EMC_RTCNT REG16(EMC_RTCNT)
1209 #define REG_EMC_RTCOR REG16(EMC_RTCOR)
1210 #define REG_EMC_DMAR1 REG32(EMC_DMAR1)
1211 #define REG_EMC_DMAR2 REG32(EMC_DMAR2)
1212 #define REG_EMC_DMAR3 REG32(EMC_DMAR3)
1213 #define REG_EMC_DMAR4 REG32(EMC_DMAR4)
1214 #define REG_EMC_PCCR1 REG32(EMC_PCCR1)
1215 #define REG_EMC_PCCR2 REG32(EMC_PCCR2)
1216 #define REG_EMC_PCCR3 REG32(EMC_PCCR3)
1217 #define REG_EMC_PCCR4 REG32(EMC_PCCR4)
1220 #define EMC_BCR_BRE (1 << 1)
1222 #define EMC_SMCR_STRV_BIT 24
1223 #define EMC_SMCR_STRV_MASK (0x0f << EMC_SMCR_STRV_BIT)
1224 #define EMC_SMCR_TAW_BIT 20
1225 #define EMC_SMCR_TAW_MASK (0x0f << EMC_SMCR_TAW_BIT)
1226 #define EMC_SMCR_TBP_BIT 16
1227 #define EMC_SMCR_TBP_MASK (0x0f << EMC_SMCR_TBP_BIT)
1228 #define EMC_SMCR_TAH_BIT 12
1229 #define EMC_SMCR_TAH_MASK (0x07 << EMC_SMCR_TAH_BIT)
1230 #define EMC_SMCR_TAS_BIT 8
1231 #define EMC_SMCR_TAS_MASK (0x07 << EMC_SMCR_TAS_BIT)
1232 #define EMC_SMCR_BW_BIT 6
1233 #define EMC_SMCR_BW_MASK (0x03 << EMC_SMCR_BW_BIT)
1234 #define EMC_SMCR_BW_8BIT (0 << EMC_SMCR_BW_BIT)
1235 #define EMC_SMCR_BW_16BIT (1 << EMC_SMCR_BW_BIT)
1236 #define EMC_SMCR_BW_32BIT (2 << EMC_SMCR_BW_BIT)
1237 #define EMC_SMCR_BCM (1 << 3)
1238 #define EMC_SMCR_BL_BIT 1
1239 #define EMC_SMCR_BL_MASK (0x03 << EMC_SMCR_BL_BIT)
1240 #define EMC_SMCR_BL_4 (0 << EMC_SMCR_BL_BIT)
1241 #define EMC_SMCR_BL_8 (1 << EMC_SMCR_BL_BIT)
1242 #define EMC_SMCR_BL_16 (2 << EMC_SMCR_BL_BIT)
1243 #define EMC_SMCR_BL_32 (3 << EMC_SMCR_BL_BIT)
1244 #define EMC_SMCR_SMT (1 << 0)
1246 #define EMC_SACR_BASE_BIT 8
1247 #define EMC_SACR_BASE_MASK (0xff << EMC_SACR_BASE_BIT)
1248 #define EMC_SACR_MASK_BIT 0
1249 #define EMC_SACR_MASK_MASK (0xff << EMC_SACR_MASK_BIT)
1251 #define EMC_NFCSR_RB (1 << 7)
1252 #define EMC_NFCSR_BOOT_SEL_BIT 4
1253 #define EMC_NFCSR_BOOT_SEL_MASK (0x07 << EMC_NFCSR_BOOT_SEL_BIT)
1254 #define EMC_NFCSR_ERST (1 << 3)
1255 #define EMC_NFCSR_ECCE (1 << 2)
1256 #define EMC_NFCSR_FCE (1 << 1)
1257 #define EMC_NFCSR_NFE (1 << 0)
1259 #define EMC_NFECC_ECC2_BIT 16
1260 #define EMC_NFECC_ECC2_MASK (0xff << EMC_NFECC_ECC2_BIT)
1261 #define EMC_NFECC_ECC1_BIT 8
1262 #define EMC_NFECC_ECC1_MASK (0xff << EMC_NFECC_ECC1_BIT)
1263 #define EMC_NFECC_ECC0_BIT 0
1264 #define EMC_NFECC_ECC0_MASK (0xff << EMC_NFECC_ECC0_BIT)
1266 #define EMC_DMCR_BW_BIT 31
1267 #define EMC_DMCR_BW (1 << EMC_DMCR_BW_BIT)
1268 #define EMC_DMCR_BW_32 (0 << EMC_DMCR_BW_BIT)
1269 #define EMC_DMCR_BW_16 (1 << EMC_DMCR_BW_BIT)
1270 #define EMC_DMCR_CA_BIT 26
1271 #define EMC_DMCR_CA_MASK (0x07 << EMC_DMCR_CA_BIT)
1272 #define EMC_DMCR_CA_8 (0 << EMC_DMCR_CA_BIT)
1273 #define EMC_DMCR_CA_9 (1 << EMC_DMCR_CA_BIT)
1274 #define EMC_DMCR_CA_10 (2 << EMC_DMCR_CA_BIT)
1275 #define EMC_DMCR_CA_11 (3 << EMC_DMCR_CA_BIT)
1276 #define EMC_DMCR_CA_12 (4 << EMC_DMCR_CA_BIT)
1277 #define EMC_DMCR_RMODE (1 << 25)
1278 #define EMC_DMCR_RFSH (1 << 24)
1279 #define EMC_DMCR_MRSET (1 << 23)
1280 #define EMC_DMCR_RA_BIT 20
1281 #define EMC_DMCR_RA_MASK (0x03 << EMC_DMCR_RA_BIT)
1282 #define EMC_DMCR_RA_11 (0 << EMC_DMCR_RA_BIT)
1283 #define EMC_DMCR_RA_12 (1 << EMC_DMCR_RA_BIT)
1284 #define EMC_DMCR_RA_13 (2 << EMC_DMCR_RA_BIT)
1285 #define EMC_DMCR_BA_BIT 19
1286 #define EMC_DMCR_BA (1 << EMC_DMCR_BA_BIT)
1287 #define EMC_DMCR_BA_2 (0 << EMC_DMCR_BA_BIT)
1288 #define EMC_DMCR_BA_4 (1 << EMC_DMCR_BA_BIT)
1289 #define EMC_DMCR_PDM (1 << 18)
1290 #define EMC_DMCR_EPIN (1 << 17)
1291 #define EMC_DMCR_TRAS_BIT 13
1292 #define EMC_DMCR_TRAS_MASK (0x07 << EMC_DMCR_TRAS_BIT)
1293 #define EMC_DMCR_RCD_BIT 11
1294 #define EMC_DMCR_RCD_MASK (0x03 << EMC_DMCR_RCD_BIT)
1295 #define EMC_DMCR_TPC_BIT 8
1296 #define EMC_DMCR_TPC_MASK (0x07 << EMC_DMCR_TPC_BIT)
1297 #define EMC_DMCR_TRWL_BIT 5
1298 #define EMC_DMCR_TRWL_MASK (0x03 << EMC_DMCR_TRWL_BIT)
1299 #define EMC_DMCR_TRC_BIT 2
1300 #define EMC_DMCR_TRC_MASK (0x07 << EMC_DMCR_TRC_BIT)
1301 #define EMC_DMCR_TCL_BIT 0
1302 #define EMC_DMCR_TCL_MASK (0x03 << EMC_DMCR_TCL_BIT)
1303 #define EMC_DMCR_CASL_2 (1 << EMC_DMCR_TCL_BIT)
1304 #define EMC_DMCR_CASL_3 (2 << EMC_DMCR_TCL_BIT)
1306 #define EMC_RTCSR_CMF (1 << 7)
1307 #define EMC_RTCSR_CKS_BIT 0
1308 #define EMC_RTCSR_CKS_MASK (0x07 << EMC_RTCSR_CKS_BIT)
1309 #define EMC_RTCSR_CKS_DISABLE (0 << EMC_RTCSR_CKS_BIT)
1310 #define EMC_RTCSR_CKS_4 (1 << EMC_RTCSR_CKS_BIT)
1311 #define EMC_RTCSR_CKS_16 (2 << EMC_RTCSR_CKS_BIT)
1312 #define EMC_RTCSR_CKS_64 (3 << EMC_RTCSR_CKS_BIT)
1313 #define EMC_RTCSR_CKS_256 (4 << EMC_RTCSR_CKS_BIT)
1314 #define EMC_RTCSR_CKS_1024 (5 << EMC_RTCSR_CKS_BIT)
1315 #define EMC_RTCSR_CKS_2048 (6 << EMC_RTCSR_CKS_BIT)
1316 #define EMC_RTCSR_CKS_4096 (7 << EMC_RTCSR_CKS_BIT)
1318 #define EMC_DMAR_BASE_BIT 8
1319 #define EMC_DMAR_BASE_MASK (0xff << EMC_DMAR_BASE_BIT)
1320 #define EMC_DMAR_MASK_BIT 0
1321 #define EMC_DMAR_MASK_MASK (0xff << EMC_DMAR_MASK_BIT)
1323 #define EMC_SDMR_BM (1 << 9)
1324 #define EMC_SDMR_OM_BIT 7
1325 #define EMC_SDMR_OM_MASK (3 << EMC_SDMR_OM_BIT)
1326 #define EMC_SDMR_OM_NORMAL (0 << EMC_SDMR_OM_BIT)
1327 #define EMC_SDMR_CAS_BIT 4
1328 #define EMC_SDMR_CAS_MASK (7 << EMC_SDMR_CAS_BIT)
1329 #define EMC_SDMR_CAS_1 (1 << EMC_SDMR_CAS_BIT)
1330 #define EMC_SDMR_CAS_2 (2 << EMC_SDMR_CAS_BIT)
1331 #define EMC_SDMR_CAS_3 (3 << EMC_SDMR_CAS_BIT)
1332 #define EMC_SDMR_BT_BIT 3
1333 #define EMC_SDMR_BT_MASK (1 << EMC_SDMR_BT_BIT)
1334 #define EMC_SDMR_BT_SEQ (0 << EMC_SDMR_BT_BIT)
1335 #define EMC_SDMR_BT_INTR (1 << EMC_SDMR_BT_BIT)
1336 #define EMC_SDMR_BL_BIT 0
1337 #define EMC_SDMR_BL_MASK (7 << EMC_SDMR_BL_BIT)
1338 #define EMC_SDMR_BL_1 (0 << EMC_SDMR_BL_BIT)
1339 #define EMC_SDMR_BL_2 (1 << EMC_SDMR_BL_BIT)
1340 #define EMC_SDMR_BL_4 (2 << EMC_SDMR_BL_BIT)
1341 #define EMC_SDMR_BL_8 (3 << EMC_SDMR_BL_BIT)
1343 #define EMC_SDMR_CAS2_16BIT \
1344 (EMC_SDMR_CAS_2 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_2)
1345 #define EMC_SDMR_CAS2_32BIT \
1346 (EMC_SDMR_CAS_2 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_4)
1347 #define EMC_SDMR_CAS3_16BIT \
1348 (EMC_SDMR_CAS_3 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_2)
1349 #define EMC_SDMR_CAS3_32BIT \
1350 (EMC_SDMR_CAS_3 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_4)
1352 #define EMC_PCCR12_AMW (1 << 31)
1353 #define EMC_PCCR12_AMAS_BIT 28
1354 #define EMC_PCCR12_AMAS_MASK (0x07 << EMC_PCCR12_AMAS_BIT)
1355 #define EMC_PCCR12_AMAH_BIT 24
1356 #define EMC_PCCR12_AMAH_MASK (0x07 << EMC_PCCR12_AMAH_BIT)
1357 #define EMC_PCCR12_AMPW_BIT 20
1358 #define EMC_PCCR12_AMPW_MASK (0x0f << EMC_PCCR12_AMPW_BIT)
1359 #define EMC_PCCR12_AMRT_BIT 16
1360 #define EMC_PCCR12_AMRT_MASK (0x0f << EMC_PCCR12_AMRT_BIT)
1361 #define EMC_PCCR12_CMW (1 << 15)
1362 #define EMC_PCCR12_CMAS_BIT 12
1363 #define EMC_PCCR12_CMAS_MASK (0x07 << EMC_PCCR12_CMAS_BIT)
1364 #define EMC_PCCR12_CMAH_BIT 8
1365 #define EMC_PCCR12_CMAH_MASK (0x07 << EMC_PCCR12_CMAH_BIT)
1366 #define EMC_PCCR12_CMPW_BIT 4
1367 #define EMC_PCCR12_CMPW_MASK (0x0f << EMC_PCCR12_CMPW_BIT)
1368 #define EMC_PCCR12_CMRT_BIT 0
1369 #define EMC_PCCR12_CMRT_MASK (0x07 << EMC_PCCR12_CMRT_BIT)
1371 #define EMC_PCCR34_DRS_BIT 16
1372 #define EMC_PCCR34_DRS_MASK (0x03 << EMC_PCCR34_DRS_BIT)
1373 #define EMC_PCCR34_DRS_SPKR (1 << EMC_PCCR34_DRS_BIT)
1374 #define EMC_PCCR34_DRS_IOIS16 (2 << EMC_PCCR34_DRS_BIT)
1375 #define EMC_PCCR34_DRS_INPACK (3 << EMC_PCCR34_DRS_BIT)
1376 #define EMC_PCCR34_IOIS16 (1 << 15)
1377 #define EMC_PCCR34_IOW (1 << 14)
1378 #define EMC_PCCR34_TCB_BIT 12
1379 #define EMC_PCCR34_TCB_MASK (0x03 << EMC_PCCR34_TCB_BIT)
1380 #define EMC_PCCR34_IORT_BIT 8
1381 #define EMC_PCCR34_IORT_MASK (0x07 << EMC_PCCR34_IORT_BIT)
1382 #define EMC_PCCR34_IOAE_BIT 6
1383 #define EMC_PCCR34_IOAE_MASK (0x03 << EMC_PCCR34_IOAE_BIT)
1384 #define EMC_PCCR34_IOAE_NONE (0 << EMC_PCCR34_IOAE_BIT)
1385 #define EMC_PCCR34_IOAE_1 (1 << EMC_PCCR34_IOAE_BIT)
1386 #define EMC_PCCR34_IOAE_2 (2 << EMC_PCCR34_IOAE_BIT)
1387 #define EMC_PCCR34_IOAE_5 (3 << EMC_PCCR34_IOAE_BIT)
1388 #define EMC_PCCR34_IOAH_BIT 4
1389 #define EMC_PCCR34_IOAH_MASK (0x03 << EMC_PCCR34_IOAH_BIT)
1390 #define EMC_PCCR34_IOAH_NONE (0 << EMC_PCCR34_IOAH_BIT)
1391 #define EMC_PCCR34_IOAH_1 (1 << EMC_PCCR34_IOAH_BIT)
1392 #define EMC_PCCR34_IOAH_2 (2 << EMC_PCCR34_IOAH_BIT)
1393 #define EMC_PCCR34_IOAH_5 (3 << EMC_PCCR34_IOAH_BIT)
1394 #define EMC_PCCR34_IOPW_BIT 0
1395 #define EMC_PCCR34_IOPW_MASK (0x0f << EMC_PCCR34_IOPW_BIT)
1400 /*************************************************************************
1401 * GPIO
1402 *************************************************************************/
1403 #define GPIO_GPDR(n) (GPIO_BASE + (0x00 + (n)*0x30))
1404 #define GPIO_GPDIR(n) (GPIO_BASE + (0x04 + (n)*0x30))
1405 #define GPIO_GPODR(n) (GPIO_BASE + (0x08 + (n)*0x30))
1406 #define GPIO_GPPUR(n) (GPIO_BASE + (0x0c + (n)*0x30))
1407 #define GPIO_GPALR(n) (GPIO_BASE + (0x10 + (n)*0x30))
1408 #define GPIO_GPAUR(n) (GPIO_BASE + (0x14 + (n)*0x30))
1409 #define GPIO_GPIDLR(n) (GPIO_BASE + (0x18 + (n)*0x30))
1410 #define GPIO_GPIDUR(n) (GPIO_BASE + (0x1c + (n)*0x30))
1411 #define GPIO_GPIER(n) (GPIO_BASE + (0x20 + (n)*0x30))
1412 #define GPIO_GPIMR(n) (GPIO_BASE + (0x24 + (n)*0x30))
1413 #define GPIO_GPFR(n) (GPIO_BASE + (0x28 + (n)*0x30))
1415 #define REG_GPIO_GPDR(n) REG32(GPIO_GPDR((n)))
1416 #define REG_GPIO_GPDIR(n) REG32(GPIO_GPDIR((n)))
1417 #define REG_GPIO_GPODR(n) REG32(GPIO_GPODR((n)))
1418 #define REG_GPIO_GPPUR(n) REG32(GPIO_GPPUR((n)))
1419 #define REG_GPIO_GPALR(n) REG32(GPIO_GPALR((n)))
1420 #define REG_GPIO_GPAUR(n) REG32(GPIO_GPAUR((n)))
1421 #define REG_GPIO_GPIDLR(n) REG32(GPIO_GPIDLR((n)))
1422 #define REG_GPIO_GPIDUR(n) REG32(GPIO_GPIDUR((n)))
1423 #define REG_GPIO_GPIER(n) REG32(GPIO_GPIER((n)))
1424 #define REG_GPIO_GPIMR(n) REG32(GPIO_GPIMR((n)))
1425 #define REG_GPIO_GPFR(n) REG32(GPIO_GPFR((n)))
1427 #define GPIO_IRQ_LOLEVEL 0
1428 #define GPIO_IRQ_HILEVEL 1
1429 #define GPIO_IRQ_FALLEDG 2
1430 #define GPIO_IRQ_RAISEDG 3
1432 #define IRQ_GPIO_0 48
1433 #define NUM_GPIO 100
1435 #define GPIO_GPDR0 GPIO_GPDR(0)
1436 #define GPIO_GPDR1 GPIO_GPDR(1)
1437 #define GPIO_GPDR2 GPIO_GPDR(2)
1438 #define GPIO_GPDR3 GPIO_GPDR(3)
1439 #define GPIO_GPDIR0 GPIO_GPDIR(0)
1440 #define GPIO_GPDIR1 GPIO_GPDIR(1)
1441 #define GPIO_GPDIR2 GPIO_GPDIR(2)
1442 #define GPIO_GPDIR3 GPIO_GPDIR(3)
1443 #define GPIO_GPODR0 GPIO_GPODR(0)
1444 #define GPIO_GPODR1 GPIO_GPODR(1)
1445 #define GPIO_GPODR2 GPIO_GPODR(2)
1446 #define GPIO_GPODR3 GPIO_GPODR(3)
1447 #define GPIO_GPPUR0 GPIO_GPPUR(0)
1448 #define GPIO_GPPUR1 GPIO_GPPUR(1)
1449 #define GPIO_GPPUR2 GPIO_GPPUR(2)
1450 #define GPIO_GPPUR3 GPIO_GPPUR(3)
1451 #define GPIO_GPALR0 GPIO_GPALR(0)
1452 #define GPIO_GPALR1 GPIO_GPALR(1)
1453 #define GPIO_GPALR2 GPIO_GPALR(2)
1454 #define GPIO_GPALR3 GPIO_GPALR(3)
1455 #define GPIO_GPAUR0 GPIO_GPAUR(0)
1456 #define GPIO_GPAUR1 GPIO_GPAUR(1)
1457 #define GPIO_GPAUR2 GPIO_GPAUR(2)
1458 #define GPIO_GPAUR3 GPIO_GPAUR(3)
1459 #define GPIO_GPIDLR0 GPIO_GPIDLR(0)
1460 #define GPIO_GPIDLR1 GPIO_GPIDLR(1)
1461 #define GPIO_GPIDLR2 GPIO_GPIDLR(2)
1462 #define GPIO_GPIDLR3 GPIO_GPIDLR(3)
1463 #define GPIO_GPIDUR0 GPIO_GPIDUR(0)
1464 #define GPIO_GPIDUR1 GPIO_GPIDUR(1)
1465 #define GPIO_GPIDUR2 GPIO_GPIDUR(2)
1466 #define GPIO_GPIDUR3 GPIO_GPIDUR(3)
1467 #define GPIO_GPIER0 GPIO_GPIER(0)
1468 #define GPIO_GPIER1 GPIO_GPIER(1)
1469 #define GPIO_GPIER2 GPIO_GPIER(2)
1470 #define GPIO_GPIER3 GPIO_GPIER(3)
1471 #define GPIO_GPIMR0 GPIO_GPIMR(0)
1472 #define GPIO_GPIMR1 GPIO_GPIMR(1)
1473 #define GPIO_GPIMR2 GPIO_GPIMR(2)
1474 #define GPIO_GPIMR3 GPIO_GPIMR(3)
1475 #define GPIO_GPFR0 GPIO_GPFR(0)
1476 #define GPIO_GPFR1 GPIO_GPFR(1)
1477 #define GPIO_GPFR2 GPIO_GPFR(2)
1478 #define GPIO_GPFR3 GPIO_GPFR(3)
1481 /*************************************************************************
1482 * HARB
1483 *************************************************************************/
1484 #define HARB_HAPOR (HARB_BASE + 0x000)
1485 #define HARB_HMCTR (HARB_BASE + 0x010)
1486 #define HARB_HME8H (HARB_BASE + 0x014)
1487 #define HARB_HMCR1 (HARB_BASE + 0x018)
1488 #define HARB_HMER2 (HARB_BASE + 0x01C)
1489 #define HARB_HMER3 (HARB_BASE + 0x020)
1490 #define HARB_HMLTR (HARB_BASE + 0x024)
1492 #define REG_HARB_HAPOR REG32(HARB_HAPOR)
1493 #define REG_HARB_HMCTR REG32(HARB_HMCTR)
1494 #define REG_HARB_HME8H REG32(HARB_HME8H)
1495 #define REG_HARB_HMCR1 REG32(HARB_HMCR1)
1496 #define REG_HARB_HMER2 REG32(HARB_HMER2)
1497 #define REG_HARB_HMER3 REG32(HARB_HMER3)
1498 #define REG_HARB_HMLTR REG32(HARB_HMLTR)
1500 /* HARB Priority Order Register (HARB_HAPOR) */
1502 #define HARB_HAPOR_UCHSEL (1 << 7)
1503 #define HARB_HAPOR_PRIO_BIT 0
1504 #define HARB_HAPOR_PRIO_MASK (0xf << HARB_HAPOR_PRIO_BIT)
1506 /* AHB Monitor Control Register (HARB_HMCTR) */
1508 #define HARB_HMCTR_HET3_BIT 20
1509 #define HARB_HMCTR_HET3_MASK (0xf << HARB_HMCTR_HET3_BIT)
1510 #define HARB_HMCTR_HMS3_BIT 16
1511 #define HARB_HMCTR_HMS3_MASK (0xf << HARB_HMCTR_HMS3_BIT)
1512 #define HARB_HMCTR_HET2_BIT 12
1513 #define HARB_HMCTR_HET2_MASK (0xf << HARB_HMCTR_HET2_BIT)
1514 #define HARB_HMCTR_HMS2_BIT 8
1515 #define HARB_HMCTR_HMS2_MASK (0xf << HARB_HMCTR_HMS2_BIT)
1516 #define HARB_HMCTR_HOVF3 (1 << 7)
1517 #define HARB_HMCTR_HOVF2 (1 << 6)
1518 #define HARB_HMCTR_HOVF1 (1 << 5)
1519 #define HARB_HMCTR_HRST (1 << 4)
1520 #define HARB_HMCTR_HEE3 (1 << 2)
1521 #define HARB_HMCTR_HEE2 (1 << 1)
1522 #define HARB_HMCTR_HEE1 (1 << 0)
1524 /* AHB Monitor Event 8bits High Register (HARB_HME8H) */
1526 #define HARB_HME8H_HC8H1_BIT 16
1527 #define HARB_HME8H_HC8H1_MASK (0xff << HARB_HME8H_HC8H1_BIT)
1528 #define HARB_HME8H_HC8H2_BIT 8
1529 #define HARB_HME8H_HC8H2_MASK (0xff << HARB_HME8H_HC8H2_BIT)
1530 #define HARB_HME8H_HC8H3_BIT 0
1531 #define HARB_HME8H_HC8H3_MASK (0xff << HARB_HME8H_HC8H3_BIT)
1533 /* AHB Monitor Latency Register (HARB_HMLTR) */
1535 #define HARB_HMLTR_HLT2_BIT 16
1536 #define HARB_HMLTR_HLT2_MASK (0xffff << HARB_HMLTR_HLT2_BIT)
1537 #define HARB_HMLTR_HLT3_BIT 0
1538 #define HARB_HMLTR_HLT3_MASK (0xffff << HARB_HMLTR_HLT3_BIT)
1543 /*************************************************************************
1544 * I2C
1545 *************************************************************************/
1546 #define I2C_DR (I2C_BASE + 0x000)
1547 #define I2C_CR (I2C_BASE + 0x004)
1548 #define I2C_SR (I2C_BASE + 0x008)
1549 #define I2C_GR (I2C_BASE + 0x00C)
1551 #define REG_I2C_DR REG8(I2C_DR)
1552 #define REG_I2C_CR REG8(I2C_CR)
1553 #define REG_I2C_SR REG8(I2C_SR)
1554 #define REG_I2C_GR REG16(I2C_GR)
1556 /* I2C Control Register (I2C_CR) */
1558 #define I2C_CR_IEN (1 << 4)
1559 #define I2C_CR_STA (1 << 3)
1560 #define I2C_CR_STO (1 << 2)
1561 #define I2C_CR_AC (1 << 1)
1562 #define I2C_CR_I2CE (1 << 0)
1564 /* I2C Status Register (I2C_SR) */
1566 #define I2C_SR_STX (1 << 4)
1567 #define I2C_SR_BUSY (1 << 3)
1568 #define I2C_SR_TEND (1 << 2)
1569 #define I2C_SR_DRF (1 << 1)
1570 #define I2C_SR_ACKF (1 << 0)
1575 /*************************************************************************
1576 * UDC
1577 *************************************************************************/
1578 #define UDC_EP0InCR (UDC_BASE + 0x00)
1579 #define UDC_EP0InSR (UDC_BASE + 0x04)
1580 #define UDC_EP0InBSR (UDC_BASE + 0x08)
1581 #define UDC_EP0InMPSR (UDC_BASE + 0x0c)
1582 #define UDC_EP0InDesR (UDC_BASE + 0x14)
1583 #define UDC_EP1InCR (UDC_BASE + 0x20)
1584 #define UDC_EP1InSR (UDC_BASE + 0x24)
1585 #define UDC_EP1InBSR (UDC_BASE + 0x28)
1586 #define UDC_EP1InMPSR (UDC_BASE + 0x2c)
1587 #define UDC_EP1InDesR (UDC_BASE + 0x34)
1588 #define UDC_EP2InCR (UDC_BASE + 0x40)
1589 #define UDC_EP2InSR (UDC_BASE + 0x44)
1590 #define UDC_EP2InBSR (UDC_BASE + 0x48)
1591 #define UDC_EP2InMPSR (UDC_BASE + 0x4c)
1592 #define UDC_EP2InDesR (UDC_BASE + 0x54)
1593 #define UDC_EP3InCR (UDC_BASE + 0x60)
1594 #define UDC_EP3InSR (UDC_BASE + 0x64)
1595 #define UDC_EP3InBSR (UDC_BASE + 0x68)
1596 #define UDC_EP3InMPSR (UDC_BASE + 0x6c)
1597 #define UDC_EP3InDesR (UDC_BASE + 0x74)
1598 #define UDC_EP4InCR (UDC_BASE + 0x80)
1599 #define UDC_EP4InSR (UDC_BASE + 0x84)
1600 #define UDC_EP4InBSR (UDC_BASE + 0x88)
1601 #define UDC_EP4InMPSR (UDC_BASE + 0x8c)
1602 #define UDC_EP4InDesR (UDC_BASE + 0x94)
1604 #define UDC_EP0OutCR (UDC_BASE + 0x200)
1605 #define UDC_EP0OutSR (UDC_BASE + 0x204)
1606 #define UDC_EP0OutPFNR (UDC_BASE + 0x208)
1607 #define UDC_EP0OutMPSR (UDC_BASE + 0x20c)
1608 #define UDC_EP0OutSBPR (UDC_BASE + 0x210)
1609 #define UDC_EP0OutDesR (UDC_BASE + 0x214)
1610 #define UDC_EP5OutCR (UDC_BASE + 0x2a0)
1611 #define UDC_EP5OutSR (UDC_BASE + 0x2a4)
1612 #define UDC_EP5OutPFNR (UDC_BASE + 0x2a8)
1613 #define UDC_EP5OutMPSR (UDC_BASE + 0x2ac)
1614 #define UDC_EP5OutDesR (UDC_BASE + 0x2b4)
1615 #define UDC_EP6OutCR (UDC_BASE + 0x2c0)
1616 #define UDC_EP6OutSR (UDC_BASE + 0x2c4)
1617 #define UDC_EP6OutPFNR (UDC_BASE + 0x2c8)
1618 #define UDC_EP6OutMPSR (UDC_BASE + 0x2cc)
1619 #define UDC_EP6OutDesR (UDC_BASE + 0x2d4)
1620 #define UDC_EP7OutCR (UDC_BASE + 0x2e0)
1621 #define UDC_EP7OutSR (UDC_BASE + 0x2e4)
1622 #define UDC_EP7OutPFNR (UDC_BASE + 0x2e8)
1623 #define UDC_EP7OutMPSR (UDC_BASE + 0x2ec)
1624 #define UDC_EP7OutDesR (UDC_BASE + 0x2f4)
1626 #define UDC_DevCFGR (UDC_BASE + 0x400)
1627 #define UDC_DevCR (UDC_BASE + 0x404)
1628 #define UDC_DevSR (UDC_BASE + 0x408)
1629 #define UDC_DevIntR (UDC_BASE + 0x40c)
1630 #define UDC_DevIntMR (UDC_BASE + 0x410)
1631 #define UDC_EPIntR (UDC_BASE + 0x414)
1632 #define UDC_EPIntMR (UDC_BASE + 0x418)
1634 #define UDC_STCMAR (UDC_BASE + 0x500)
1635 #define UDC_EP0InfR (UDC_BASE + 0x504)
1636 #define UDC_EP1InfR (UDC_BASE + 0x508)
1637 #define UDC_EP2InfR (UDC_BASE + 0x50c)
1638 #define UDC_EP3InfR (UDC_BASE + 0x510)
1639 #define UDC_EP4InfR (UDC_BASE + 0x514)
1640 #define UDC_EP5InfR (UDC_BASE + 0x518)
1641 #define UDC_EP6InfR (UDC_BASE + 0x51c)
1642 #define UDC_EP7InfR (UDC_BASE + 0x520)
1644 #define UDC_TXCONFIRM (UDC_BASE + 0x41C)
1645 #define UDC_TXZLP (UDC_BASE + 0x420)
1646 #define UDC_RXCONFIRM (UDC_BASE + 0x41C)
1648 #define UDC_RXFIFO (UDC_BASE + 0x800)
1649 #define UDC_TXFIFOEP0 (UDC_BASE + 0x840)
1651 #define REG_UDC_EP0InCR REG32(UDC_EP0InCR)
1652 #define REG_UDC_EP0InSR REG32(UDC_EP0InSR)
1653 #define REG_UDC_EP0InBSR REG32(UDC_EP0InBSR)
1654 #define REG_UDC_EP0InMPSR REG32(UDC_EP0InMPSR)
1655 #define REG_UDC_EP0InDesR REG32(UDC_EP0InDesR)
1656 #define REG_UDC_EP1InCR REG32(UDC_EP1InCR)
1657 #define REG_UDC_EP1InSR REG32(UDC_EP1InSR)
1658 #define REG_UDC_EP1InBSR REG32(UDC_EP1InBSR)
1659 #define REG_UDC_EP1InMPSR REG32(UDC_EP1InMPSR)
1660 #define REG_UDC_EP1InDesR REG32(UDC_EP1InDesR)
1661 #define REG_UDC_EP2InCR REG32(UDC_EP2InCR)
1662 #define REG_UDC_EP2InSR REG32(UDC_EP2InSR)
1663 #define REG_UDC_EP2InBSR REG32(UDC_EP2InBSR)
1664 #define REG_UDC_EP2InMPSR REG32(UDC_EP2InMPSR)
1665 #define REG_UDC_EP2InDesR REG32(UDC_EP2InDesR)
1666 #define REG_UDC_EP3InCR REG32(UDC_EP3InCR)
1667 #define REG_UDC_EP3InSR REG32(UDC_EP3InSR)
1668 #define REG_UDC_EP3InBSR REG32(UDC_EP3InBSR)
1669 #define REG_UDC_EP3InMPSR REG32(UDC_EP3InMPSR)
1670 #define REG_UDC_EP3InDesR REG32(UDC_EP3InDesR)
1671 #define REG_UDC_EP4InCR REG32(UDC_EP4InCR)
1672 #define REG_UDC_EP4InSR REG32(UDC_EP4InSR)
1673 #define REG_UDC_EP4InBSR REG32(UDC_EP4InBSR)
1674 #define REG_UDC_EP4InMPSR REG32(UDC_EP4InMPSR)
1675 #define REG_UDC_EP4InDesR REG32(UDC_EP4InDesR)
1677 #define REG_UDC_EP0OutCR REG32(UDC_EP0OutCR)
1678 #define REG_UDC_EP0OutSR REG32(UDC_EP0OutSR)
1679 #define REG_UDC_EP0OutPFNR REG32(UDC_EP0OutPFNR)
1680 #define REG_UDC_EP0OutMPSR REG32(UDC_EP0OutMPSR)
1681 #define REG_UDC_EP0OutSBPR REG32(UDC_EP0OutSBPR)
1682 #define REG_UDC_EP0OutDesR REG32(UDC_EP0OutDesR)
1683 #define REG_UDC_EP5OutCR REG32(UDC_EP5OutCR)
1684 #define REG_UDC_EP5OutSR REG32(UDC_EP5OutSR)
1685 #define REG_UDC_EP5OutPFNR REG32(UDC_EP5OutPFNR)
1686 #define REG_UDC_EP5OutMPSR REG32(UDC_EP5OutMPSR)
1687 #define REG_UDC_EP5OutDesR REG32(UDC_EP5OutDesR)
1688 #define REG_UDC_EP6OutCR REG32(UDC_EP6OutCR)
1689 #define REG_UDC_EP6OutSR REG32(UDC_EP6OutSR)
1690 #define REG_UDC_EP6OutPFNR REG32(UDC_EP6OutPFNR)
1691 #define REG_UDC_EP6OutMPSR REG32(UDC_EP6OutMPSR)
1692 #define REG_UDC_EP6OutDesR REG32(UDC_EP6OutDesR)
1693 #define REG_UDC_EP7OutCR REG32(UDC_EP7OutCR)
1694 #define REG_UDC_EP7OutSR REG32(UDC_EP7OutSR)
1695 #define REG_UDC_EP7OutPFNR REG32(UDC_EP7OutPFNR)
1696 #define REG_UDC_EP7OutMPSR REG32(UDC_EP7OutMPSR)
1697 #define REG_UDC_EP7OutDesR REG32(UDC_EP7OutDesR)
1699 #define REG_UDC_DevCFGR REG32(UDC_DevCFGR)
1700 #define REG_UDC_DevCR REG32(UDC_DevCR)
1701 #define REG_UDC_DevSR REG32(UDC_DevSR)
1702 #define REG_UDC_DevIntR REG32(UDC_DevIntR)
1703 #define REG_UDC_DevIntMR REG32(UDC_DevIntMR)
1704 #define REG_UDC_EPIntR REG32(UDC_EPIntR)
1705 #define REG_UDC_EPIntMR REG32(UDC_EPIntMR)
1707 #define REG_UDC_STCMAR REG32(UDC_STCMAR)
1708 #define REG_UDC_EP0InfR REG32(UDC_EP0InfR)
1709 #define REG_UDC_EP1InfR REG32(UDC_EP1InfR)
1710 #define REG_UDC_EP2InfR REG32(UDC_EP2InfR)
1711 #define REG_UDC_EP3InfR REG32(UDC_EP3InfR)
1712 #define REG_UDC_EP4InfR REG32(UDC_EP4InfR)
1713 #define REG_UDC_EP5InfR REG32(UDC_EP5InfR)
1714 #define REG_UDC_EP6InfR REG32(UDC_EP6InfR)
1715 #define REG_UDC_EP7InfR REG32(UDC_EP7InfR)
1717 #define UDC_DevCFGR_PI (1 << 5)
1718 #define UDC_DevCFGR_SS (1 << 4)
1719 #define UDC_DevCFGR_SP (1 << 3)
1720 #define UDC_DevCFGR_RW (1 << 2)
1721 #define UDC_DevCFGR_SPD_BIT 0
1722 #define UDC_DevCFGR_SPD_MASK (0x03 << UDC_DevCFGR_SPD_BIT)
1723 #define UDC_DevCFGR_SPD_HS (0 << UDC_DevCFGR_SPD_BIT)
1724 #define UDC_DevCFGR_SPD_LS (2 << UDC_DevCFGR_SPD_BIT)
1725 #define UDC_DevCFGR_SPD_FS (3 << UDC_DevCFGR_SPD_BIT)
1727 #define UDC_DevCR_DM (1 << 9)
1728 #define UDC_DevCR_BE (1 << 5)
1729 #define UDC_DevCR_RES (1 << 0)
1731 #define UDC_DevSR_ENUMSPD_BIT 13
1732 #define UDC_DevSR_ENUMSPD_MASK (0x03 << UDC_DevSR_ENUMSPD_BIT)
1733 #define UDC_DevSR_ENUMSPD_HS (0 << UDC_DevSR_ENUMSPD_BIT)
1734 #define UDC_DevSR_ENUMSPD_LS (2 << UDC_DevSR_ENUMSPD_BIT)
1735 #define UDC_DevSR_ENUMSPD_FS (3 << UDC_DevSR_ENUMSPD_BIT)
1736 #define UDC_DevSR_SUSP (1 << 12)
1737 #define UDC_DevSR_ALT_BIT 8
1738 #define UDC_DevSR_ALT_MASK (0x0f << UDC_DevSR_ALT_BIT)
1739 #define UDC_DevSR_INTF_BIT 4
1740 #define UDC_DevSR_INTF_MASK (0x0f << UDC_DevSR_INTF_BIT)
1741 #define UDC_DevSR_CFG_BIT 0
1742 #define UDC_DevSR_CFG_MASK (0x0f << UDC_DevSR_CFG_BIT)
1744 #define UDC_DevIntR_ENUM (1 << 6)
1745 #define UDC_DevIntR_SOF (1 << 5)
1746 #define UDC_DevIntR_US (1 << 4)
1747 #define UDC_DevIntR_UR (1 << 3)
1748 #define UDC_DevIntR_SI (1 << 1)
1749 #define UDC_DevIntR_SC (1 << 0)
1751 #define UDC_EPIntR_OUTEP_BIT 16
1752 #define UDC_EPIntR_OUTEP_MASK (0xffff << UDC_EPIntR_OUTEP_BIT)
1753 #define UDC_EPIntR_OUTEP0 0x00010000
1754 #define UDC_EPIntR_OUTEP5 0x00200000
1755 #define UDC_EPIntR_OUTEP6 0x00400000
1756 #define UDC_EPIntR_OUTEP7 0x00800000
1757 #define UDC_EPIntR_INEP_BIT 0
1758 #define UDC_EPIntR_INEP_MASK (0xffff << UDC_EPIntR_INEP_BIT)
1759 #define UDC_EPIntR_INEP0 0x00000001
1760 #define UDC_EPIntR_INEP1 0x00000002
1761 #define UDC_EPIntR_INEP2 0x00000004
1762 #define UDC_EPIntR_INEP3 0x00000008
1763 #define UDC_EPIntR_INEP4 0x00000010
1766 #define UDC_EPIntMR_OUTEP_BIT 16
1767 #define UDC_EPIntMR_OUTEP_MASK (0xffff << UDC_EPIntMR_OUTEP_BIT)
1768 #define UDC_EPIntMR_INEP_BIT 0
1769 #define UDC_EPIntMR_INEP_MASK (0xffff << UDC_EPIntMR_INEP_BIT)
1771 #define UDC_EPCR_ET_BIT 4
1772 #define UDC_EPCR_ET_MASK (0x03 << UDC_EPCR_ET_BIT)
1773 #define UDC_EPCR_ET_CTRL (0 << UDC_EPCR_ET_BIT)
1774 #define UDC_EPCR_ET_ISO (1 << UDC_EPCR_ET_BIT)
1775 #define UDC_EPCR_ET_BULK (2 << UDC_EPCR_ET_BIT)
1776 #define UDC_EPCR_ET_INTR (3 << UDC_EPCR_ET_BIT)
1777 #define UDC_EPCR_SN (1 << 2)
1778 #define UDC_EPCR_F (1 << 1)
1779 #define UDC_EPCR_S (1 << 0)
1781 #define UDC_EPSR_RXPKTSIZE_BIT 11
1782 #define UDC_EPSR_RXPKTSIZE_MASK (0x7ff << UDC_EPSR_RXPKTSIZE_BIT)
1783 #define UDC_EPSR_IN (1 << 6)
1784 #define UDC_EPSR_OUT_BIT 4
1785 #define UDC_EPSR_OUT_MASK (0x03 << UDC_EPSR_OUT_BIT)
1786 #define UDC_EPSR_OUT_NONE (0 << UDC_EPSR_OUT_BIT)
1787 #define UDC_EPSR_OUT_RCVDATA (1 << UDC_EPSR_OUT_BIT)
1788 #define UDC_EPSR_OUT_RCVSETUP (2 << UDC_EPSR_OUT_BIT)
1789 #define UDC_EPSR_PID_BIT 0
1790 #define UDC_EPSR_PID_MASK (0x0f << UDC_EPSR_PID_BIT)
1792 #define UDC_EPInfR_MPS_BIT 19
1793 #define UDC_EPInfR_MPS_MASK (0x3ff << UDC_EPInfR_MPS_BIT)
1794 #define UDC_EPInfR_ALTS_BIT 15
1795 #define UDC_EPInfR_ALTS_MASK (0x0f << UDC_EPInfR_ALTS_BIT)
1796 #define UDC_EPInfR_IFN_BIT 11
1797 #define UDC_EPInfR_IFN_MASK (0x0f << UDC_EPInfR_IFN_BIT)
1798 #define UDC_EPInfR_CGN_BIT 7
1799 #define UDC_EPInfR_CGN_MASK (0x0f << UDC_EPInfR_CGN_BIT)
1800 #define UDC_EPInfR_EPT_BIT 5
1801 #define UDC_EPInfR_EPT_MASK (0x03 << UDC_EPInfR_EPT_BIT)
1802 #define UDC_EPInfR_EPT_CTRL (0 << UDC_EPInfR_EPT_BIT)
1803 #define UDC_EPInfR_EPT_ISO (1 << UDC_EPInfR_EPT_BIT)
1804 #define UDC_EPInfR_EPT_BULK (2 << UDC_EPInfR_EPT_BIT)
1805 #define UDC_EPInfR_EPT_INTR (3 << UDC_EPInfR_EPT_BIT)
1806 #define UDC_EPInfR_EPD (1 << 4)
1807 #define UDC_EPInfR_EPD_OUT (0 << 4)
1808 #define UDC_EPInfR_EPD_IN (1 << 4)
1810 #define UDC_EPInfR_EPN_BIT 0
1811 #define UDC_EPInfR_EPN_MASK (0xf << UDC_EPInfR_EPN_BIT)
1816 /*************************************************************************
1817 * DMAC
1818 *************************************************************************/
1819 #define DMAC_DSAR(n) (DMAC_BASE + (0x00 + (n) * 0x20))
1820 #define DMAC_DDAR(n) (DMAC_BASE + (0x04 + (n) * 0x20))
1821 #define DMAC_DTCR(n) (DMAC_BASE + (0x08 + (n) * 0x20))
1822 #define DMAC_DRSR(n) (DMAC_BASE + (0x0c + (n) * 0x20))
1823 #define DMAC_DCCSR(n) (DMAC_BASE + (0x10 + (n) * 0x20))
1824 #define DMAC_DMAIPR (DMAC_BASE + 0xf8)
1825 #define DMAC_DMACR (DMAC_BASE + 0xfc)
1827 #define REG_DMAC_DSAR(n) REG32(DMAC_DSAR((n)))
1828 #define REG_DMAC_DDAR(n) REG32(DMAC_DDAR((n)))
1829 #define REG_DMAC_DTCR(n) REG32(DMAC_DTCR((n)))
1830 #define REG_DMAC_DRSR(n) REG32(DMAC_DRSR((n)))
1831 #define REG_DMAC_DCCSR(n) REG32(DMAC_DCCSR((n)))
1832 #define REG_DMAC_DMAIPR REG32(DMAC_DMAIPR)
1833 #define REG_DMAC_DMACR REG32(DMAC_DMACR)
1835 #define DMAC_DRSR_RS_BIT 0
1836 #define DMAC_DRSR_RS_MASK (0x1f << DMAC_DRSR_RS_BIT)
1837 #define DMAC_DRSR_RS_EXTREXTR (0 << DMAC_DRSR_RS_BIT)
1838 #define DMAC_DRSR_RS_PCMCIAOUT (4 << DMAC_DRSR_RS_BIT)
1839 #define DMAC_DRSR_RS_PCMCIAIN (5 << DMAC_DRSR_RS_BIT)
1840 #define DMAC_DRSR_RS_AUTO (8 << DMAC_DRSR_RS_BIT)
1841 #define DMAC_DRSR_RS_DESOUT (10 << DMAC_DRSR_RS_BIT)
1842 #define DMAC_DRSR_RS_DESIN (11 << DMAC_DRSR_RS_BIT)
1843 #define DMAC_DRSR_RS_UART3OUT (14 << DMAC_DRSR_RS_BIT)
1844 #define DMAC_DRSR_RS_UART3IN (15 << DMAC_DRSR_RS_BIT)
1845 #define DMAC_DRSR_RS_UART2OUT (16 << DMAC_DRSR_RS_BIT)
1846 #define DMAC_DRSR_RS_UART2IN (17 << DMAC_DRSR_RS_BIT)
1847 #define DMAC_DRSR_RS_UART1OUT (18 << DMAC_DRSR_RS_BIT)
1848 #define DMAC_DRSR_RS_UART1IN (19 << DMAC_DRSR_RS_BIT)
1849 #define DMAC_DRSR_RS_UART0OUT (20 << DMAC_DRSR_RS_BIT)
1850 #define DMAC_DRSR_RS_UART0IN (21 << DMAC_DRSR_RS_BIT)
1851 #define DMAC_DRSR_RS_SSIOUT (22 << DMAC_DRSR_RS_BIT)
1852 #define DMAC_DRSR_RS_SSIIN (23 << DMAC_DRSR_RS_BIT)
1853 #define DMAC_DRSR_RS_AICOUT (24 << DMAC_DRSR_RS_BIT)
1854 #define DMAC_DRSR_RS_AICIN (25 << DMAC_DRSR_RS_BIT)
1855 #define DMAC_DRSR_RS_MSCOUT (26 << DMAC_DRSR_RS_BIT)
1856 #define DMAC_DRSR_RS_MSCIN (27 << DMAC_DRSR_RS_BIT)
1857 #define DMAC_DRSR_RS_OST2 (28 << DMAC_DRSR_RS_BIT)
1859 #define DMAC_DCCSR_EACKS (1 << 31)
1860 #define DMAC_DCCSR_EACKM (1 << 30)
1861 #define DMAC_DCCSR_ERDM_BIT 28
1862 #define DMAC_DCCSR_ERDM_MASK (0x03 << DMAC_DCCSR_ERDM_BIT)
1863 #define DMAC_DCCSR_ERDM_LLEVEL (0 << DMAC_DCCSR_ERDM_BIT)
1864 #define DMAC_DCCSR_ERDM_FEDGE (1 << DMAC_DCCSR_ERDM_BIT)
1865 #define DMAC_DCCSR_ERDM_HLEVEL (2 << DMAC_DCCSR_ERDM_BIT)
1866 #define DMAC_DCCSR_ERDM_REDGE (3 << DMAC_DCCSR_ERDM_BIT)
1867 #define DMAC_DCCSR_EOPM (1 << 27)
1868 #define DMAC_DCCSR_SAM (1 << 23)
1869 #define DMAC_DCCSR_DAM (1 << 22)
1870 #define DMAC_DCCSR_RDIL_BIT 16
1871 #define DMAC_DCCSR_RDIL_MASK (0x0f << DMAC_DCCSR_RDIL_BIT)
1872 #define DMAC_DCCSR_RDIL_IGN (0 << DMAC_DCCSR_RDIL_BIT)
1873 #define DMAC_DCCSR_RDIL_2 (1 << DMAC_DCCSR_RDIL_BIT)
1874 #define DMAC_DCCSR_RDIL_4 (2 << DMAC_DCCSR_RDIL_BIT)
1875 #define DMAC_DCCSR_RDIL_8 (3 << DMAC_DCCSR_RDIL_BIT)
1876 #define DMAC_DCCSR_RDIL_12 (4 << DMAC_DCCSR_RDIL_BIT)
1877 #define DMAC_DCCSR_RDIL_16 (5 << DMAC_DCCSR_RDIL_BIT)
1878 #define DMAC_DCCSR_RDIL_20 (6 << DMAC_DCCSR_RDIL_BIT)
1879 #define DMAC_DCCSR_RDIL_24 (7 << DMAC_DCCSR_RDIL_BIT)
1880 #define DMAC_DCCSR_RDIL_28 (8 << DMAC_DCCSR_RDIL_BIT)
1881 #define DMAC_DCCSR_RDIL_32 (9 << DMAC_DCCSR_RDIL_BIT)
1882 #define DMAC_DCCSR_RDIL_48 (10 << DMAC_DCCSR_RDIL_BIT)
1883 #define DMAC_DCCSR_RDIL_60 (11 << DMAC_DCCSR_RDIL_BIT)
1884 #define DMAC_DCCSR_RDIL_64 (12 << DMAC_DCCSR_RDIL_BIT)
1885 #define DMAC_DCCSR_RDIL_124 (13 << DMAC_DCCSR_RDIL_BIT)
1886 #define DMAC_DCCSR_RDIL_128 (14 << DMAC_DCCSR_RDIL_BIT)
1887 #define DMAC_DCCSR_RDIL_200 (15 << DMAC_DCCSR_RDIL_BIT)
1888 #define DMAC_DCCSR_SWDH_BIT 14
1889 #define DMAC_DCCSR_SWDH_MASK (0x03 << DMAC_DCCSR_SWDH_BIT)
1890 #define DMAC_DCCSR_SWDH_32 (0 << DMAC_DCCSR_SWDH_BIT)
1891 #define DMAC_DCCSR_SWDH_8 (1 << DMAC_DCCSR_SWDH_BIT)
1892 #define DMAC_DCCSR_SWDH_16 (2 << DMAC_DCCSR_SWDH_BIT)
1893 #define DMAC_DCCSR_DWDH_BIT 12
1894 #define DMAC_DCCSR_DWDH_MASK (0x03 << DMAC_DCCSR_DWDH_BIT)
1895 #define DMAC_DCCSR_DWDH_32 (0 << DMAC_DCCSR_DWDH_BIT)
1896 #define DMAC_DCCSR_DWDH_8 (1 << DMAC_DCCSR_DWDH_BIT)
1897 #define DMAC_DCCSR_DWDH_16 (2 << DMAC_DCCSR_DWDH_BIT)
1898 #define DMAC_DCCSR_DS_BIT 8
1899 #define DMAC_DCCSR_DS_MASK (0x07 << DMAC_DCCSR_DS_BIT)
1900 #define DMAC_DCCSR_DS_32b (0 << DMAC_DCCSR_DS_BIT)
1901 #define DMAC_DCCSR_DS_8b (1 << DMAC_DCCSR_DS_BIT)
1902 #define DMAC_DCCSR_DS_16b (2 << DMAC_DCCSR_DS_BIT)
1903 #define DMAC_DCCSR_DS_16B (3 << DMAC_DCCSR_DS_BIT)
1904 #define DMAC_DCCSR_DS_32B (4 << DMAC_DCCSR_DS_BIT)
1905 #define DMAC_DCCSR_TM (1 << 7)
1906 #define DMAC_DCCSR_AR (1 << 4)
1907 #define DMAC_DCCSR_TC (1 << 3)
1908 #define DMAC_DCCSR_HLT (1 << 2)
1909 #define DMAC_DCCSR_TCIE (1 << 1)
1910 #define DMAC_DCCSR_CHDE (1 << 0)
1912 #define DMAC_DMAIPR_CINT_BIT 8
1913 #define DMAC_DMAIPR_CINT_MASK (0xff << DMAC_DMAIPR_CINT_BIT)
1915 #define DMAC_DMACR_PR_BIT 8
1916 #define DMAC_DMACR_PR_MASK (0x03 << DMAC_DMACR_PR_BIT)
1917 #define DMAC_DMACR_PR_01234567 (0 << DMAC_DMACR_PR_BIT)
1918 #define DMAC_DMACR_PR_02314675 (1 << DMAC_DMACR_PR_BIT)
1919 #define DMAC_DMACR_PR_20136457 (2 << DMAC_DMACR_PR_BIT)
1920 #define DMAC_DMACR_PR_ROUNDROBIN (3 << DMAC_DMACR_PR_BIT)
1921 #define DMAC_DMACR_HTR (1 << 3)
1922 #define DMAC_DMACR_AER (1 << 2)
1923 #define DMAC_DMACR_DME (1 << 0)
1925 #define IRQ_DMA_0 32
1926 #define NUM_DMA 6
1929 /*************************************************************************
1930 * AIC
1931 *************************************************************************/
1932 #define AIC_FR (AIC_BASE + 0x000)
1933 #define AIC_CR (AIC_BASE + 0x004)
1934 #define AIC_ACCR1 (AIC_BASE + 0x008)
1935 #define AIC_ACCR2 (AIC_BASE + 0x00C)
1936 #define AIC_I2SCR (AIC_BASE + 0x010)
1937 #define AIC_SR (AIC_BASE + 0x014)
1938 #define AIC_ACSR (AIC_BASE + 0x018)
1939 #define AIC_I2SSR (AIC_BASE + 0x01C)
1940 #define AIC_ACCAR (AIC_BASE + 0x020)
1941 #define AIC_ACCDR (AIC_BASE + 0x024)
1942 #define AIC_ACSAR (AIC_BASE + 0x028)
1943 #define AIC_ACSDR (AIC_BASE + 0x02C)
1944 #define AIC_I2SDIV (AIC_BASE + 0x030)
1945 #define AIC_DR (AIC_BASE + 0x034)
1947 #define REG_AIC_FR REG32(AIC_FR)
1948 #define REG_AIC_CR REG32(AIC_CR)
1949 #define REG_AIC_ACCR1 REG32(AIC_ACCR1)
1950 #define REG_AIC_ACCR2 REG32(AIC_ACCR2)
1951 #define REG_AIC_I2SCR REG32(AIC_I2SCR)
1952 #define REG_AIC_SR REG32(AIC_SR)
1953 #define REG_AIC_ACSR REG32(AIC_ACSR)
1954 #define REG_AIC_I2SSR REG32(AIC_I2SSR)
1955 #define REG_AIC_ACCAR REG32(AIC_ACCAR)
1956 #define REG_AIC_ACCDR REG32(AIC_ACCDR)
1957 #define REG_AIC_ACSAR REG32(AIC_ACSAR)
1958 #define REG_AIC_ACSDR REG32(AIC_ACSDR)
1959 #define REG_AIC_I2SDIV REG32(AIC_I2SDIV)
1960 #define REG_AIC_DR REG32(AIC_DR)
1962 /* AIC Controller Configuration Register (AIC_FR) */
1964 #define AIC_FR_RFTH_BIT 12
1965 #define AIC_FR_RFTH_MASK (0xf << AIC_FR_RFTH_BIT)
1966 #define AIC_FR_TFTH_BIT 8
1967 #define AIC_FR_TFTH_MASK (0xf << AIC_FR_TFTH_BIT)
1968 #define AIC_FR_AUSEL (1 << 4)
1969 #define AIC_FR_RST (1 << 3)
1970 #define AIC_FR_BCKD (1 << 2)
1971 #define AIC_FR_SYNCD (1 << 1)
1972 #define AIC_FR_ENB (1 << 0)
1974 /* AIC Controller Common Control Register (AIC_CR) */
1976 #define AIC_CR_RDMS (1 << 15)
1977 #define AIC_CR_TDMS (1 << 14)
1978 #define AIC_CR_FLUSH (1 << 8)
1979 #define AIC_CR_EROR (1 << 6)
1980 #define AIC_CR_ETUR (1 << 5)
1981 #define AIC_CR_ERFS (1 << 4)
1982 #define AIC_CR_ETFS (1 << 3)
1983 #define AIC_CR_ENLBF (1 << 2)
1984 #define AIC_CR_ERPL (1 << 1)
1985 #define AIC_CR_EREC (1 << 0)
1987 /* AIC Controller AC-link Control Register 1 (AIC_ACCR1) */
1989 #define AIC_ACCR1_RS_BIT 16
1990 #define AIC_ACCR1_RS_MASK (0x3ff << AIC_ACCR1_RS_BIT)
1991 #define AIC_ACCR1_RS_SLOT12 (1 << 25) /* Slot 12 valid bit */
1992 #define AIC_ACCR1_RS_SLOT11 (1 << 24) /* Slot 11 valid bit */
1993 #define AIC_ACCR1_RS_SLOT10 (1 << 23) /* Slot 10 valid bit */
1994 #define AIC_ACCR1_RS_SLOT9 (1 << 22) /* Slot 9 valid bit */
1995 #define AIC_ACCR1_RS_SLOT8 (1 << 21) /* Slot 8 valid bit */
1996 #define AIC_ACCR1_RS_SLOT7 (1 << 20) /* Slot 7 valid bit */
1997 #define AIC_ACCR1_RS_SLOT6 (1 << 19) /* Slot 6 valid bit */
1998 #define AIC_ACCR1_RS_SLOT5 (1 << 18) /* Slot 5 valid bit */
1999 #define AIC_ACCR1_RS_SLOT4 (1 << 17) /* Slot 4 valid bit */
2000 #define AIC_ACCR1_RS_SLOT3 (1 << 16) /* Slot 3 valid bit */
2001 #define AIC_ACCR1_XS_BIT 0
2002 #define AIC_ACCR1_XS_MASK (0x3ff << AIC_ACCR1_XS_BIT)
2003 #define AIC_ACCR1_XS_SLOT12 (1 << 9) /* Slot 12 valid bit */
2004 #define AIC_ACCR1_XS_SLOT11 (1 << 8) /* Slot 11 valid bit */
2005 #define AIC_ACCR1_XS_SLOT10 (1 << 7) /* Slot 10 valid bit */
2006 #define AIC_ACCR1_XS_SLOT9 (1 << 6) /* Slot 9 valid bit */
2007 #define AIC_ACCR1_XS_SLOT8 (1 << 5) /* Slot 8 valid bit */
2008 #define AIC_ACCR1_XS_SLOT7 (1 << 4) /* Slot 7 valid bit */
2009 #define AIC_ACCR1_XS_SLOT6 (1 << 3) /* Slot 6 valid bit */
2010 #define AIC_ACCR1_XS_SLOT5 (1 << 2) /* Slot 5 valid bit */
2011 #define AIC_ACCR1_XS_SLOT4 (1 << 1) /* Slot 4 valid bit */
2012 #define AIC_ACCR1_XS_SLOT3 (1 << 0) /* Slot 3 valid bit */
2014 /* AIC Controller AC-link Control Register 2 (AIC_ACCR2) */
2016 #define AIC_ACCR2_ERSTO (1 << 18)
2017 #define AIC_ACCR2_ESADR (1 << 17)
2018 #define AIC_ACCR2_ECADT (1 << 16)
2019 #define AIC_ACCR2_OASS_BIT 8
2020 #define AIC_ACCR2_OASS_MASK (0x3 << AIC_ACCR2_OASS_BIT)
2021 #define AIC_ACCR2_OASS_20BIT (0 << AIC_ACCR2_OASS_BIT) /* Output Audio Sample Size is 20-bit */
2022 #define AIC_ACCR2_OASS_18BIT (1 << AIC_ACCR2_OASS_BIT) /* Output Audio Sample Size is 18-bit */
2023 #define AIC_ACCR2_OASS_16BIT (2 << AIC_ACCR2_OASS_BIT) /* Output Audio Sample Size is 16-bit */
2024 #define AIC_ACCR2_OASS_8BIT (3 << AIC_ACCR2_OASS_BIT) /* Output Audio Sample Size is 8-bit */
2025 #define AIC_ACCR2_IASS_BIT 6
2026 #define AIC_ACCR2_IASS_MASK (0x3 << AIC_ACCR2_IASS_BIT)
2027 #define AIC_ACCR2_IASS_20BIT (0 << AIC_ACCR2_IASS_BIT) /* Input Audio Sample Size is 20-bit */
2028 #define AIC_ACCR2_IASS_18BIT (1 << AIC_ACCR2_IASS_BIT) /* Input Audio Sample Size is 18-bit */
2029 #define AIC_ACCR2_IASS_16BIT (2 << AIC_ACCR2_IASS_BIT) /* Input Audio Sample Size is 16-bit */
2030 #define AIC_ACCR2_IASS_8BIT (3 << AIC_ACCR2_IASS_BIT) /* Input Audio Sample Size is 8-bit */
2031 #define AIC_ACCR2_SO (1 << 3)
2032 #define AIC_ACCR2_SR (1 << 2)
2033 #define AIC_ACCR2_SS (1 << 1)
2034 #define AIC_ACCR2_SA (1 << 0)
2036 /* AIC Controller I2S/MSB-justified Control Register (AIC_I2SCR) */
2038 #define AIC_I2SCR_STPBK (1 << 12)
2039 #define AIC_I2SCR_WL_BIT 1
2040 #define AIC_I2SCR_WL_MASK (0x7 << AIC_I2SCR_WL_BIT)
2041 #define AIC_I2SCR_WL_24BIT (0 << AIC_I2SCR_WL_BIT) /* Word Length is 24 bit */
2042 #define AIC_I2SCR_WL_20BIT (1 << AIC_I2SCR_WL_BIT) /* Word Length is 20 bit */
2043 #define AIC_I2SCR_WL_18BIT (2 << AIC_I2SCR_WL_BIT) /* Word Length is 18 bit */
2044 #define AIC_I2SCR_WL_16BIT (3 << AIC_I2SCR_WL_BIT) /* Word Length is 16 bit */
2045 #define AIC_I2SCR_WL_8BIT (4 << AIC_I2SCR_WL_BIT) /* Word Length is 8 bit */
2046 #define AIC_I2SCR_AMSL (1 << 0)
2048 /* AIC Controller FIFO Status Register (AIC_SR) */
2050 #define AIC_SR_RFL_BIT 24
2051 #define AIC_SR_RFL_MASK (0x1f << AIC_SR_RFL_BIT)
2052 #define AIC_SR_TFL_BIT 8
2053 #define AIC_SR_TFL_MASK (0x1f << AIC_SR_TFL_BIT)
2054 #define AIC_SR_ROR (1 << 6)
2055 #define AIC_SR_TUR (1 << 5)
2056 #define AIC_SR_RFS (1 << 4)
2057 #define AIC_SR_TFS (1 << 3)
2059 /* AIC Controller AC-link Status Register (AIC_ACSR) */
2061 #define AIC_ACSR_CRDY (1 << 20)
2062 #define AIC_ACSR_CLPM (1 << 19)
2063 #define AIC_ACSR_RSTO (1 << 18)
2064 #define AIC_ACSR_SADR (1 << 17)
2065 #define AIC_ACSR_CADT (1 << 16)
2067 /* AIC Controller I2S/MSB-justified Status Register (AIC_I2SSR) */
2069 #define AIC_I2SSR_BSY (1 << 2)
2071 /* AIC Controller AC97 codec Command Address Register (AIC_ACCAR) */
2073 #define AIC_ACCAR_CAR_BIT 0
2074 #define AIC_ACCAR_CAR_MASK (0xfffff << AIC_ACCAR_CAR_BIT)
2076 /* AIC Controller AC97 codec Command Data Register (AIC_ACCDR) */
2078 #define AIC_ACCDR_CDR_BIT 0
2079 #define AIC_ACCDR_CDR_MASK (0xfffff << AIC_ACCDR_CDR_BIT)
2081 /* AIC Controller AC97 codec Status Address Register (AIC_ACSAR) */
2083 #define AIC_ACSAR_SAR_BIT 0
2084 #define AIC_ACSAR_SAR_MASK (0xfffff << AIC_ACSAR_SAR_BIT)
2086 /* AIC Controller AC97 codec Status Data Register (AIC_ACSDR) */
2088 #define AIC_ACSDR_SDR_BIT 0
2089 #define AIC_ACSDR_SDR_MASK (0xfffff << AIC_ACSDR_SDR_BIT)
2091 /* AIC Controller I2S/MSB-justified Clock Divider Register (AIC_I2SDIV) */
2093 #define AIC_I2SDIV_DIV_BIT 0
2094 #define AIC_I2SDIV_DIV_MASK (0x7f << AIC_I2SDIV_DIV_BIT)
2095 #define AIC_I2SDIV_BITCLK_3072KHZ (0x0C << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 3.072MHz */
2096 #define AIC_I2SDIV_BITCLK_2836KHZ (0x0D << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 2.836MHz */
2097 #define AIC_I2SDIV_BITCLK_1418KHZ (0x1A << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 1.418MHz */
2098 #define AIC_I2SDIV_BITCLK_1024KHZ (0x24 << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 1.024MHz */
2099 #define AIC_I2SDIV_BITCLK_7089KHZ (0x34 << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 708.92KHz */
2100 #define AIC_I2SDIV_BITCLK_512KHZ (0x48 << AIC_I2SDIV_DIV_BIT) /* BIT_CLK of 512.00KHz */
2105 /*************************************************************************
2106 * LCD
2107 *************************************************************************/
2108 #define LCD_CFG (LCD_BASE + 0x00)
2109 #define LCD_VSYNC (LCD_BASE + 0x04)
2110 #define LCD_HSYNC (LCD_BASE + 0x08)
2111 #define LCD_VAT (LCD_BASE + 0x0c)
2112 #define LCD_DAH (LCD_BASE + 0x10)
2113 #define LCD_DAV (LCD_BASE + 0x14)
2114 #define LCD_PS (LCD_BASE + 0x18)
2115 #define LCD_CLS (LCD_BASE + 0x1c)
2116 #define LCD_SPL (LCD_BASE + 0x20)
2117 #define LCD_REV (LCD_BASE + 0x24)
2118 #define LCD_CTRL (LCD_BASE + 0x30)
2119 #define LCD_STATE (LCD_BASE + 0x34)
2120 #define LCD_IID (LCD_BASE + 0x38)
2121 #define LCD_DA0 (LCD_BASE + 0x40)
2122 #define LCD_SA0 (LCD_BASE + 0x44)
2123 #define LCD_FID0 (LCD_BASE + 0x48)
2124 #define LCD_CMD0 (LCD_BASE + 0x4c)
2125 #define LCD_DA1 (LCD_BASE + 0x50)
2126 #define LCD_SA1 (LCD_BASE + 0x54)
2127 #define LCD_FID1 (LCD_BASE + 0x58)
2128 #define LCD_CMD1 (LCD_BASE + 0x5c)
2130 #define REG_LCD_CFG REG32(LCD_CFG)
2131 #define REG_LCD_VSYNC REG32(LCD_VSYNC)
2132 #define REG_LCD_HSYNC REG32(LCD_HSYNC)
2133 #define REG_LCD_VAT REG32(LCD_VAT)
2134 #define REG_LCD_DAH REG32(LCD_DAH)
2135 #define REG_LCD_DAV REG32(LCD_DAV)
2136 #define REG_LCD_PS REG32(LCD_PS)
2137 #define REG_LCD_CLS REG32(LCD_CLS)
2138 #define REG_LCD_SPL REG32(LCD_SPL)
2139 #define REG_LCD_REV REG32(LCD_REV)
2140 #define REG_LCD_CTRL REG32(LCD_CTRL)
2141 #define REG_LCD_STATE REG32(LCD_STATE)
2142 #define REG_LCD_IID REG32(LCD_IID)
2143 #define REG_LCD_DA0 REG32(LCD_DA0)
2144 #define REG_LCD_SA0 REG32(LCD_SA0)
2145 #define REG_LCD_FID0 REG32(LCD_FID0)
2146 #define REG_LCD_CMD0 REG32(LCD_CMD0)
2147 #define REG_LCD_DA1 REG32(LCD_DA1)
2148 #define REG_LCD_SA1 REG32(LCD_SA1)
2149 #define REG_LCD_FID1 REG32(LCD_FID1)
2150 #define REG_LCD_CMD1 REG32(LCD_CMD1)
2152 #define LCD_CFG_PDW_BIT 4
2153 #define LCD_CFG_PDW_MASK (0x03 << LCD_DEV_PDW_BIT)
2154 #define LCD_CFG_PDW_1 (0 << LCD_DEV_PDW_BIT)
2155 #define LCD_CFG_PDW_2 (1 << LCD_DEV_PDW_BIT)
2156 #define LCD_CFG_PDW_4 (2 << LCD_DEV_PDW_BIT)
2157 #define LCD_CFG_PDW_8 (3 << LCD_DEV_PDW_BIT)
2158 #define LCD_CFG_MODE_BIT 0
2159 #define LCD_CFG_MODE_MASK (0x0f << LCD_DEV_MODE_BIT)
2160 #define LCD_CFG_MODE_GENERIC_TFT (0 << LCD_DEV_MODE_BIT)
2161 #define LCD_CFG_MODE_SHARP_HR (1 << LCD_DEV_MODE_BIT)
2162 #define LCD_CFG_MODE_CASIO_TFT (2 << LCD_DEV_MODE_BIT)
2163 #define LCD_CFG_MODE_SAMSUNG_ALPHA (3 << LCD_DEV_MODE_BIT)
2164 #define LCD_CFG_MODE_NONINTER_CCIR656 (4 << LCD_DEV_MODE_BIT)
2165 #define LCD_CFG_MODE_INTER_CCIR656 (5 << LCD_DEV_MODE_BIT)
2166 #define LCD_CFG_MODE_SINGLE_CSTN (8 << LCD_DEV_MODE_BIT)
2167 #define LCD_CFG_MODE_SINGLE_MSTN (9 << LCD_DEV_MODE_BIT)
2168 #define LCD_CFG_MODE_DUAL_CSTN (10 << LCD_DEV_MODE_BIT)
2169 #define LCD_CFG_MODE_DUAL_MSTN (11 << LCD_DEV_MODE_BIT)
2171 #define LCD_VSYNC_VPS_BIT 16
2172 #define LCD_VSYNC_VPS_MASK (0xffff << LCD_VSYNC_VPS_BIT)
2173 #define LCD_VSYNC_VPE_BIT 0
2174 #define LCD_VSYNC_VPE_MASK (0xffff << LCD_VSYNC_VPS_BIT)
2176 #define LCD_HSYNC_HPS_BIT 16
2177 #define LCD_HSYNC_HPS_MASK (0xffff << LCD_HSYNC_HPS_BIT)
2178 #define LCD_HSYNC_HPE_BIT 0
2179 #define LCD_HSYNC_HPE_MASK (0xffff << LCD_HSYNC_HPE_BIT)
2181 #define LCD_VAT_HT_BIT 16
2182 #define LCD_VAT_HT_MASK (0xffff << LCD_VAT_HT_BIT)
2183 #define LCD_VAT_VT_BIT 0
2184 #define LCD_VAT_VT_MASK (0xffff << LCD_VAT_VT_BIT)
2186 #define LCD_DAH_HDS_BIT 16
2187 #define LCD_DAH_HDS_MASK (0xffff << LCD_DAH_HDS_BIT)
2188 #define LCD_DAH_HDE_BIT 0
2189 #define LCD_DAH_HDE_MASK (0xffff << LCD_DAH_HDE_BIT)
2191 #define LCD_DAV_VDS_BIT 16
2192 #define LCD_DAV_VDS_MASK (0xffff << LCD_DAV_VDS_BIT)
2193 #define LCD_DAV_VDE_BIT 0
2194 #define LCD_DAV_VDE_MASK (0xffff << LCD_DAV_VDE_BIT)
2196 #define LCD_CTRL_BST_BIT 28
2197 #define LCD_CTRL_BST_MASK (0x03 << LCD_CTRL_BST_BIT)
2198 #define LCD_CTRL_BST_4 (0 << LCD_CTRL_BST_BIT)
2199 #define LCD_CTRL_BST_8 (1 << LCD_CTRL_BST_BIT)
2200 #define LCD_CTRL_BST_16 (2 << LCD_CTRL_BST_BIT)
2201 #define LCD_CTRL_RGB555 (1 << 27)
2202 #define LCD_CTRL_OFUP (1 << 26)
2203 #define LCD_CTRL_FRC_BIT 24
2204 #define LCD_CTRL_FRC_MASK (0x03 << LCD_CTRL_FRC_BIT)
2205 #define LCD_CTRL_FRC_16 (0 << LCD_CTRL_FRC_BIT)
2206 #define LCD_CTRL_FRC_4 (1 << LCD_CTRL_FRC_BIT)
2207 #define LCD_CTRL_FRC_2 (2 << LCD_CTRL_FRC_BIT)
2208 #define LCD_CTRL_PDD_BIT 16
2209 #define LCD_CTRL_PDD_MASK (0xff << LCD_CTRL_PDD_BIT)
2210 #define LCD_CTRL_EOFM (1 << 13)
2211 #define LCD_CTRL_SOFM (1 << 12)
2212 #define LCD_CTRL_OFUM (1 << 11)
2213 #define LCD_CTRL_IFUM0 (1 << 10)
2214 #define LCD_CTRL_IFUM1 (1 << 9)
2215 #define LCD_CTRL_LDDM (1 << 8)
2216 #define LCD_CTRL_QDM (1 << 7)
2217 #define LCD_CTRL_BEDN (1 << 6)
2218 #define LCD_CTRL_PEDN (1 << 5)
2219 #define LCD_CTRL_DIS (1 << 4)
2220 #define LCD_CTRL_ENA (1 << 3)
2221 #define LCD_CTRL_BPP_BIT 0
2222 #define LCD_CTRL_BPP_MASK (0x07 << LCD_CTRL_BPP_BIT)
2223 #define LCD_CTRL_BPP_1 (0 << LCD_CTRL_BPP_BIT)
2224 #define LCD_CTRL_BPP_2 (1 << LCD_CTRL_BPP_BIT)
2225 #define LCD_CTRL_BPP_4 (2 << LCD_CTRL_BPP_BIT)
2226 #define LCD_CTRL_BPP_8 (3 << LCD_CTRL_BPP_BIT)
2227 #define LCD_CTRL_BPP_16 (4 << LCD_CTRL_BPP_BIT)
2229 #define LCD_STATE_QD (1 << 7)
2230 #define LCD_STATE_EOF (1 << 5)
2231 #define LCD_STATE_SOF (1 << 4)
2232 #define LCD_STATE_OFU (1 << 3)
2233 #define LCD_STATE_IFU0 (1 << 2)
2234 #define LCD_STATE_IFU1 (1 << 1)
2235 #define LCD_STATE_LDD (1 << 0)
2237 #define LCD_CMD_SOFINT (1 << 31)
2238 #define LCD_CMD_EOFINT (1 << 30)
2239 #define LCD_CMD_PAL (1 << 28)
2240 #define LCD_CMD_LEN_BIT 0
2241 #define LCD_CMD_LEN_MASK (0xffffff << LCD_CMD_LEN_BIT)
2246 /*************************************************************************
2247 * DES
2248 *************************************************************************/
2249 #define DES_CR1 (DES_BASE + 0x000)
2250 #define DES_CR2 (DES_BASE + 0x004)
2251 #define DES_SR (DES_BASE + 0x008)
2252 #define DES_K1L (DES_BASE + 0x010)
2253 #define DES_K1R (DES_BASE + 0x014)
2254 #define DES_K2L (DES_BASE + 0x018)
2255 #define DES_K2R (DES_BASE + 0x01C)
2256 #define DES_K3L (DES_BASE + 0x020)
2257 #define DES_K3R (DES_BASE + 0x024)
2258 #define DES_IVL (DES_BASE + 0x028)
2259 #define DES_IVR (DES_BASE + 0x02C)
2260 #define DES_DIN (DES_BASE + 0x030)
2261 #define DES_DOUT (DES_BASE + 0x034)
2263 #define REG_DES_CR1 REG32(DES_CR1)
2264 #define REG_DES_CR2 REG32(DES_CR2)
2265 #define REG_DES_SR REG32(DES_SR)
2266 #define REG_DES_K1L REG32(DES_K1L)
2267 #define REG_DES_K1R REG32(DES_K1R)
2268 #define REG_DES_K2L REG32(DES_K2L)
2269 #define REG_DES_K2R REG32(DES_K2R)
2270 #define REG_DES_K3L REG32(DES_K3L)
2271 #define REG_DES_K3R REG32(DES_K3R)
2272 #define REG_DES_IVL REG32(DES_IVL)
2273 #define REG_DES_IVR REG32(DES_IVR)
2274 #define REG_DES_DIN REG32(DES_DIN)
2275 #define REG_DES_DOUT REG32(DES_DOUT)
2277 /* DES Control Register 1 (DES_CR1) */
2279 #define DES_CR1_EN (1 << 0)
2281 /* DES Control Register 2 (DES_CR2) */
2283 #define DES_CR2_ENDEC (1 << 3)
2284 #define DES_CR2_MODE (1 << 2)
2285 #define DES_CR2_ALG (1 << 1)
2286 #define DES_CR2_DMAE (1 << 0)
2288 /* DES State Register (DES_SR) */
2290 #define DES_SR_IN_FULL (1 << 5)
2291 #define DES_SR_IN_LHF (1 << 4)
2292 #define DES_SR_IN_EMPTY (1 << 3)
2293 #define DES_SR_OUT_FULL (1 << 2)
2294 #define DES_SR_OUT_GHF (1 << 1)
2295 #define DES_SR_OUT_EMPTY (1 << 0)
2300 /*************************************************************************
2301 * CPM
2302 *************************************************************************/
2303 #define CPM_CFCR (CPM_BASE+0x00)
2304 #define CPM_PLCR1 (CPM_BASE+0x10)
2305 #define CPM_OCR (CPM_BASE+0x1c)
2306 #define CPM_CFCR2 (CPM_BASE+0x60)
2307 #define CPM_LPCR (CPM_BASE+0x04)
2308 #define CPM_RSTR (CPM_BASE+0x08)
2309 #define CPM_MSCR (CPM_BASE+0x20)
2310 #define CPM_SCR (CPM_BASE+0x24)
2311 #define CPM_WRER (CPM_BASE+0x28)
2312 #define CPM_WFER (CPM_BASE+0x2c)
2313 #define CPM_WER (CPM_BASE+0x30)
2314 #define CPM_WSR (CPM_BASE+0x34)
2315 #define CPM_GSR0 (CPM_BASE+0x38)
2316 #define CPM_GSR1 (CPM_BASE+0x3c)
2317 #define CPM_GSR2 (CPM_BASE+0x40)
2318 #define CPM_SPR (CPM_BASE+0x44)
2319 #define CPM_GSR3 (CPM_BASE+0x48)
2321 #define REG_CPM_CFCR REG32(CPM_CFCR)
2322 #define REG_CPM_PLCR1 REG32(CPM_PLCR1)
2323 #define REG_CPM_OCR REG32(CPM_OCR)
2324 #define REG_CPM_CFCR2 REG32(CPM_CFCR2)
2325 #define REG_CPM_LPCR REG32(CPM_LPCR)
2326 #define REG_CPM_RSTR REG32(CPM_RSTR)
2327 #define REG_CPM_MSCR REG32(CPM_MSCR)
2328 #define REG_CPM_SCR REG32(CPM_SCR)
2329 #define REG_CPM_WRER REG32(CPM_WRER)
2330 #define REG_CPM_WFER REG32(CPM_WFER)
2331 #define REG_CPM_WER REG32(CPM_WER)
2332 #define REG_CPM_WSR REG32(CPM_WSR)
2333 #define REG_CPM_GSR0 REG32(CPM_GSR0)
2334 #define REG_CPM_GSR1 REG32(CPM_GSR1)
2335 #define REG_CPM_GSR2 REG32(CPM_GSR2)
2336 #define REG_CPM_SPR REG32(CPM_SPR)
2337 #define REG_CPM_GSR3 REG32(CPM_GSR3)
2339 #define CPM_CFCR_SSI (1 << 31)
2340 #define CPM_CFCR_LCD (1 << 30)
2341 #define CPM_CFCR_I2S (1 << 29)
2342 #define CPM_CFCR_UCS (1 << 28)
2343 #define CPM_CFCR_UFR_BIT 25
2344 #define CPM_CFCR_UFR_MASK (0x07 << CPM_CFCR_UFR_BIT)
2345 #define CPM_CFCR_MSC (1 << 24)
2346 #define CPM_CFCR_CKOEN2 (1 << 23)
2347 #define CPM_CFCR_CKOEN1 (1 << 22)
2348 #define CPM_CFCR_UPE (1 << 20)
2349 #define CPM_CFCR_MFR_BIT 16
2350 #define CPM_CFCR_MFR_MASK (0x0f << CPM_CFCR_MFR_BIT)
2351 #define CFCR_MDIV_1 (0 << CPM_CFCR_MFR_BIT)
2352 #define CFCR_MDIV_2 (1 << CPM_CFCR_MFR_BIT)
2353 #define CFCR_MDIV_3 (2 << CPM_CFCR_MFR_BIT)
2354 #define CFCR_MDIV_4 (3 << CPM_CFCR_MFR_BIT)
2355 #define CFCR_MDIV_6 (4 << CPM_CFCR_MFR_BIT)
2356 #define CFCR_MDIV_8 (5 << CPM_CFCR_MFR_BIT)
2357 #define CFCR_MDIV_12 (6 << CPM_CFCR_MFR_BIT)
2358 #define CFCR_MDIV_16 (7 << CPM_CFCR_MFR_BIT)
2359 #define CFCR_MDIV_24 (8 << CPM_CFCR_MFR_BIT)
2360 #define CFCR_MDIV_32 (9 << CPM_CFCR_MFR_BIT)
2361 #define CPM_CFCR_LFR_BIT 12
2362 #define CPM_CFCR_LFR_MASK (0x0f << CPM_CFCR_LFR_BIT)
2363 #define CPM_CFCR_PFR_BIT 8
2364 #define CPM_CFCR_PFR_MASK (0x0f << CPM_CFCR_PFR_BIT)
2365 #define CFCR_PDIV_1 (0 << CPM_CFCR_PFR_BIT)
2366 #define CFCR_PDIV_2 (1 << CPM_CFCR_PFR_BIT)
2367 #define CFCR_PDIV_3 (2 << CPM_CFCR_PFR_BIT)
2368 #define CFCR_PDIV_4 (3 << CPM_CFCR_PFR_BIT)
2369 #define CFCR_PDIV_6 (4 << CPM_CFCR_PFR_BIT)
2370 #define CFCR_PDIV_8 (5 << CPM_CFCR_PFR_BIT)
2371 #define CFCR_PDIV_12 (6 << CPM_CFCR_PFR_BIT)
2372 #define CFCR_PDIV_16 (7 << CPM_CFCR_PFR_BIT)
2373 #define CFCR_PDIV_24 (8 << CPM_CFCR_PFR_BIT)
2374 #define CFCR_PDIV_32 (9 << CPM_CFCR_PFR_BIT)
2375 #define CPM_CFCR_SFR_BIT 4
2376 #define CPM_CFCR_SFR_MASK (0x0f << CPM_CFCR_SFR_BIT)
2377 #define CFCR_SDIV_1 (0 << CPM_CFCR_SFR_BIT)
2378 #define CFCR_SDIV_2 (1 << CPM_CFCR_SFR_BIT)
2379 #define CFCR_SDIV_3 (2 << CPM_CFCR_SFR_BIT)
2380 #define CFCR_SDIV_4 (3 << CPM_CFCR_SFR_BIT)
2381 #define CFCR_SDIV_6 (4 << CPM_CFCR_SFR_BIT)
2382 #define CFCR_SDIV_8 (5 << CPM_CFCR_SFR_BIT)
2383 #define CFCR_SDIV_12 (6 << CPM_CFCR_SFR_BIT)
2384 #define CFCR_SDIV_16 (7 << CPM_CFCR_SFR_BIT)
2385 #define CFCR_SDIV_24 (8 << CPM_CFCR_SFR_BIT)
2386 #define CFCR_SDIV_32 (9 << CPM_CFCR_SFR_BIT)
2387 #define CPM_CFCR_IFR_BIT 0
2388 #define CPM_CFCR_IFR_MASK (0x0f << CPM_CFCR_IFR_BIT)
2389 #define CFCR_IDIV_1 (0 << CPM_CFCR_IFR_BIT)
2390 #define CFCR_IDIV_2 (1 << CPM_CFCR_IFR_BIT)
2391 #define CFCR_IDIV_3 (2 << CPM_CFCR_IFR_BIT)
2392 #define CFCR_IDIV_4 (3 << CPM_CFCR_IFR_BIT)
2393 #define CFCR_IDIV_6 (4 << CPM_CFCR_IFR_BIT)
2394 #define CFCR_IDIV_8 (5 << CPM_CFCR_IFR_BIT)
2395 #define CFCR_IDIV_12 (6 << CPM_CFCR_IFR_BIT)
2396 #define CFCR_IDIV_16 (7 << CPM_CFCR_IFR_BIT)
2397 #define CFCR_IDIV_24 (8 << CPM_CFCR_IFR_BIT)
2398 #define CFCR_IDIV_32 (9 << CPM_CFCR_IFR_BIT)
2400 #define CPM_PLCR1_PLL1FD_BIT 23
2401 #define CPM_PLCR1_PLL1FD_MASK (0x1ff << CPM_PLCR1_PLL1FD_BIT)
2402 #define CPM_PLCR1_PLL1RD_BIT 18
2403 #define CPM_PLCR1_PLL1RD_MASK (0x1f << CPM_PLCR1_PLL1RD_BIT)
2404 #define CPM_PLCR1_PLL1OD_BIT 16
2405 #define CPM_PLCR1_PLL1OD_MASK (0x03 << CPM_PLCR1_PLL1OD_BIT)
2406 #define CPM_PLCR1_PLL1S (1 << 10)
2407 #define CPM_PLCR1_PLL1BP (1 << 9)
2408 #define CPM_PLCR1_PLL1EN (1 << 8)
2409 #define CPM_PLCR1_PLL1ST_BIT 0
2410 #define CPM_PLCR1_PLL1ST_MASK (0xff << CPM_PLCR1_PLL1ST_BIT)
2412 #define CPM_OCR_O1ST_BIT 16
2413 #define CPM_OCR_O1ST_MASK (0xff << CPM_OCR_O1ST_BIT)
2414 #define CPM_OCR_EXT_RTC_CLK (1<<8)
2415 #define CPM_OCR_SUSPEND_PHY1 (1<<7)
2416 #define CPM_OCR_SUSPEND_PHY0 (1<<6)
2418 #define CPM_CFCR2_PXFR_BIT 0
2419 #define CPM_CFCR2_PXFR_MASK (0x1ff << CPM_CFCR2_PXFR_BIT)
2421 #define CPM_LPCR_DUTY_BIT 3
2422 #define CPM_LPCR_DUTY_MASK (0x1f << CPM_LPCR_DUTY_BIT)
2423 #define CPM_LPCR_DOZE (1 << 2)
2424 #define CPM_LPCR_LPM_BIT 0
2425 #define CPM_LPCR_LPM_MASK (0x03 << CPM_LPCR_LPM_BIT)
2426 #define CPM_LPCR_LPM_IDLE (0 << CPM_LPCR_LPM_BIT)
2427 #define CPM_LPCR_LPM_SLEEP (1 << CPM_LPCR_LPM_BIT)
2428 #define CPM_LPCR_LPM_HIBERNATE (2 << CPM_LPCR_LPM_BIT)
2430 #define CPM_RSTR_SR (1 << 2)
2431 #define CPM_RSTR_WR (1 << 1)
2432 #define CPM_RSTR_HR (1 << 0)
2434 #define CPM_MSCR_MSTP_BIT 0
2435 #define CPM_MSCR_MSTP_MASK (0x1ffffff << CPM_MSCR_MSTP_BIT)
2436 #define CPM_MSCR_MSTP_UART0 0
2437 #define CPM_MSCR_MSTP_UART1 1
2438 #define CPM_MSCR_MSTP_UART2 2
2439 #define CPM_MSCR_MSTP_OST 3
2440 #define CPM_MSCR_MSTP_DMAC 5
2441 #define CPM_MSCR_MSTP_UHC 6
2442 #define CPM_MSCR_MSTP_LCD 7
2443 #define CPM_MSCR_MSTP_I2C 8
2444 #define CPM_MSCR_MSTP_AICPCLK 9
2445 #define CPM_MSCR_MSTP_PWM0 10
2446 #define CPM_MSCR_MSTP_PWM1 11
2447 #define CPM_MSCR_MSTP_SSI 12
2448 #define CPM_MSCR_MSTP_MSC 13
2449 #define CPM_MSCR_MSTP_SCC 14
2450 #define CPM_MSCR_MSTP_AICBCLK 18
2451 #define CPM_MSCR_MSTP_UART3 20
2452 #define CPM_MSCR_MSTP_ETH 21
2453 #define CPM_MSCR_MSTP_KBC 22
2454 #define CPM_MSCR_MSTP_CIM 23
2455 #define CPM_MSCR_MSTP_UDC 24
2456 #define CPM_MSCR_MSTP_UPRT 25
2458 #define CPM_SCR_O1SE (1 << 4)
2459 #define CPM_SCR_HGP (1 << 3)
2460 #define CPM_SCR_HZP (1 << 2)
2461 #define CPM_SCR_HZM (1 << 1)
2463 #define CPM_WRER_RE_BIT 0
2464 #define CPM_WRER_RE_MASK (0xffff << CPM_WRER_RE_BIT)
2466 #define CPM_WFER_FE_BIT 0
2467 #define CPM_WFER_FE_MASK (0xffff << CPM_WFER_FE_BIT)
2469 #define CPM_WER_WERTC (1 << 31)
2470 #define CPM_WER_WEETH (1 << 30)
2471 #define CPM_WER_WE_BIT 0
2472 #define CPM_WER_WE_MASK (0xffff << CPM_WER_WE_BIT)
2474 #define CPM_WSR_WSRTC (1 << 31)
2475 #define CPM_WSR_WSETH (1 << 30)
2476 #define CPM_WSR_WS_BIT 0
2477 #define CPM_WSR_WS_MASK (0xffff << CPM_WSR_WS_BIT)
2482 /*************************************************************************
2483 * SSI
2484 *************************************************************************/
2485 #define SSI_DR (SSI_BASE + 0x000)
2486 #define SSI_CR0 (SSI_BASE + 0x004)
2487 #define SSI_CR1 (SSI_BASE + 0x008)
2488 #define SSI_SR (SSI_BASE + 0x00C)
2489 #define SSI_ITR (SSI_BASE + 0x010)
2490 #define SSI_ICR (SSI_BASE + 0x014)
2491 #define SSI_GR (SSI_BASE + 0x018)
2493 #define REG_SSI_DR REG32(SSI_DR)
2494 #define REG_SSI_CR0 REG16(SSI_CR0)
2495 #define REG_SSI_CR1 REG32(SSI_CR1)
2496 #define REG_SSI_SR REG32(SSI_SR)
2497 #define REG_SSI_ITR REG16(SSI_ITR)
2498 #define REG_SSI_ICR REG8(SSI_ICR)
2499 #define REG_SSI_GR REG16(SSI_GR)
2501 /* SSI Data Register (SSI_DR) */
2503 #define SSI_DR_GPC_BIT 0
2504 #define SSI_DR_GPC_MASK (0x1ff << SSI_DR_GPC_BIT)
2506 /* SSI Control Register 0 (SSI_CR0) */
2508 #define SSI_CR0_SSIE (1 << 15)
2509 #define SSI_CR0_TIE (1 << 14)
2510 #define SSI_CR0_RIE (1 << 13)
2511 #define SSI_CR0_TEIE (1 << 12)
2512 #define SSI_CR0_REIE (1 << 11)
2513 #define SSI_CR0_LOOP (1 << 10)
2514 #define SSI_CR0_RFINE (1 << 9)
2515 #define SSI_CR0_RFINC (1 << 8)
2516 #define SSI_CR0_FSEL (1 << 6)
2517 #define SSI_CR0_TFLUSH (1 << 2)
2518 #define SSI_CR0_RFLUSH (1 << 1)
2519 #define SSI_CR0_DISREV (1 << 0)
2521 /* SSI Control Register 1 (SSI_CR1) */
2523 #define SSI_CR1_FRMHL_BIT 30
2524 #define SSI_CR1_FRMHL_MASK (0x3 << SSI_CR1_FRMHL_BIT)
2525 #define SSI_CR1_FRMHL_CELOW_CE2LOW (0 << SSI_CR1_FRMHL_BIT) /* SSI_CE_ is low valid and SSI_CE2_ is low valid */
2526 #define SSI_CR1_FRMHL_CEHIGH_CE2LOW (1 << SSI_CR1_FRMHL_BIT) /* SSI_CE_ is high valid and SSI_CE2_ is low valid */
2527 #define SSI_CR1_FRMHL_CELOW_CE2HIGH (2 << SSI_CR1_FRMHL_BIT) /* SSI_CE_ is low valid and SSI_CE2_ is high valid */
2528 #define SSI_CR1_FRMHL_CEHIGH_CE2HIGH (3 << SSI_CR1_FRMHL_BIT) /* SSI_CE_ is high valid and SSI_CE2_ is high valid */
2529 #define SSI_CR1_TFVCK_BIT 28
2530 #define SSI_CR1_TFVCK_MASK (0x3 << SSI_CR1_TFVCK_BIT)
2531 #define SSI_CR1_TFVCK_0 (0 << SSI_CR1_TFVCK_BIT)
2532 #define SSI_CR1_TFVCK_1 (1 << SSI_CR1_TFVCK_BIT)
2533 #define SSI_CR1_TFVCK_2 (2 << SSI_CR1_TFVCK_BIT)
2534 #define SSI_CR1_TFVCK_3 (3 << SSI_CR1_TFVCK_BIT)
2535 #define SSI_CR1_TCKFI_BIT 26
2536 #define SSI_CR1_TCKFI_MASK (0x3 << SSI_CR1_TCKFI_BIT)
2537 #define SSI_CR1_TCKFI_0 (0 << SSI_CR1_TCKFI_BIT)
2538 #define SSI_CR1_TCKFI_1 (1 << SSI_CR1_TCKFI_BIT)
2539 #define SSI_CR1_TCKFI_2 (2 << SSI_CR1_TCKFI_BIT)
2540 #define SSI_CR1_TCKFI_3 (3 << SSI_CR1_TCKFI_BIT)
2541 #define SSI_CR1_LFST (1 << 25)
2542 #define SSI_CR1_ITFRM (1 << 24)
2543 #define SSI_CR1_UNFIN (1 << 23)
2544 #define SSI_CR1_MULTS (1 << 22)
2545 #define SSI_CR1_FMAT_BIT 20
2546 #define SSI_CR1_FMAT_MASK (0x3 << SSI_CR1_FMAT_BIT)
2547 #define SSI_CR1_FMAT_SPI (0 << SSI_CR1_FMAT_BIT) /* Motorola¡¯s SPI format */
2548 #define SSI_CR1_FMAT_SSP (1 << SSI_CR1_FMAT_BIT) /* TI's SSP format */
2549 #define SSI_CR1_FMAT_MW1 (2 << SSI_CR1_FMAT_BIT) /* National Microwire 1 format */
2550 #define SSI_CR1_FMAT_MW2 (3 << SSI_CR1_FMAT_BIT) /* National Microwire 2 format */
2551 #define SSI_CR1_MCOM_BIT 12
2552 #define SSI_CR1_MCOM_MASK (0xf << SSI_CR1_MCOM_BIT)
2553 #define SSI_CR1_MCOM_1BIT (0x0 << SSI_CR1_MCOM_BIT) /* 1-bit command selected */
2554 #define SSI_CR1_MCOM_2BIT (0x1 << SSI_CR1_MCOM_BIT) /* 2-bit command selected */
2555 #define SSI_CR1_MCOM_3BIT (0x2 << SSI_CR1_MCOM_BIT) /* 3-bit command selected */
2556 #define SSI_CR1_MCOM_4BIT (0x3 << SSI_CR1_MCOM_BIT) /* 4-bit command selected */
2557 #define SSI_CR1_MCOM_5BIT (0x4 << SSI_CR1_MCOM_BIT) /* 5-bit command selected */
2558 #define SSI_CR1_MCOM_6BIT (0x5 << SSI_CR1_MCOM_BIT) /* 6-bit command selected */
2559 #define SSI_CR1_MCOM_7BIT (0x6 << SSI_CR1_MCOM_BIT) /* 7-bit command selected */
2560 #define SSI_CR1_MCOM_8BIT (0x7 << SSI_CR1_MCOM_BIT) /* 8-bit command selected */
2561 #define SSI_CR1_MCOM_9BIT (0x8 << SSI_CR1_MCOM_BIT) /* 9-bit command selected */
2562 #define SSI_CR1_MCOM_10BIT (0x9 << SSI_CR1_MCOM_BIT) /* 10-bit command selected */
2563 #define SSI_CR1_MCOM_11BIT (0xA << SSI_CR1_MCOM_BIT) /* 11-bit command selected */
2564 #define SSI_CR1_MCOM_12BIT (0xB << SSI_CR1_MCOM_BIT) /* 12-bit command selected */
2565 #define SSI_CR1_MCOM_13BIT (0xC << SSI_CR1_MCOM_BIT) /* 13-bit command selected */
2566 #define SSI_CR1_MCOM_14BIT (0xD << SSI_CR1_MCOM_BIT) /* 14-bit command selected */
2567 #define SSI_CR1_MCOM_15BIT (0xE << SSI_CR1_MCOM_BIT) /* 15-bit command selected */
2568 #define SSI_CR1_MCOM_16BIT (0xF << SSI_CR1_MCOM_BIT) /* 16-bit command selected */
2569 #define SSI_CR1_TTRG_BIT 10
2570 #define SSI_CR1_TTRG_MASK (0x3 << SSI_CR1_TTRG_BIT)
2571 #define SSI_CR1_TTRG_1 (0 << SSI_CR1_TTRG_BIT)/* Less than or equal to 1 */
2572 #define SSI_CR1_TTRG_4 (1 << SSI_CR1_TTRG_BIT) /* Less than or equal to 4 */
2573 #define SSI_CR1_TTRG_8 (2 << SSI_CR1_TTRG_BIT) /* Less than or equal to 8 */
2574 #define SSI_CR1_TTRG_14 (3 << SSI_CR1_TTRG_BIT) /* Less than or equal to 14 */
2575 #define SSI_CR1_RTRG_BIT 8
2576 #define SSI_CR1_RTRG_MASK (0x3 << SSI_CR1_RTRG_BIT)
2577 #define SSI_CR1_RTRG_1 (0 << SSI_CR1_RTRG_BIT) /* More than or equal to 1 */
2578 #define SSI_CR1_RTRG_4 (1 << SSI_CR1_RTRG_BIT) /* More than or equal to 4 */
2579 #define SSI_CR1_RTRG_8 (2 << SSI_CR1_RTRG_BIT) /* More than or equal to 8 */
2580 #define SSI_CR1_RTRG_14 (3 << SSI_CR1_RTRG_BIT) /* More than or equal to 14 */
2581 #define SSI_CR1_FLEN_BIT 4
2582 #define SSI_CR1_FLEN_MASK (0xf << SSI_CR1_FLEN_BIT)
2583 #define SSI_CR1_FLEN_2BIT (0x0 << SSI_CR1_FLEN_BIT)
2584 #define SSI_CR1_FLEN_3BIT (0x1 << SSI_CR1_FLEN_BIT)
2585 #define SSI_CR1_FLEN_4BIT (0x2 << SSI_CR1_FLEN_BIT)
2586 #define SSI_CR1_FLEN_5BIT (0x3 << SSI_CR1_FLEN_BIT)
2587 #define SSI_CR1_FLEN_6BIT (0x4 << SSI_CR1_FLEN_BIT)
2588 #define SSI_CR1_FLEN_7BIT (0x5 << SSI_CR1_FLEN_BIT)
2589 #define SSI_CR1_FLEN_8BIT (0x6 << SSI_CR1_FLEN_BIT)
2590 #define SSI_CR1_FLEN_9BIT (0x7 << SSI_CR1_FLEN_BIT)
2591 #define SSI_CR1_FLEN_10BIT (0x8 << SSI_CR1_FLEN_BIT)
2592 #define SSI_CR1_FLEN_11BIT (0x9 << SSI_CR1_FLEN_BIT)
2593 #define SSI_CR1_FLEN_12BIT (0xA << SSI_CR1_FLEN_BIT)
2594 #define SSI_CR1_FLEN_13BIT (0xB << SSI_CR1_FLEN_BIT)
2595 #define SSI_CR1_FLEN_14BIT (0xC << SSI_CR1_FLEN_BIT)
2596 #define SSI_CR1_FLEN_15BIT (0xD << SSI_CR1_FLEN_BIT)
2597 #define SSI_CR1_FLEN_16BIT (0xE << SSI_CR1_FLEN_BIT)
2598 #define SSI_CR1_FLEN_17BIT (0xF << SSI_CR1_FLEN_BIT)
2599 #define SSI_CR1_PHA (1 << 1)
2600 #define SSI_CR1_POL (1 << 0)
2602 /* SSI Status Register (SSI_SR) */
2604 #define SSI_SR_TFIFONUM_BIT 13
2605 #define SSI_SR_TFIFONUM_MASK (0x1f << SSI_SR_TFIFONUM_BIT)
2606 #define SSI_SR_RFIFONUM_BIT 8
2607 #define SSI_SR_RFIFONUM_MASK (0x1f << SSI_SR_RFIFONUM_BIT)
2608 #define SSI_SR_END (1 << 7)
2609 #define SSI_SR_BUSY (1 << 6)
2610 #define SSI_SR_TFF (1 << 5)
2611 #define SSI_SR_RFE (1 << 4)
2612 #define SSI_SR_TFHE (1 << 3)
2613 #define SSI_SR_RFHF (1 << 2)
2614 #define SSI_SR_UNDR (1 << 1)
2615 #define SSI_SR_OVER (1 << 0)
2617 /* SSI Interval Time Control Register (SSI_ITR) */
2619 #define SSI_ITR_CNTCLK (1 << 15)
2620 #define SSI_ITR_IVLTM_BIT 0
2621 #define SSI_ITR_IVLTM_MASK (0x7fff << SSI_ITR_IVLTM_BIT)
2623 #ifndef __ASSEMBLY__
2625 /***************************************************************************
2626 * MSC
2627 ***************************************************************************/
2629 #define __msc_start_op() \
2630 ( REG_MSC_STRPCL = MSC_STRPCL_START_OP | MSC_STRPCL_CLOCK_CONTROL_START )
2632 #define __msc_set_resto(to) ( REG_MSC_RESTO = to )
2633 #define __msc_set_rdto(to) ( REG_MSC_RDTO = to )
2634 #define __msc_set_cmd(cmd) ( REG_MSC_CMD = cmd )
2635 #define __msc_set_arg(arg) ( REG_MSC_ARG = arg )
2636 #define __msc_set_nob(nob) ( REG_MSC_NOB = nob )
2637 #define __msc_get_nob() ( REG_MSC_NOB )
2638 #define __msc_set_blklen(len) ( REG_MSC_BLKLEN = len )
2639 #define __msc_set_cmdat(cmdat) ( REG_MSC_CMDAT = cmdat )
2640 #define __msc_set_cmdat_ioabort() ( REG_MSC_CMDAT |= MSC_CMDAT_IO_ABORT )
2641 #define __msc_clear_cmdat_ioabort() ( REG_MSC_CMDAT &= ~MSC_CMDAT_IO_ABORT )
2643 #define __msc_set_cmdat_bus_width1() \
2644 do { \
2645 REG_MSC_CMDAT &= ~MSC_CMDAT_BUS_WIDTH_MASK; \
2646 REG_MSC_CMDAT |= MSC_CMDAT_BUS_WIDTH_1BIT; \
2647 } while(0)
2649 #define __msc_set_cmdat_bus_width4() \
2650 do { \
2651 REG_MSC_CMDAT &= ~MSC_CMDAT_BUS_WIDTH_MASK; \
2652 REG_MSC_CMDAT |= MSC_CMDAT_BUS_WIDTH_4BIT; \
2653 } while(0)
2655 #define __msc_set_cmdat_dma_en() ( REG_MSC_CMDAT |= MSC_CMDAT_DMA_EN )
2656 #define __msc_set_cmdat_init() ( REG_MSC_CMDAT |= MSC_CMDAT_INIT )
2657 #define __msc_set_cmdat_busy() ( REG_MSC_CMDAT |= MSC_CMDAT_BUSY )
2658 #define __msc_set_cmdat_stream() ( REG_MSC_CMDAT |= MSC_CMDAT_STREAM_BLOCK )
2659 #define __msc_set_cmdat_block() ( REG_MSC_CMDAT &= ~MSC_CMDAT_STREAM_BLOCK )
2660 #define __msc_set_cmdat_read() ( REG_MSC_CMDAT &= ~MSC_CMDAT_WRITE_READ )
2661 #define __msc_set_cmdat_write() ( REG_MSC_CMDAT |= MSC_CMDAT_WRITE_READ )
2662 #define __msc_set_cmdat_data_en() ( REG_MSC_CMDAT |= MSC_CMDAT_DATA_EN )
2664 /* r is MSC_CMDAT_RESPONSE_FORMAT_Rx or MSC_CMDAT_RESPONSE_FORMAT_NONE */
2665 #define __msc_set_cmdat_res_format(r) \
2666 do { \
2667 REG_MSC_CMDAT &= ~MSC_CMDAT_RESPONSE_FORMAT_MASK; \
2668 REG_MSC_CMDAT |= (r); \
2669 } while(0)
2671 #define __msc_clear_cmdat() \
2672 REG_MSC_CMDAT &= ~( MSC_CMDAT_IO_ABORT | MSC_CMDAT_DMA_EN | MSC_CMDAT_INIT| \
2673 MSC_CMDAT_BUSY | MSC_CMDAT_STREAM_BLOCK | MSC_CMDAT_WRITE_READ | \
2674 MSC_CMDAT_DATA_EN | MSC_CMDAT_RESPONSE_FORMAT_MASK )
2676 #define __msc_get_imask() ( REG_MSC_IMASK )
2677 #define __msc_mask_all_intrs() ( REG_MSC_IMASK = 0xff )
2678 #define __msc_unmask_all_intrs() ( REG_MSC_IMASK = 0x00 )
2679 #define __msc_mask_rd() ( REG_MSC_IMASK |= MSC_IMASK_RXFIFO_RD_REQ )
2680 #define __msc_unmask_rd() ( REG_MSC_IMASK &= ~MSC_IMASK_RXFIFO_RD_REQ )
2681 #define __msc_mask_wr() ( REG_MSC_IMASK |= MSC_IMASK_TXFIFO_WR_REQ )
2682 #define __msc_unmask_wr() ( REG_MSC_IMASK &= ~MSC_IMASK_TXFIFO_WR_REQ )
2683 #define __msc_mask_endcmdres() ( REG_MSC_IMASK |= MSC_IMASK_END_CMD_RES )
2684 #define __msc_unmask_endcmdres() ( REG_MSC_IMASK &= ~MSC_IMASK_END_CMD_RES )
2685 #define __msc_mask_datatrandone() ( REG_MSC_IMASK |= MSC_IMASK_DATA_TRAN_DONE )
2686 #define __msc_unmask_datatrandone() ( REG_MSC_IMASK &= ~MSC_IMASK_DATA_TRAN_DONE )
2687 #define __msc_mask_prgdone() ( REG_MSC_IMASK |= MSC_IMASK_PRG_DONE )
2688 #define __msc_unmask_prgdone() ( REG_MSC_IMASK &= ~MSC_IMASK_PRG_DONE )
2690 /* n=1,2,4,8,16,32,64,128 */
2691 #define __msc_set_clkrt_div(n) \
2692 do { \
2693 REG_MSC_CLKRT &= ~MSC_CLKRT_CLK_RATE_MASK; \
2694 REG_MSC_CLKRT |= MSC_CLKRT_CLK_RATE_DIV_##n; \
2695 } while(0)
2697 #define __msc_get_ireg() ( REG_MSC_IREG )
2698 #define __msc_ireg_rd() ( REG_MSC_IREG & MSC_IREG_RXFIFO_RD_REQ )
2699 #define __msc_ireg_wr() ( REG_MSC_IREG & MSC_IREG_TXFIFO_WR_REQ )
2700 #define __msc_ireg_end_cmd_res() ( REG_MSC_IREG & MSC_IREG_END_CMD_RES )
2701 #define __msc_ireg_data_tran_done() ( REG_MSC_IREG & MSC_IREG_DATA_TRAN_DONE )
2702 #define __msc_ireg_prg_done() ( REG_MSC_IREG & MSC_IREG_PRG_DONE )
2703 #define __msc_ireg_clear_end_cmd_res() ( REG_MSC_IREG = MSC_IREG_END_CMD_RES )
2704 #define __msc_ireg_clear_data_tran_done() ( REG_MSC_IREG = MSC_IREG_DATA_TRAN_DONE )
2705 #define __msc_ireg_clear_prg_done() ( REG_MSC_IREG = MSC_IREG_PRG_DONE )
2707 #define __msc_get_stat() ( REG_MSC_STAT )
2708 #define __msc_stat_not_end_cmd_res() ( (REG_MSC_STAT & MSC_STAT_END_CMD_RES) == 0)
2709 #define __msc_stat_crc_err() \
2710 ( REG_MSC_STAT & (MSC_STAT_CRC_RES_ERR | MSC_STAT_CRC_READ_ERROR | MSC_STAT_CRC_WRITE_ERROR_YES) )
2711 #define __msc_stat_res_crc_err() ( REG_MSC_STAT & MSC_STAT_CRC_RES_ERR )
2712 #define __msc_stat_rd_crc_err() ( REG_MSC_STAT & MSC_STAT_CRC_READ_ERROR )
2713 #define __msc_stat_wr_crc_err() ( REG_MSC_STAT & MSC_STAT_CRC_WRITE_ERROR_YES )
2714 #define __msc_stat_resto_err() ( REG_MSC_STAT & MSC_STAT_TIME_OUT_RES )
2715 #define __msc_stat_rdto_err() ( REG_MSC_STAT & MSC_STAT_TIME_OUT_READ )
2717 #define __msc_rd_resfifo() ( REG_MSC_RES )
2718 #define __msc_rd_rxfifo() ( REG_MSC_RXFIFO )
2719 #define __msc_wr_txfifo(v) ( REG_MSC_TXFIFO = v )
2721 #define __msc_reset() \
2722 do { \
2723 REG_MSC_STRPCL = MSC_STRPCL_RESET; \
2724 while (REG_MSC_STAT & MSC_STAT_IS_RESETTING); \
2725 } while (0)
2727 #define __msc_start_clk() \
2728 do { \
2729 REG_MSC_STRPCL &= ~MSC_STRPCL_CLOCK_CONTROL_MASK; \
2730 REG_MSC_STRPCL |= MSC_STRPCL_CLOCK_CONTROL_START; \
2731 } while (0)
2733 #define __msc_stop_clk() \
2734 do { \
2735 REG_MSC_STRPCL &= ~MSC_STRPCL_CLOCK_CONTROL_MASK; \
2736 REG_MSC_STRPCL |= MSC_STRPCL_CLOCK_CONTROL_STOP; \
2737 } while (0)
2739 #define MMC_CLK 19169200
2740 #define SD_CLK 24576000
2742 /* msc_clk should little than pclk and little than clk retrieve from card */
2743 #define __msc_calc_clk_divisor(type,dev_clk,msc_clk,lv) \
2744 do { \
2745 unsigned int rate, pclk, i; \
2746 pclk = dev_clk; \
2747 rate = type?SD_CLK:MMC_CLK; \
2748 if (msc_clk && msc_clk < pclk) \
2749 pclk = msc_clk; \
2750 i = 0; \
2751 while (pclk < rate) \
2753 i ++; \
2754 rate >>= 1; \
2756 lv = i; \
2757 } while(0)
2759 /* divide rate to little than or equal to 400kHz */
2760 #define __msc_calc_slow_clk_divisor(type, lv) \
2761 do { \
2762 unsigned int rate, i; \
2763 rate = (type?SD_CLK:MMC_CLK)/1000/400; \
2764 i = 0; \
2765 while (rate > 0) \
2767 rate >>= 1; \
2768 i ++; \
2770 lv = i; \
2771 } while(0)
2773 /***************************************************************************
2774 * RTC
2775 ***************************************************************************/
2777 #define __rtc_start() ( REG_RTC_RCR |= RTC_RCR_START )
2778 #define __rtc_stop() ( REG_RTC_RCR &= ~RTC_RCR_START )
2780 #define __rtc_enable_alarm() ( REG_RTC_RCR |= RTC_RCR_AE )
2781 #define __rtc_disable_alarm() ( REG_RTC_RCR &= ~RTC_RCR_AE )
2782 #define __rtc_enable_alarm_irq() ( REG_RTC_RCR |= RTC_RCR_AIE )
2783 #define __rtc_disable_alarm_irq() ( REG_RTC_RCR &= ~RTC_RCR_AIE )
2785 #define __rtc_enable_1hz_irq() ( REG_RTC_RCR |= RTC_RCR_HZIE )
2786 #define __rtc_disable_1hz_irq() ( REG_RTC_RCR &= ~RTC_RCR_HZIE )
2788 #define __rtc_is_alarm_flag() ( REG_RTC_RCR & RTC_RCR_AF )
2789 #define __rtc_is_1hz_flag() ( REG_RTC_RCR & RTC_RCR_HZ )
2790 #define __rtc_clear_alarm_flag() ( REG_RTC_RCR &= ~RTC_RCR_AF )
2791 #define __rtc_clear_1hz_flag() ( REG_RTC_RCR &= ~RTC_RCR_HZ )
2793 #define __rtc_set_second(s) ( REG_RTC_RSR = (s) )
2794 #define __rtc_get_second() REG_RTC_RSR
2795 #define __rtc_set_alarm(s) ( REG_RTC_RSAR = (s) )
2796 #define __rtc_get_alarm() REG_RTC_RSAR
2798 #define __rtc_adjust_1hz(f32k) \
2799 ( REG_RTC_RGR = (REG_RTC_RGR & ~(RTC_REG_DIV_MASK | RTC_RGR_ADJ_MASK)) | f32k | 0 )
2800 #define __rtc_lock_1hz() ( REG_RTC_RGR |= RTC_RGR_LOCK )
2803 /***************************************************************************
2804 * FIR
2805 ***************************************************************************/
2807 /* enable/disable fir unit */
2808 #define __fir_enable() ( REG_FIR_CR1 |= FIR_CR1_FIRUE )
2809 #define __fir_disable() ( REG_FIR_CR1 &= ~FIR_CR1_FIRUE )
2811 /* enable/disable address comparison */
2812 #define __fir_enable_ac() ( REG_FIR_CR1 |= FIR_CR1_ACE )
2813 #define __fir_disable_ac() ( REG_FIR_CR1 &= ~FIR_CR1_ACE )
2815 /* select frame end mode as underrun or normal */
2816 #define __fir_set_eous() ( REG_FIR_CR1 |= FIR_CR1_EOUS )
2817 #define __fir_clear_eous() ( REG_FIR_CR1 &= ~FIR_CR1_EOUS )
2819 /* enable/disable transmitter idle interrupt */
2820 #define __fir_enable_tii() ( REG_FIR_CR1 |= FIR_CR1_TIIE )
2821 #define __fir_disable_tii() ( REG_FIR_CR1 &= ~FIR_CR1_TIIE )
2823 /* enable/disable transmit FIFO service request interrupt */
2824 #define __fir_enable_tfi() ( REG_FIR_CR1 |= FIR_CR1_TFIE )
2825 #define __fir_disable_tfi() ( REG_FIR_CR1 &= ~FIR_CR1_TFIE )
2827 /* enable/disable receive FIFO service request interrupt */
2828 #define __fir_enable_rfi() ( REG_FIR_CR1 |= FIR_CR1_RFIE )
2829 #define __fir_disable_rfi() ( REG_FIR_CR1 &= ~FIR_CR1_RFIE )
2831 /* enable/disable tx function */
2832 #define __fir_tx_enable() ( REG_FIR_CR1 |= FIR_CR1_TXE )
2833 #define __fir_tx_disable() ( REG_FIR_CR1 &= ~FIR_CR1_TXE )
2835 /* enable/disable rx function */
2836 #define __fir_rx_enable() ( REG_FIR_CR1 |= FIR_CR1_RXE )
2837 #define __fir_rx_disable() ( REG_FIR_CR1 &= ~FIR_CR1_RXE )
2840 /* enable/disable serial infrared interaction pulse (SIP) */
2841 #define __fir_enable_sip() ( REG_FIR_CR2 |= FIR_CR2_SIPE )
2842 #define __fir_disable_sip() ( REG_FIR_CR2 &= ~FIR_CR2_SIPE )
2844 /* un-inverted CRC value is sent out */
2845 #define __fir_enable_bcrc() ( REG_FIR_CR2 |= FIR_CR2_BCRC )
2847 /* inverted CRC value is sent out */
2848 #define __fir_disable_bcrc() ( REG_FIR_CR2 &= ~FIR_CR2_BCRC )
2850 /* enable/disable Transmit Frame Length Register */
2851 #define __fir_enable_tflr() ( REG_FIR_CR2 |= FIR_CR2_TFLRS )
2852 #define __fir_disable_tflr() ( REG_FIR_CR2 &= ~FIR_CR2_TFLRS )
2854 /* Preamble is transmitted in idle state */
2855 #define __fir_set_iss() ( REG_FIR_CR2 |= FIR_CR2_ISS )
2857 /* Abort symbol is transmitted in idle state */
2858 #define __fir_clear_iss() ( REG_FIR_CR2 &= ~FIR_CR2_ISS )
2860 /* enable/disable loopback mode */
2861 #define __fir_enable_loopback() ( REG_FIR_CR2 |= FIR_CR2_LMS )
2862 #define __fir_disable_loopback() ( REG_FIR_CR2 &= ~FIR_CR2_LMS )
2864 /* select transmit pin polarity */
2865 #define __fir_tpp_negative() ( REG_FIR_CR2 |= FIR_CR2_TPPS )
2866 #define __fir_tpp_positive() ( REG_FIR_CR2 &= ~FIR_CR2_TPPS )
2868 /* select receive pin polarity */
2869 #define __fir_rpp_negative() ( REG_FIR_CR2 |= FIR_CR2_RPPS )
2870 #define __fir_rpp_positive() ( REG_FIR_CR2 &= ~FIR_CR2_RPPS )
2872 /* n=16,32,64,128 */
2873 #define __fir_set_txfifo_trigger(n) \
2874 do { \
2875 REG_FIR_CR2 &= ~FIR_CR2_TTRG_MASK; \
2876 REG_FIR_CR2 |= FIR_CR2_TTRG_##n; \
2877 } while (0)
2879 /* n=16,32,64,128 */
2880 #define __fir_set_rxfifo_trigger(n) \
2881 do { \
2882 REG_FIR_CR2 &= ~FIR_CR2_RTRG_MASK; \
2883 REG_FIR_CR2 |= FIR_CR2_RTRG_##n; \
2884 } while (0)
2887 /* FIR status checking */
2889 #define __fir_test_rfw() ( REG_FIR_SR & FIR_SR_RFW )
2890 #define __fir_test_rfa() ( REG_FIR_SR & FIR_SR_RFA )
2891 #define __fir_test_tfrtl() ( REG_FIR_SR & FIR_SR_TFRTL )
2892 #define __fir_test_rfrtl() ( REG_FIR_SR & FIR_SR_RFRTL )
2893 #define __fir_test_urun() ( REG_FIR_SR & FIR_SR_URUN )
2894 #define __fir_test_rfte() ( REG_FIR_SR & FIR_SR_RFTE )
2895 #define __fir_test_orun() ( REG_FIR_SR & FIR_SR_ORUN )
2896 #define __fir_test_crce() ( REG_FIR_SR & FIR_SR_CRCE )
2897 #define __fir_test_fend() ( REG_FIR_SR & FIR_SR_FEND )
2898 #define __fir_test_tff() ( REG_FIR_SR & FIR_SR_TFF )
2899 #define __fir_test_rfe() ( REG_FIR_SR & FIR_SR_RFE )
2900 #define __fir_test_tidle() ( REG_FIR_SR & FIR_SR_TIDLE )
2901 #define __fir_test_rb() ( REG_FIR_SR & FIR_SR_RB )
2903 #define __fir_clear_status() \
2904 do { \
2905 REG_FIR_SR |= FIR_SR_RFW | FIR_SR_RFA | FIR_SR_URUN; \
2906 } while (0)
2908 #define __fir_clear_rfw() ( REG_FIR_SR |= FIR_SR_RFW )
2909 #define __fir_clear_rfa() ( REG_FIR_SR |= FIR_SR_RFA )
2910 #define __fir_clear_urun() ( REG_FIR_SR |= FIR_SR_URUN )
2912 #define __fir_set_tflr(len) \
2913 do { \
2914 REG_FIR_TFLR = len; \
2915 } while (0)
2917 #define __fir_set_addr(a) ( REG_FIR_AR = (a) )
2919 #define __fir_write_data(data) ( REG_FIR_TDR = data )
2920 #define __fir_read_data(data) ( data = REG_FIR_RDR )
2922 /***************************************************************************
2923 * SCC
2924 ***************************************************************************/
2926 #define __scc_enable(base) ( REG_SCC_CR(base) |= SCC_CR_SCCE )
2927 #define __scc_disable(base) ( REG_SCC_CR(base) &= ~SCC_CR_SCCE )
2929 #define __scc_set_tx_mode(base) ( REG_SCC_CR(base) |= SCC_CR_TRS )
2930 #define __scc_set_rx_mode(base) ( REG_SCC_CR(base) &= ~SCC_CR_TRS )
2932 #define __scc_enable_t2r(base) ( REG_SCC_CR(base) |= SCC_CR_T2R )
2933 #define __scc_disable_t2r(base) ( REG_SCC_CR(base) &= ~SCC_CR_T2R )
2935 #define __scc_clk_as_devclk(base) \
2936 do { \
2937 REG_SCC_CR(base) &= ~SCC_CR_FDIV_MASK; \
2938 REG_SCC_CR(base) |= SCC_CR_FDIV_1; \
2939 } while (0)
2941 #define __scc_clk_as_half_devclk(base) \
2942 do { \
2943 REG_SCC_CR(base) &= ~SCC_CR_FDIV_MASK; \
2944 REG_SCC_CR(base) |= SCC_CR_FDIV_2; \
2945 } while (0)
2947 /* n=1,4,8,14 */
2948 #define __scc_set_fifo_trigger(base, n) \
2949 do { \
2950 REG_SCC_CR(base) &= ~SCC_CR_TRIG_MASK; \
2951 REG_SCC_CR(base) |= SCC_CR_TRIG_##n; \
2952 } while (0)
2954 #define __scc_set_protocol(base, p) \
2955 do { \
2956 if (p) \
2957 REG_SCC_CR(base) |= SCC_CR_TP; \
2958 else \
2959 REG_SCC_CR(base) &= ~SCC_CR_TP; \
2960 } while (0)
2962 #define __scc_flush_fifo(base) ( REG_SCC_CR(base) |= SCC_CR_FLUSH )
2964 #define __scc_set_invert_mode(base) ( REG_SCC_CR(base) |= SCC_CR_CONV )
2965 #define __scc_set_direct_mode(base) ( REG_SCC_CR(base) &= ~SCC_CR_CONV )
2967 #define SCC_ERR_INTRS \
2968 ( SCC_CR_ECIE | SCC_CR_EPIE | SCC_CR_RETIE | SCC_CR_EOIE )
2969 #define SCC_ALL_INTRS \
2970 ( SCC_CR_TXIE | SCC_CR_RXIE | SCC_CR_TENDIE | SCC_CR_RTOIE | \
2971 SCC_CR_ECIE | SCC_CR_EPIE | SCC_CR_RETIE | SCC_CR_EOIE )
2973 #define __scc_enable_err_intrs(base) ( REG_SCC_CR(base) |= SCC_ERR_INTRS )
2974 #define __scc_disable_err_intrs(base) ( REG_SCC_CR(base) &= ~SCC_ERR_INTRS )
2976 #define SCC_ALL_ERRORS \
2977 ( SCC_SR_ORER | SCC_SR_RTO | SCC_SR_PER | SCC_SR_RETR_3 | SCC_SR_ECNTO)
2979 #define __scc_clear_errors(base) ( REG_SCC_SR(base) &= ~SCC_ALL_ERRORS )
2981 #define __scc_enable_all_intrs(base) ( REG_SCC_CR(base) |= SCC_ALL_INTRS )
2982 #define __scc_disable_all_intrs(base) ( REG_SCC_CR(base) &= ~SCC_ALL_INTRS )
2984 #define __scc_enable_tx_intr(base) ( REG_SCC_CR(base) |= SCC_CR_TXIE | SCC_CR_TENDIE )
2985 #define __scc_disable_tx_intr(base) ( REG_SCC_CR(base) &= ~(SCC_CR_TXIE | SCC_CR_TENDIE) )
2987 #define __scc_enable_rx_intr(base) ( REG_SCC_CR(base) |= SCC_CR_RXIE)
2988 #define __scc_disable_rx_intr(base) ( REG_SCC_CR(base) &= ~SCC_CR_RXIE)
2990 #define __scc_set_tsend(base) ( REG_SCC_CR(base) |= SCC_CR_TSEND )
2991 #define __scc_clear_tsend(base) ( REG_SCC_CR(base) &= ~SCC_CR_TSEND )
2993 #define __scc_set_clockstop(base) ( REG_SCC_CR(base) |= SCC_CR_CLKSTP )
2994 #define __scc_clear_clockstop(base) ( REG_SCC_CR(base) &= ~SCC_CR_CLKSTP )
2996 #define __scc_clockstop_low(base) \
2997 do { \
2998 REG_SCC_CR(base) &= ~SCC_CR_PX_MASK; \
2999 REG_SCC_CR(base) |= SCC_CR_PX_STOP_LOW; \
3000 } while (0)
3002 #define __scc_clockstop_high(base) \
3003 do { \
3004 REG_SCC_CR(base) &= ~SCC_CR_PX_MASK; \
3005 REG_SCC_CR(base) |= SCC_CR_PX_STOP_HIGH; \
3006 } while (0)
3009 /* SCC status checking */
3010 #define __scc_check_transfer_status(base) ( REG_SCC_SR(base) & SCC_SR_TRANS )
3011 #define __scc_check_rx_overrun_error(base) ( REG_SCC_SR(base) & SCC_SR_ORER )
3012 #define __scc_check_rx_timeout(base) ( REG_SCC_SR(base) & SCC_SR_RTO )
3013 #define __scc_check_parity_error(base) ( REG_SCC_SR(base) & SCC_SR_PER )
3014 #define __scc_check_txfifo_trigger(base) ( REG_SCC_SR(base) & SCC_SR_TFTG )
3015 #define __scc_check_rxfifo_trigger(base) ( REG_SCC_SR(base) & SCC_SR_RFTG )
3016 #define __scc_check_tx_end(base) ( REG_SCC_SR(base) & SCC_SR_TEND )
3017 #define __scc_check_retx_3(base) ( REG_SCC_SR(base) & SCC_SR_RETR_3 )
3018 #define __scc_check_ecnt_overflow(base) ( REG_SCC_SR(base) & SCC_SR_ECNTO )
3021 /***************************************************************************
3022 * WDT
3023 ***************************************************************************/
3025 #define __wdt_set_count(count) ( REG_WDT_WTCNT = (count) )
3026 #define __wdt_start() ( REG_WDT_WTCSR |= WDT_WTCSR_START )
3027 #define __wdt_stop() ( REG_WDT_WTCSR &= ~WDT_WTCSR_START )
3030 /***************************************************************************
3031 * OST
3032 ***************************************************************************/
3034 #define __ost_enable_all() ( REG_OST_TER |= 0x07 )
3035 #define __ost_disable_all() ( REG_OST_TER &= ~0x07 )
3036 #define __ost_enable_channel(n) ( REG_OST_TER |= (1 << (n)) )
3037 #define __ost_disable_channel(n) ( REG_OST_TER &= ~(1 << (n)) )
3038 #define __ost_set_reload(n, val) ( REG_OST_TRDR(n) = (val) )
3039 #define __ost_set_count(n, val) ( REG_OST_TCNT(n) = (val) )
3040 #define __ost_get_count(n) ( REG_OST_TCNT(n) )
3041 #define __ost_set_clock(n, cs) ( REG_OST_TCSR(n) |= (cs) )
3042 #define __ost_set_mode(n, val) ( REG_OST_TCSR(n) = (val) )
3043 #define __ost_enable_interrupt(n) ( REG_OST_TCSR(n) |= OST_TCSR_UIE )
3044 #define __ost_disable_interrupt(n) ( REG_OST_TCSR(n) &= ~OST_TCSR_UIE )
3045 #define __ost_uf_detected(n) ( REG_OST_TCSR(n) & OST_TCSR_UF )
3046 #define __ost_clear_uf(n) ( REG_OST_TCSR(n) &= ~OST_TCSR_UF )
3047 #define __ost_is_busy(n) ( REG_OST_TCSR(n) & OST_TCSR_BUSY )
3048 #define __ost_clear_busy(n) ( REG_OST_TCSR(n) &= ~OST_TCSR_BUSY )
3051 /***************************************************************************
3052 * UART
3053 ***************************************************************************/
3055 #define __uart_enable(n) \
3056 ( REG8(UART_BASE + UART_OFF*(n) + OFF_FCR) = UARTFCR_UUE | UARTFCR_FE )
3057 #define __uart_disable(n) \
3058 ( REG8(UART_BASE + UART_OFF*(n) + OFF_FCR) = ~UARTFCR_UUE )
3060 #define __uart_enable_transmit_irq(n) \
3061 ( REG8(UART_BASE + UART_OFF*(n) + OFF_IER) |= UARTIER_TIE )
3062 #define __uart_disable_transmit_irq(n) \
3063 ( REG8(UART_BASE + UART_OFF*(n) + OFF_IER) &= ~UARTIER_TIE )
3065 #define __uart_enable_receive_irq(n) \
3066 ( REG8(UART_BASE + UART_OFF*(n) + OFF_IER) |= UARTIER_RIE | UARTIER_RLIE | UARTIER_RTIE )
3067 #define __uart_disable_receive_irq(n) \
3068 ( REG8(UART_BASE + UART_OFF*(n) + OFF_IER) &= ~(UARTIER_RIE | UARTIER_RLIE | UARTIER_RTIE) )
3070 #define __uart_enable_loopback(n) \
3071 ( REG8(UART_BASE + UART_OFF*(n) + OFF_MCR) |= UARTMCR_LOOP )
3072 #define __uart_disable_loopback(n) \
3073 ( REG8(UART_BASE + UART_OFF*(n) + OFF_MCR) &= ~UARTMCR_LOOP )
3075 #define __uart_set_8n1(n) \
3076 ( REG8(UART_BASE + UART_OFF*(n) + OFF_LCR) = UARTLCR_WLEN_8 )
3078 #define __uart_set_baud(n, devclk, baud) \
3079 do { \
3080 REG8(UART_BASE + UART_OFF*(n) + OFF_LCR) |= UARTLCR_DLAB; \
3081 REG8(UART_BASE + UART_OFF*(n) + OFF_DLLR) = (devclk / 16 / baud) & 0xff; \
3082 REG8(UART_BASE + UART_OFF*(n) + OFF_DLHR) = ((devclk / 16 / baud) >> 8) & 0xff; \
3083 REG8(UART_BASE + UART_OFF*(n) + OFF_LCR) &= ~UARTLCR_DLAB; \
3084 } while (0)
3086 #define __uart_parity_error(n) \
3087 ( (REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) & UARTLSR_PER) != 0 )
3089 #define __uart_clear_errors(n) \
3090 ( REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) &= ~(UARTLSR_ORER | UARTLSR_BRK | UARTLSR_FER | UARTLSR_PER | UARTSR_RFER) )
3092 #define __uart_transmit_fifo_empty(n) \
3093 ( (REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) & UARTLSR_TDRQ) != 0 )
3095 #define __uart_transmit_end(n) \
3096 ( (REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) & UARTLSR_TEMT) != 0 )
3098 #define __uart_transmit_char(n, ch) \
3099 REG8(UART_BASE + UART_OFF*(n) + OFF_TDR) = (ch)
3101 #define __uart_receive_fifo_full(n) \
3102 ( (REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) & UARTLSR_DR) != 0 )
3104 #define __uart_receive_ready(n) \
3105 ( (REG8(UART_BASE + UART_OFF*(n) + OFF_LSR) & UARTLSR_DR) != 0 )
3107 #define __uart_receive_char(n) \
3108 REG8(UART_BASE + UART_OFF*(n) + OFF_RDR)
3110 #define __uart_disable_irda() \
3111 ( REG8(IRDA_BASE + OFF_SIRCR) &= ~(SIRCR_TSIRE | SIRCR_RSIRE) )
3112 #define __uart_enable_irda() \
3113 /* Tx high pulse as 0, Rx low pulse as 0 */ \
3114 ( REG8(IRDA_BASE + OFF_SIRCR) = SIRCR_TSIRE | SIRCR_RSIRE | SIRCR_RXPL | SIRCR_TPWS )
3117 /***************************************************************************
3118 * INTC
3119 ***************************************************************************/
3120 #define __intc_unmask_irq(n) ( REG_INTC_IMCR = (1 << (n)) )
3121 #define __intc_mask_irq(n) ( REG_INTC_IMSR = (1 << (n)) )
3122 #define __intc_ack_irq(n) ( REG_INTC_IPR = (1 << (n)) )
3124 /***************************************************************************
3125 * CIM
3126 ***************************************************************************/
3128 #define __cim_enable() ( REG_CIM_CTRL |= CIM_CTRL_ENA )
3129 #define __cim_disable() ( REG_CIM_CTRL &= ~CIM_CTRL_ENA )
3131 #define __cim_input_data_inverse() ( REG_CIM_CFG |= CIM_CFG_INV_DAT )
3132 #define __cim_input_data_normal() ( REG_CIM_CFG &= ~CIM_CFG_INV_DAT )
3134 #define __cim_vsync_active_low() ( REG_CIM_CFG |= CIM_CFG_VSP )
3135 #define __cim_vsync_active_high() ( REG_CIM_CFG &= ~CIM_CFG_VSP )
3137 #define __cim_hsync_active_low() ( REG_CIM_CFG |= CIM_CFG_HSP )
3138 #define __cim_hsync_active_high() ( REG_CIM_CFG &= ~CIM_CFG_HSP )
3140 #define __cim_sample_data_at_pclk_falling_edge() \
3141 ( REG_CIM_CFG |= CIM_CFG_PCP )
3142 #define __cim_sample_data_at_pclk_rising_edge() \
3143 ( REG_CIM_CFG &= ~CIM_CFG_PCP )
3145 #define __cim_enable_dummy_zero() ( REG_CIM_CFG |= CIM_CFG_DUMMY_ZERO )
3146 #define __cim_disable_dummy_zero() ( REG_CIM_CFG &= ~CIM_CFG_DUMMY_ZERO )
3148 #define __cim_select_external_vsync() ( REG_CIM_CFG |= CIM_CFG_EXT_VSYNC )
3149 #define __cim_select_internal_vsync() ( REG_CIM_CFG &= ~CIM_CFG_EXT_VSYNC )
3151 /* n=0-7 */
3152 #define __cim_set_data_packing_mode(n) \
3153 do { \
3154 REG_CIM_CFG &= ~CIM_CFG_PACK_MASK; \
3155 REG_CIM_CFG |= (CIM_CFG_PACK_##n); \
3156 } while (0)
3158 #define __cim_enable_ccir656_progressive_mode() \
3159 do { \
3160 REG_CIM_CFG &= ~CIM_CFG_DSM_MASK; \
3161 REG_CIM_CFG |= CIM_CFG_DSM_CPM; \
3162 } while (0)
3164 #define __cim_enable_ccir656_interlace_mode() \
3165 do { \
3166 REG_CIM_CFG &= ~CIM_CFG_DSM_MASK; \
3167 REG_CIM_CFG |= CIM_CFG_DSM_CIM; \
3168 } while (0)
3170 #define __cim_enable_gated_clock_mode() \
3171 do { \
3172 REG_CIM_CFG &= ~CIM_CFG_DSM_MASK; \
3173 REG_CIM_CFG |= CIM_CFG_DSM_GCM; \
3174 } while (0)
3176 #define __cim_enable_nongated_clock_mode() \
3177 do { \
3178 REG_CIM_CFG &= ~CIM_CFG_DSM_MASK; \
3179 REG_CIM_CFG |= CIM_CFG_DSM_NGCM; \
3180 } while (0)
3182 /* sclk:system bus clock
3183 * mclk: CIM master clock
3185 #define __cim_set_master_clk(sclk, mclk) \
3186 do { \
3187 REG_CIM_CTRL &= ~CIM_CTRL_MCLKDIV_MASK; \
3188 REG_CIM_CTRL |= (((sclk)/(mclk) - 1) << CIM_CTRL_MCLKDIV_BIT); \
3189 } while (0)
3191 #define __cim_enable_sof_intr() \
3192 ( REG_CIM_CTRL |= CIM_CTRL_DMA_SOFM )
3193 #define __cim_disable_sof_intr() \
3194 ( REG_CIM_CTRL &= ~CIM_CTRL_DMA_SOFM )
3196 #define __cim_enable_eof_intr() \
3197 ( REG_CIM_CTRL |= CIM_CTRL_DMA_EOFM )
3198 #define __cim_disable_eof_intr() \
3199 ( REG_CIM_CTRL &= ~CIM_CTRL_DMA_EOFM )
3201 #define __cim_enable_stop_intr() \
3202 ( REG_CIM_CTRL |= CIM_CTRL_DMA_STOPM )
3203 #define __cim_disable_stop_intr() \
3204 ( REG_CIM_CTRL &= ~CIM_CTRL_DMA_STOPM )
3206 #define __cim_enable_trig_intr() \
3207 ( REG_CIM_CTRL |= CIM_CTRL_RXF_TRIGM )
3208 #define __cim_disable_trig_intr() \
3209 ( REG_CIM_CTRL &= ~CIM_CTRL_RXF_TRIGM )
3211 #define __cim_enable_rxfifo_overflow_intr() \
3212 ( REG_CIM_CTRL |= CIM_CTRL_RXF_OFM )
3213 #define __cim_disable_rxfifo_overflow_intr() \
3214 ( REG_CIM_CTRL &= ~CIM_CTRL_RXF_OFM )
3216 /* n=1-16 */
3217 #define __cim_set_frame_rate(n) \
3218 do { \
3219 REG_CIM_CTRL &= ~CIM_CTRL_FRC_MASK; \
3220 REG_CIM_CTRL |= CIM_CTRL_FRC_##n; \
3221 } while (0)
3223 #define __cim_enable_dma() ( REG_CIM_CTRL |= CIM_CTRL_DMA_EN )
3224 #define __cim_disable_dma() ( REG_CIM_CTRL &= ~CIM_CTRL_DMA_EN )
3226 #define __cim_reset_rxfifo() ( REG_CIM_CTRL |= CIM_CTRL_RXF_RST )
3227 #define __cim_unreset_rxfifo() ( REG_CIM_CTRL &= ~CIM_CTRL_RXF_RST )
3229 /* n=4,8,12,16,20,24,28,32 */
3230 #define __cim_set_rxfifo_trigger(n) \
3231 do { \
3232 REG_CIM_CTRL &= ~CIM_CTRL_RXF_TRIG_MASK; \
3233 REG_CIM_CTRL |= CIM_CTRL_RXF_TRIG_##n; \
3234 } while (0)
3236 #define __cim_clear_state() ( REG_CIM_STATE = 0 )
3238 #define __cim_disable_done() ( REG_CIM_STATE & CIM_STATE_VDD )
3239 #define __cim_rxfifo_empty() ( REG_CIM_STATE & CIM_STATE_RXF_EMPTY )
3240 #define __cim_rxfifo_reach_trigger() ( REG_CIM_STATE & CIM_STATE_RXF_TRIG )
3241 #define __cim_rxfifo_overflow() ( REG_CIM_STATE & CIM_STATE_RXF_OF )
3242 #define __cim_clear_rxfifo_overflow() ( REG_CIM_STATE &= ~CIM_STATE_RXF_OF )
3243 #define __cim_dma_stop() ( REG_CIM_STATE & CIM_STATE_DMA_STOP )
3244 #define __cim_dma_eof() ( REG_CIM_STATE & CIM_STATE_DMA_EOF )
3245 #define __cim_dma_sof() ( REG_CIM_STATE & CIM_STATE_DMA_SOF )
3247 #define __cim_get_iid() ( REG_CIM_IID )
3248 #define __cim_get_image_data() ( REG_CIM_RXFIFO )
3249 #define __cim_get_dam_cmd() ( REG_CIM_CMD )
3251 #define __cim_set_da(a) ( REG_CIM_DA = (a) )
3253 /***************************************************************************
3254 * PWM
3255 ***************************************************************************/
3257 /* n is the pwm channel (0,1,..) */
3258 #define __pwm_enable_module(n) ( REG_PWM_CTR(n) |= PWM_CTR_EN )
3259 #define __pwm_disable_module(n) ( REG_PWM_CTR(n) &= ~PWM_CTR_EN )
3260 #define __pwm_graceful_shutdown_mode(n) ( REG_PWM_CTR(n) &= ~PWM_CTR_SD )
3261 #define __pwm_abrupt_shutdown_mode(n) ( REG_PWM_CTR(n) |= PWM_CTR_SD )
3262 #define __pwm_set_full_duty(n) ( REG_PWM_DUT(n) |= PWM_DUT_FDUTY )
3264 #define __pwm_set_prescale(n, p) \
3265 ( REG_PWM_CTR(n) = ((REG_PWM_CTR(n) & ~PWM_CTR_PRESCALE_MASK) | (p) ) )
3266 #define __pwm_set_period(n, p) \
3267 ( REG_PWM_PER(n) = ( (REG_PWM_PER(n) & ~PWM_PER_PERIOD_MASK) | (p) ) )
3268 #define __pwm_set_duty(n, d) \
3269 ( REG_PWM_DUT(n) = ( (REG_PWM_DUT(n) & ~PWM_DUT_FDUTY) | (d) ) )
3271 /***************************************************************************
3272 * EMC
3273 ***************************************************************************/
3275 #define __emc_enable_split() ( REG_EMC_BCR = EMC_BCR_BRE )
3276 #define __emc_disable_split() ( REG_EMC_BCR = 0 )
3278 #define __emc_smem_bus_width(n) /* 8, 16 or 32*/ \
3279 ( REG_EMC_SMCR = (REG_EMC_SMCR & EMC_SMCR_BW_MASK) | \
3280 EMC_SMCR_BW_##n##BIT )
3281 #define __emc_smem_byte_control() \
3282 ( REG_EMC_SMCR = (REG_EMC_SMCR | EMC_SMCR_BCM )
3283 #define __emc_normal_smem() \
3284 ( REG_EMC_SMCR = (REG_EMC_SMCR & ~EMC_SMCR_SMT )
3285 #define __emc_burst_smem() \
3286 ( REG_EMC_SMCR = (REG_EMC_SMCR | EMC_SMCR_SMT )
3287 #define __emc_smem_burstlen(n) /* 4, 8, 16 or 32 */ \
3288 ( REG_EMC_SMCR = (REG_EMC_SMCR & EMC_SMCR_BL_MASK) | (EMC_SMCR_BL_##n )
3290 /***************************************************************************
3291 * GPIO
3292 ***************************************************************************/
3294 /* p is the port number (0,1,2,3)
3295 * o is the pin offset (0-31) inside the port
3296 * n is the absolute number of a pin (0-124), regardless of the port
3297 * m is the interrupt manner (low/high/falling/rising)
3300 #define __gpio_port_data(p) ( REG_GPIO_GPDR(p) )
3302 #define __gpio_port_as_output(p, o) \
3303 do { \
3304 unsigned int tmp; \
3305 REG_GPIO_GPIER(p) &= ~(1 << (o)); \
3306 REG_GPIO_GPDIR(p) |= (1 << (o)); \
3307 if (o < 16) { \
3308 tmp = REG_GPIO_GPALR(p); \
3309 tmp &= ~(3 << ((o) << 1)); \
3310 REG_GPIO_GPALR(p) = tmp; \
3311 } else { \
3312 tmp = REG_GPIO_GPAUR(p); \
3313 tmp &= ~(3 << (((o) - 16)<< 1)); \
3314 REG_GPIO_GPAUR(p) = tmp; \
3316 } while (0)
3318 #define __gpio_port_as_input(p, o) \
3319 do { \
3320 unsigned int tmp; \
3321 REG_GPIO_GPIER(p) &= ~(1 << (o)); \
3322 REG_GPIO_GPDIR(p) &= ~(1 << (o)); \
3323 if (o < 16) { \
3324 tmp = REG_GPIO_GPALR(p); \
3325 tmp &= ~(3 << ((o) << 1)); \
3326 REG_GPIO_GPALR(p) = tmp; \
3327 } else { \
3328 tmp = REG_GPIO_GPAUR(p); \
3329 tmp &= ~(3 << (((o) - 16)<< 1)); \
3330 REG_GPIO_GPAUR(p) = tmp; \
3332 } while (0)
3334 #define __gpio_as_output(n) \
3335 do { \
3336 unsigned int p, o; \
3337 p = (n) / 32; \
3338 o = (n) % 32; \
3339 __gpio_port_as_output(p, o); \
3340 } while (0)
3342 #define __gpio_as_input(n) \
3343 do { \
3344 unsigned int p, o; \
3345 p = (n) / 32; \
3346 o = (n) % 32; \
3347 __gpio_port_as_input(p, o); \
3348 } while (0)
3350 #define __gpio_set_pin(n) \
3351 do { \
3352 unsigned int p, o; \
3353 p = (n) / 32; \
3354 o = (n) % 32; \
3355 __gpio_port_data(p) |= (1 << o); \
3356 } while (0)
3358 #define __gpio_clear_pin(n) \
3359 do { \
3360 unsigned int p, o; \
3361 p = (n) / 32; \
3362 o = (n) % 32; \
3363 __gpio_port_data(p) &= ~(1 << o); \
3364 } while (0)
3366 static __inline__ unsigned int __gpio_get_pin(unsigned int n)
3368 unsigned int p, o;
3369 p = (n) / 32;
3370 o = (n) % 32;
3371 if (__gpio_port_data(p) & (1 << o))
3372 return 1;
3373 else
3374 return 0;
3378 #define __gpio_set_irq_detect_manner(p, o, m) \
3379 do { \
3380 unsigned int tmp; \
3381 if (o < 16) { \
3382 tmp = REG_GPIO_GPIDLR(p); \
3383 tmp &= ~(3 << ((o) << 1)); \
3384 tmp |= ((m) << ((o) << 1)); \
3385 REG_GPIO_GPIDLR(p) = tmp; \
3386 } else { \
3387 o -= 16; \
3388 tmp = REG_GPIO_GPIDUR(p); \
3389 tmp &= ~(3 << ((o) << 1)); \
3390 tmp |= ((m) << ((o) << 1)); \
3391 REG_GPIO_GPIDUR(p) = tmp; \
3393 } while (0)
3395 #define __gpio_port_as_irq(p, o, m) \
3396 do { \
3397 __gpio_set_irq_detect_manner(p, o, m); \
3398 __gpio_port_as_input(p, o); \
3399 REG_GPIO_GPIER(p) |= (1 << o); \
3400 } while (0)
3402 #define __gpio_as_irq(n, m) \
3403 do { \
3404 unsigned int p, o; \
3405 p = (n) / 32; \
3406 o = (n) % 32; \
3407 __gpio_port_as_irq(p, o, m); \
3408 } while (0)
3411 #define __gpio_as_irq_high_level(n) __gpio_as_irq(n, GPIO_IRQ_HILEVEL)
3412 #define __gpio_as_irq_low_level(n) __gpio_as_irq(n, GPIO_IRQ_LOLEVEL)
3413 #define __gpio_as_irq_fall_edge(n) __gpio_as_irq(n, GPIO_IRQ_FALLEDG)
3414 #define __gpio_as_irq_rise_edge(n) __gpio_as_irq(n, GPIO_IRQ_RAISEDG)
3417 #define __gpio_mask_irq(n) \
3418 do { \
3419 unsigned int p, o; \
3420 p = (n) / 32; \
3421 o = (n) % 32; \
3422 REG_GPIO_GPIER(p) &= ~(1 << o); \
3423 } while (0)
3425 #define __gpio_unmask_irq(n) \
3426 do { \
3427 unsigned int p, o; \
3428 p = (n) / 32; \
3429 o = (n) % 32; \
3430 REG_GPIO_GPIER(n) |= (1 << o); \
3431 } while (0)
3433 #define __gpio_ack_irq(n) \
3434 do { \
3435 unsigned int p, o; \
3436 p = (n) / 32; \
3437 o = (n) % 32; \
3438 REG_GPIO_GPFR(p) |= (1 << o); \
3439 } while (0)
3442 static __inline__ unsigned int __gpio_get_irq(void)
3444 unsigned int tmp, i;
3446 tmp = REG_GPIO_GPFR(3);
3447 for (i=0; i<32; i++)
3448 if (tmp & (1 << i))
3449 return 0x60 + i;
3450 tmp = REG_GPIO_GPFR(2);
3451 for (i=0; i<32; i++)
3452 if (tmp & (1 << i))
3453 return 0x40 + i;
3454 tmp = REG_GPIO_GPFR(1);
3455 for (i=0; i<32; i++)
3456 if (tmp & (1 << i))
3457 return 0x20 + i;
3458 tmp = REG_GPIO_GPFR(0);
3459 for (i=0; i<32; i++)
3460 if (tmp & (1 << i))
3461 return i;
3462 return 0;
3465 #define __gpio_group_irq(n) \
3466 ({ \
3467 register int tmp, i; \
3468 tmp = REG_GPIO_GPFR((n)); \
3469 for (i=31;i>=0;i--) \
3470 if (tmp & (1 << i)) \
3471 break; \
3472 i; \
3475 #define __gpio_enable_pull(n) \
3476 do { \
3477 unsigned int p, o; \
3478 p = (n) / 32; \
3479 o = (n) % 32; \
3480 REG_GPIO_GPPUR(p) |= (1 << o); \
3481 } while (0)
3483 #define __gpio_disable_pull(n) \
3484 do { \
3485 unsigned int p, o; \
3486 p = (n) / 32; \
3487 o = (n) % 32; \
3488 REG_GPIO_GPPUR(p) &= ~(1 << o); \
3489 } while (0)
3491 /* Init the alternate function pins */
3494 #define __gpio_as_ssi() \
3495 do { \
3496 REG_GPIO_GPALR(2) &= 0xFC00FFFF; \
3497 REG_GPIO_GPALR(2) |= 0x01550000; \
3498 } while (0)
3500 #define __gpio_as_uart3() \
3501 do { \
3502 REG_GPIO_GPAUR(0) &= 0xFFFF0000; \
3503 REG_GPIO_GPAUR(0) |= 0x00005555; \
3504 } while (0)
3506 #define __gpio_as_uart2() \
3507 do { \
3508 REG_GPIO_GPALR(3) &= 0x3FFFFFFF; \
3509 REG_GPIO_GPALR(3) |= 0x40000000; \
3510 REG_GPIO_GPAUR(3) &= 0xF3FFFFFF; \
3511 REG_GPIO_GPAUR(3) |= 0x04000000; \
3512 } while (0)
3514 #define __gpio_as_uart1() \
3515 do { \
3516 REG_GPIO_GPAUR(0) &= 0xFFF0FFFF; \
3517 REG_GPIO_GPAUR(0) |= 0x00050000; \
3518 } while (0)
3520 #define __gpio_as_uart0() \
3521 do { \
3522 REG_GPIO_GPAUR(3) &= 0x0FFFFFFF; \
3523 REG_GPIO_GPAUR(3) |= 0x50000000; \
3524 } while (0)
3527 #define __gpio_as_scc0() \
3528 do { \
3529 REG_GPIO_GPALR(2) &= 0xFFFFFFCC; \
3530 REG_GPIO_GPALR(2) |= 0x00000011; \
3531 } while (0)
3533 #define __gpio_as_scc1() \
3534 do { \
3535 REG_GPIO_GPALR(2) &= 0xFFFFFF33; \
3536 REG_GPIO_GPALR(2) |= 0x00000044; \
3537 } while (0)
3539 #define __gpio_as_scc() \
3540 do { \
3541 __gpio_as_scc0(); \
3542 __gpio_as_scc1(); \
3543 } while (0)
3545 #define __gpio_as_dma() \
3546 do { \
3547 REG_GPIO_GPALR(0) &= 0x00FFFFFF; \
3548 REG_GPIO_GPALR(0) |= 0x55000000; \
3549 REG_GPIO_GPAUR(0) &= 0xFF0FFFFF; \
3550 REG_GPIO_GPAUR(0) |= 0x00500000; \
3551 } while (0)
3553 #define __gpio_as_msc() \
3554 do { \
3555 REG_GPIO_GPALR(1) &= 0xFFFF000F; \
3556 REG_GPIO_GPALR(1) |= 0x00005550; \
3557 } while (0)
3559 #define __gpio_as_pcmcia() \
3560 do { \
3561 REG_GPIO_GPAUR(2) &= 0xF000FFFF; \
3562 REG_GPIO_GPAUR(2) |= 0x05550000; \
3563 } while (0)
3565 #define __gpio_as_emc() \
3566 do { \
3567 REG_GPIO_GPALR(2) &= 0x3FFFFFFF; \
3568 REG_GPIO_GPALR(2) |= 0x40000000; \
3569 REG_GPIO_GPAUR(2) &= 0xFFFF0000; \
3570 REG_GPIO_GPAUR(2) |= 0x00005555; \
3571 } while (0)
3573 #define __gpio_as_lcd_slave() \
3574 do { \
3575 REG_GPIO_GPALR(1) &= 0x0000FFFF; \
3576 REG_GPIO_GPALR(1) |= 0x55550000; \
3577 REG_GPIO_GPAUR(1) &= 0x00000000; \
3578 REG_GPIO_GPAUR(1) |= 0x55555555; \
3579 } while (0)
3581 #define __gpio_as_lcd_master() \
3582 do { \
3583 REG_GPIO_GPALR(1) &= 0x0000FFFF; \
3584 REG_GPIO_GPALR(1) |= 0x55550000; \
3585 REG_GPIO_GPAUR(1) &= 0x00000000; \
3586 REG_GPIO_GPAUR(1) |= 0x556A5555; \
3587 } while (0)
3589 #define __gpio_as_usb() \
3590 do { \
3591 REG_GPIO_GPAUR(0) &= 0x00FFFFFF; \
3592 REG_GPIO_GPAUR(0) |= 0x55000000; \
3593 } while (0)
3595 #define __gpio_as_ac97() \
3596 do { \
3597 REG_GPIO_GPALR(2) &= 0xC3FF03FF; \
3598 REG_GPIO_GPALR(2) |= 0x24005400; \
3599 } while (0)
3601 #define __gpio_as_i2s_slave() \
3602 do { \
3603 REG_GPIO_GPALR(2) &= 0xC3FF0CFF; \
3604 REG_GPIO_GPALR(2) |= 0x14005100; \
3605 } while (0)
3607 #define __gpio_as_i2s_master() \
3608 do { \
3609 REG_GPIO_GPALR(2) &= 0xC3FF0CFF; \
3610 REG_GPIO_GPALR(2) |= 0x28005100; \
3611 } while (0)
3613 #define __gpio_as_eth() \
3614 do { \
3615 REG_GPIO_GPAUR(3) &= 0xFC000000; \
3616 REG_GPIO_GPAUR(3) |= 0x01555555; \
3617 } while (0)
3619 #define __gpio_as_pwm() \
3620 do { \
3621 REG_GPIO_GPAUR(2) &= 0x0FFFFFFF; \
3622 REG_GPIO_GPAUR(2) |= 0x50000000; \
3623 } while (0)
3625 #define __gpio_as_ps2() \
3626 do { \
3627 REG_GPIO_GPALR(1) &= 0xFFFFFFF0; \
3628 REG_GPIO_GPALR(1) |= 0x00000005; \
3629 } while (0)
3631 #define __gpio_as_uprt() \
3632 do { \
3633 REG_GPIO_GPALR(1) &= 0x0000000F; \
3634 REG_GPIO_GPALR(1) |= 0x55555550; \
3635 REG_GPIO_GPALR(3) &= 0xC0000000; \
3636 REG_GPIO_GPALR(3) |= 0x15555555; \
3637 } while (0)
3639 #define __gpio_as_cim() \
3640 do { \
3641 REG_GPIO_GPALR(0) &= 0xFF000000; \
3642 REG_GPIO_GPALR(0) |= 0x00555555; \
3643 } while (0)
3645 /***************************************************************************
3646 * HARB
3647 ***************************************************************************/
3649 #define __harb_usb0_udc() \
3650 do { \
3651 REG_HARB_HAPOR &= ~HARB_HAPOR_UCHSEL; \
3652 } while (0)
3654 #define __harb_usb0_uhc() \
3655 do { \
3656 REG_HARB_HAPOR |= HARB_HAPOR_UCHSEL; \
3657 } while (0)
3659 #define __harb_set_priority(n) \
3660 do { \
3661 REG_HARB_HAPOR = ((REG_HARB_HAPOR & ~HARB_HAPOR_PRIO_MASK) | n); \
3662 } while (0)
3664 /***************************************************************************
3665 * I2C
3666 ***************************************************************************/
3668 #define __i2c_enable() ( REG_I2C_CR |= I2C_CR_I2CE )
3669 #define __i2c_disable() ( REG_I2C_CR &= ~I2C_CR_I2CE )
3671 #define __i2c_send_start() ( REG_I2C_CR |= I2C_CR_STA )
3672 #define __i2c_send_stop() ( REG_I2C_CR |= I2C_CR_STO )
3673 #define __i2c_send_ack() ( REG_I2C_CR &= ~I2C_CR_AC )
3674 #define __i2c_send_nack() ( REG_I2C_CR |= I2C_CR_AC )
3676 #define __i2c_set_drf() ( REG_I2C_SR |= I2C_SR_DRF )
3677 #define __i2c_clear_drf() ( REG_I2C_SR &= ~I2C_SR_DRF )
3678 #define __i2c_check_drf() ( REG_I2C_SR & I2C_SR_DRF )
3680 #define __i2c_received_ack() ( !(REG_I2C_SR & I2C_SR_ACKF) )
3681 #define __i2c_is_busy() ( REG_I2C_SR & I2C_SR_BUSY )
3682 #define __i2c_transmit_ended() ( REG_I2C_SR & I2C_SR_TEND )
3684 #define __i2c_set_clk(dev_clk, i2c_clk) \
3685 ( REG_I2C_GR = (dev_clk) / (16*(i2c_clk)) - 1 )
3687 #define __i2c_read() ( REG_I2C_DR )
3688 #define __i2c_write(val) ( REG_I2C_DR = (val) )
3690 /***************************************************************************
3691 * UDC
3692 ***************************************************************************/
3694 #define __udc_set_16bit_phy() ( REG_UDC_DevCFGR |= UDC_DevCFGR_PI )
3695 #define __udc_set_8bit_phy() ( REG_UDC_DevCFGR &= ~UDC_DevCFGR_PI )
3697 #define __udc_enable_sync_frame() ( REG_UDC_DevCFGR |= UDC_DevCFGR_SS )
3698 #define __udc_disable_sync_frame() ( REG_UDC_DevCFGR &= ~UDC_DevCFGR_SS )
3700 #define __udc_self_powered() ( REG_UDC_DevCFGR |= UDC_DevCFGR_SP )
3701 #define __udc_bus_powered() ( REG_UDC_DevCFGR &= ~UDC_DevCFGR_SP )
3703 #define __udc_enable_remote_wakeup() ( REG_UDC_DevCFGR |= UDC_DevCFGR_RW )
3704 #define __udc_disable_remote_wakeup() ( REG_UDC_DevCFGR &= ~UDC_DevCFGR_RW )
3706 #define __udc_set_speed_high() \
3707 do { \
3708 REG_UDC_DevCFGR &= ~UDC_DevCFGR_SPD_MASK; \
3709 REG_UDC_DevCFGR |= UDC_DevCFGR_SPD_HS; \
3710 } while (0)
3712 #define __udc_set_speed_full() \
3713 do { \
3714 REG_UDC_DevCFGR &= ~UDC_DevCFGR_SPD_MASK; \
3715 REG_UDC_DevCFGR |= UDC_DevCFGR_SPD_FS; \
3716 } while (0)
3718 #define __udc_set_speed_low() \
3719 do { \
3720 REG_UDC_DevCFGR &= ~UDC_DevCFGR_SPD_MASK; \
3721 REG_UDC_DevCFGR |= UDC_DevCFGR_SPD_LS; \
3722 } while (0)
3725 #define __udc_set_dma_mode() ( REG_UDC_DevCR |= UDC_DevCR_DM )
3726 #define __udc_set_slave_mode() ( REG_UDC_DevCR &= ~UDC_DevCR_DM )
3727 #define __udc_set_big_endian() ( REG_UDC_DevCR |= UDC_DevCR_BE )
3728 #define __udc_set_little_endian() ( REG_UDC_DevCR &= ~UDC_DevCR_BE )
3729 #define __udc_generate_resume() ( REG_UDC_DevCR |= UDC_DevCR_RES )
3730 #define __udc_clear_resume() ( REG_UDC_DevCR &= ~UDC_DevCR_RES )
3733 #define __udc_get_enumarated_speed() ( REG_UDC_DevSR & UDC_DevSR_ENUMSPD_MASK )
3734 #define __udc_suspend_detected() ( REG_UDC_DevSR & UDC_DevSR_SUSP )
3735 #define __udc_get_alternate_setting() ( (REG_UDC_DevSR & UDC_DevSR_ALT_MASK) >> UDC_DevSR_ALT_BIT )
3736 #define __udc_get_interface_number() ( (REG_UDC_DevSR & UDC_DevSR_INTF_MASK) >> UDC_DevSR_INTF_BIT )
3737 #define __udc_get_config_number() ( (REG_UDC_DevSR & UDC_DevSR_CFG_MASK) >> UDC_DevSR_CFG_BIT )
3740 #define __udc_sof_detected(r) ( (r) & UDC_DevIntR_SOF )
3741 #define __udc_usb_suspend_detected(r) ( (r) & UDC_DevIntR_US )
3742 #define __udc_usb_reset_detected(r) ( (r) & UDC_DevIntR_UR )
3743 #define __udc_set_interface_detected(r) ( (r) & UDC_DevIntR_SI )
3744 #define __udc_set_config_detected(r) ( (r) & UDC_DevIntR_SC )
3746 #define __udc_clear_sof() ( REG_UDC_DevIntR |= UDC_DevIntR_SOF )
3747 #define __udc_clear_usb_suspend() ( REG_UDC_DevIntR |= UDC_DevIntR_US )
3748 #define __udc_clear_usb_reset() ( REG_UDC_DevIntR |= UDC_DevIntR_UR )
3749 #define __udc_clear_set_interface() ( REG_UDC_DevIntR |= UDC_DevIntR_SI )
3750 #define __udc_clear_set_config() ( REG_UDC_DevIntR |= UDC_DevIntR_SC )
3752 #define __udc_mask_sof() ( REG_UDC_DevIntMR |= UDC_DevIntR_SOF )
3753 #define __udc_mask_usb_suspend() ( REG_UDC_DevIntMR |= UDC_DevIntR_US )
3754 #define __udc_mask_usb_reset() ( REG_UDC_DevIntMR |= UDC_DevIntR_UR )
3755 #define __udc_mask_set_interface() ( REG_UDC_DevIntMR |= UDC_DevIntR_SI )
3756 #define __udc_mask_set_config() ( REG_UDC_DevIntMR |= UDC_DevIntR_SC )
3757 #define __udc_mask_all_dev_intrs() \
3758 ( REG_UDC_DevIntMR = UDC_DevIntR_SOF | UDC_DevIntR_US | \
3759 UDC_DevIntR_UR | UDC_DevIntR_SI | UDC_DevIntR_SC )
3761 #define __udc_unmask_sof() ( REG_UDC_DevIntMR &= ~UDC_DevIntR_SOF )
3762 #define __udc_unmask_usb_suspend() ( REG_UDC_DevIntMR &= ~UDC_DevIntR_US )
3763 #define __udc_unmask_usb_reset() ( REG_UDC_DevIntMR &= ~UDC_DevIntR_UR )
3764 #define __udc_unmask_set_interface() ( REG_UDC_DevIntMR &= ~UDC_DevIntR_SI )
3765 #define __udc_unmask_set_config() ( REG_UDC_DevIntMR &= ~UDC_DevIntR_SC )
3766 #if 0
3767 #define __udc_unmask_all_dev_intrs() \
3768 ( REG_UDC_DevIntMR = ~(UDC_DevIntR_SOF | UDC_DevIntR_US | \
3769 UDC_DevIntR_UR | UDC_DevIntR_SI | UDC_DevIntR_SC) )
3770 #else
3771 #define __udc_unmask_all_dev_intrs() \
3772 ( REG_UDC_DevIntMR = 0x00000000 )
3773 #endif
3776 #define __udc_ep0out_irq_detected(epintr) \
3777 ( (((epintr) & UDC_EPIntR_OUTEP_MASK) >> (UDC_EPIntR_OUTEP_BIT + 0)) & 0x1 )
3778 #define __udc_ep5out_irq_detected(epintr) \
3779 ( (((epintr) & UDC_EPIntR_OUTEP_MASK) >> (UDC_EPIntR_OUTEP_BIT + 5)) & 0x1 )
3780 #define __udc_ep6out_irq_detected(epintr) \
3781 ( (((epintr) & UDC_EPIntR_OUTEP_MASK) >> (UDC_EPIntR_OUTEP_BIT + 6)) & 0x1 )
3782 #define __udc_ep7out_irq_detected(epintr) \
3783 ( (((epintr) & UDC_EPIntR_OUTEP_MASK) >> (UDC_EPIntR_OUTEP_BIT + 7)) & 0x1 )
3785 #define __udc_ep0in_irq_detected(epintr) \
3786 ( (((epintr) & UDC_EPIntR_INEP_MASK) >> (UDC_EPIntR_INEP_BIT + 0)) & 0x1 )
3787 #define __udc_ep1in_irq_detected(epintr) \
3788 ( (((epintr) & UDC_EPIntR_INEP_MASK) >> (UDC_EPIntR_INEP_BIT + 1)) & 0x1 )
3789 #define __udc_ep2in_irq_detected(epintr) \
3790 ( (((epintr) & UDC_EPIntR_INEP_MASK) >> (UDC_EPIntR_INEP_BIT + 2)) & 0x1 )
3791 #define __udc_ep3in_irq_detected(epintr) \
3792 ( (((epintr) & UDC_EPIntR_INEP_MASK) >> (UDC_EPIntR_INEP_BIT + 3)) & 0x1 )
3793 #define __udc_ep4in_irq_detected(epintr) \
3794 ( (((epintr) & UDC_EPIntR_INEP_MASK) >> (UDC_EPIntR_INEP_BIT + 4)) & 0x1 )
3797 #define __udc_mask_ep0out_irq() \
3798 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_OUTEP_BIT + 0)) )
3799 #define __udc_mask_ep5out_irq() \
3800 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_OUTEP_BIT + 5)) )
3801 #define __udc_mask_ep6out_irq() \
3802 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_OUTEP_BIT + 6)) )
3803 #define __udc_mask_ep7out_irq() \
3804 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_OUTEP_BIT + 7)) )
3806 #define __udc_unmask_ep0out_irq() \
3807 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_OUTEP_BIT + 0)) )
3808 #define __udc_unmask_ep5out_irq() \
3809 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_OUTEP_BIT + 5)) )
3810 #define __udc_unmask_ep6out_irq() \
3811 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_OUTEP_BIT + 6)) )
3812 #define __udc_unmask_ep7out_irq() \
3813 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_OUTEP_BIT + 7)) )
3815 #define __udc_mask_ep0in_irq() \
3816 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_INEP_BIT + 0)) )
3817 #define __udc_mask_ep1in_irq() \
3818 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_INEP_BIT + 1)) )
3819 #define __udc_mask_ep2in_irq() \
3820 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_INEP_BIT + 2)) )
3821 #define __udc_mask_ep3in_irq() \
3822 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_INEP_BIT + 3)) )
3823 #define __udc_mask_ep4in_irq() \
3824 ( REG_UDC_EPIntMR |= (1 << (UDC_EPIntMR_INEP_BIT + 4)) )
3826 #define __udc_unmask_ep0in_irq() \
3827 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_INEP_BIT + 0)) )
3828 #define __udc_unmask_ep1in_irq() \
3829 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_INEP_BIT + 1)) )
3830 #define __udc_unmask_ep2in_irq() \
3831 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_INEP_BIT + 2)) )
3832 #define __udc_unmask_ep3in_irq() \
3833 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_INEP_BIT + 3)) )
3834 #define __udc_unmask_ep4in_irq() \
3835 ( REG_UDC_EPIntMR &= ~(1 << (UDC_EPIntMR_INEP_BIT + 4)) )
3837 #define __udc_mask_all_ep_intrs() \
3838 ( REG_UDC_EPIntMR = 0xffffffff )
3839 #define __udc_unmask_all_ep_intrs() \
3840 ( REG_UDC_EPIntMR = 0x00000000 )
3843 /* ep0 only CTRL, ep1 only INTR, ep2/3/5/6 only BULK, ep4/7 only ISO */
3844 #define __udc_config_endpoint_type() \
3845 do { \
3846 REG_UDC_EP0InCR = (REG_UDC_EP0InCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_CTRL; \
3847 REG_UDC_EP0OutCR = (REG_UDC_EP0OutCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_CTRL; \
3848 REG_UDC_EP1InCR = (REG_UDC_EP1InCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_INTR; \
3849 REG_UDC_EP2InCR = (REG_UDC_EP2InCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_BULK; \
3850 REG_UDC_EP3InCR = (REG_UDC_EP3InCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_BULK; \
3851 REG_UDC_EP4InCR = (REG_UDC_EP4InCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_ISO; \
3852 REG_UDC_EP5OutCR = (REG_UDC_EP5OutCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_BULK; \
3853 REG_UDC_EP6OutCR = (REG_UDC_EP6OutCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_BULK; \
3854 REG_UDC_EP7OutCR = (REG_UDC_EP7OutCR & ~UDC_EPCR_ET_MASK) | UDC_EPCR_ET_ISO; \
3855 } while (0)
3857 #define __udc_enable_ep0out_snoop_mode() ( REG_UDC_EP0OutCR |= UDC_EPCR_SN )
3858 #define __udc_enable_ep5out_snoop_mode() ( REG_UDC_EP5OutCR |= UDC_EPCR_SN )
3859 #define __udc_enable_ep6out_snoop_mode() ( REG_UDC_EP6OutCR |= UDC_EPCR_SN )
3860 #define __udc_enable_ep7out_snoop_mode() ( REG_UDC_EP7OutCR |= UDC_EPCR_SN )
3862 #define __udc_disable_ep0out_snoop_mode() ( REG_UDC_EP0OutCR &= ~UDC_EPCR_SN )
3863 #define __udc_disable_ep5out_snoop_mode() ( REG_UDC_EP5OutCR &= ~UDC_EPCR_SN )
3864 #define __udc_disable_ep6out_snoop_mode() ( REG_UDC_EP6OutCR &= ~UDC_EPCR_SN )
3865 #define __udc_disable_ep7out_snoop_mode() ( REG_UDC_EP7OutCR &= ~UDC_EPCR_SN )
3867 #define __udc_flush_ep0in_fifo() ( REG_UDC_EP0InCR |= UDC_EPCR_F )
3868 #define __udc_flush_ep1in_fifo() ( REG_UDC_EP1InCR |= UDC_EPCR_F )
3869 #define __udc_flush_ep2in_fifo() ( REG_UDC_EP2InCR |= UDC_EPCR_F )
3870 #define __udc_flush_ep3in_fifo() ( REG_UDC_EP3InCR |= UDC_EPCR_F )
3871 #define __udc_flush_ep4in_fifo() ( REG_UDC_EP4InCR |= UDC_EPCR_F )
3873 #define __udc_unflush_ep0in_fifo() ( REG_UDC_EP0InCR &= ~UDC_EPCR_F )
3874 #define __udc_unflush_ep1in_fifo() ( REG_UDC_EP1InCR &= ~UDC_EPCR_F )
3875 #define __udc_unflush_ep2in_fifo() ( REG_UDC_EP2InCR &= ~UDC_EPCR_F )
3876 #define __udc_unflush_ep3in_fifo() ( REG_UDC_EP3InCR &= ~UDC_EPCR_F )
3877 #define __udc_unflush_ep4in_fifo() ( REG_UDC_EP4InCR &= ~UDC_EPCR_F )
3879 #define __udc_enable_ep0in_stall() ( REG_UDC_EP0InCR |= UDC_EPCR_S )
3880 #define __udc_enable_ep0out_stall() ( REG_UDC_EP0OutCR |= UDC_EPCR_S )
3881 #define __udc_enable_ep1in_stall() ( REG_UDC_EP1InCR |= UDC_EPCR_S )
3882 #define __udc_enable_ep2in_stall() ( REG_UDC_EP2InCR |= UDC_EPCR_S )
3883 #define __udc_enable_ep3in_stall() ( REG_UDC_EP3InCR |= UDC_EPCR_S )
3884 #define __udc_enable_ep4in_stall() ( REG_UDC_EP4InCR |= UDC_EPCR_S )
3885 #define __udc_enable_ep5out_stall() ( REG_UDC_EP5OutCR |= UDC_EPCR_S )
3886 #define __udc_enable_ep6out_stall() ( REG_UDC_EP6OutCR |= UDC_EPCR_S )
3887 #define __udc_enable_ep7out_stall() ( REG_UDC_EP7OutCR |= UDC_EPCR_S )
3889 #define __udc_disable_ep0in_stall() ( REG_UDC_EP0InCR &= ~UDC_EPCR_S )
3890 #define __udc_disable_ep0out_stall() ( REG_UDC_EP0OutCR &= ~UDC_EPCR_S )
3891 #define __udc_disable_ep1in_stall() ( REG_UDC_EP1InCR &= ~UDC_EPCR_S )
3892 #define __udc_disable_ep2in_stall() ( REG_UDC_EP2InCR &= ~UDC_EPCR_S )
3893 #define __udc_disable_ep3in_stall() ( REG_UDC_EP3InCR &= ~UDC_EPCR_S )
3894 #define __udc_disable_ep4in_stall() ( REG_UDC_EP4InCR &= ~UDC_EPCR_S )
3895 #define __udc_disable_ep5out_stall() ( REG_UDC_EP5OutCR &= ~UDC_EPCR_S )
3896 #define __udc_disable_ep6out_stall() ( REG_UDC_EP6OutCR &= ~UDC_EPCR_S )
3897 #define __udc_disable_ep7out_stall() ( REG_UDC_EP7OutCR &= ~UDC_EPCR_S )
3900 #define __udc_ep0out_packet_size() \
3901 ( (REG_UDC_EP0OutSR & UDC_EPSR_RXPKTSIZE_MASK) >> UDC_EPSR_RXPKTSIZE_BIT )
3902 #define __udc_ep5out_packet_size() \
3903 ( (REG_UDC_EP5OutSR & UDC_EPSR_RXPKTSIZE_MASK) >> UDC_EPSR_RXPKTSIZE_BIT )
3904 #define __udc_ep6out_packet_size() \
3905 ( (REG_UDC_EP6OutSR & UDC_EPSR_RXPKTSIZE_MASK) >> UDC_EPSR_RXPKTSIZE_BIT )
3906 #define __udc_ep7out_packet_size() \
3907 ( (REG_UDC_EP7OutSR & UDC_EPSR_RXPKTSIZE_MASK) >> UDC_EPSR_RXPKTSIZE_BIT )
3909 #define __udc_ep0in_received_intoken() ( (REG_UDC_EP0InSR & UDC_EPSR_IN) )
3910 #define __udc_ep1in_received_intoken() ( (REG_UDC_EP1InSR & UDC_EPSR_IN) )
3911 #define __udc_ep2in_received_intoken() ( (REG_UDC_EP2InSR & UDC_EPSR_IN) )
3912 #define __udc_ep3in_received_intoken() ( (REG_UDC_EP3InSR & UDC_EPSR_IN) )
3913 #define __udc_ep4in_received_intoken() ( (REG_UDC_EP4InSR & UDC_EPSR_IN) )
3915 #define __udc_ep0out_received_none() \
3916 ( (REG_UDC_EP0OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_NONE )
3917 #define __udc_ep0out_received_data() \
3918 ( (REG_UDC_EP0OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVDATA )
3919 #define __udc_ep0out_received_setup() \
3920 ( (REG_UDC_EP0OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVSETUP )
3922 #define __udc_ep5out_received_none() \
3923 ( (REG_UDC_EP5OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_NONE )
3924 #define __udc_ep5out_received_data() \
3925 ( (REG_UDC_EP5OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVDATA )
3926 #define __udc_ep5out_received_setup() \
3927 ( (REG_UDC_EP5OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVSETUP )
3929 #define __udc_ep6out_received_none() \
3930 ( (REG_UDC_EP6OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_NONE )
3931 #define __udc_ep6out_received_data() \
3932 ( (REG_UDC_EP6OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVDATA )
3933 #define __udc_ep6out_received_setup() \
3934 ( (REG_UDC_EP6OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVSETUP )
3936 #define __udc_ep7out_received_none() \
3937 ( (REG_UDC_EP7OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_NONE )
3938 #define __udc_ep7out_received_data() \
3939 ( (REG_UDC_EP7OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVDATA )
3940 #define __udc_ep7out_received_setup() \
3941 ( (REG_UDC_EP7OutSR & UDC_EPSR_OUT_MASK) == UDC_EPSR_OUT_RCVSETUP )
3943 /* ep7out ISO only */
3944 #define __udc_ep7out_get_pid() \
3945 ( (REG_UDC_EP7OutSR & UDC_EPSR_PID_MASK) >> UDC_EPSR_PID_BIT )
3948 #define __udc_ep0in_set_buffer_size(n) ( REG_UDC_EP0InBSR = (n) )
3949 #define __udc_ep1in_set_buffer_size(n) ( REG_UDC_EP1InBSR = (n) )
3950 #define __udc_ep2in_set_buffer_size(n) ( REG_UDC_EP2InBSR = (n) )
3951 #define __udc_ep3in_set_buffer_size(n) ( REG_UDC_EP3InBSR = (n) )
3952 #define __udc_ep4in_set_buffer_size(n) ( REG_UDC_EP4InBSR = (n) )
3954 #define __udc_ep0out_get_frame_number(n) ( UDC_EP0OutPFNR )
3955 #define __udc_ep5out_get_frame_number(n) ( UDC_EP5OutPFNR )
3956 #define __udc_ep6out_get_frame_number(n) ( UDC_EP6OutPFNR )
3957 #define __udc_ep7out_get_frame_number(n) ( UDC_EP7OutPFNR )
3960 #define __udc_ep0in_set_max_packet_size(n) ( REG_UDC_EP0InMPSR = (n) )
3961 #define __udc_ep0out_set_max_packet_size(n) ( REG_UDC_EP0OutMPSR = (n) )
3962 #define __udc_ep1in_set_max_packet_size(n) ( REG_UDC_EP1InMPSR = (n) )
3963 #define __udc_ep2in_set_max_packet_size(n) ( REG_UDC_EP2InMPSR = (n) )
3964 #define __udc_ep3in_set_max_packet_size(n) ( REG_UDC_EP3InMPSR = (n) )
3965 #define __udc_ep4in_set_max_packet_size(n) ( REG_UDC_EP4InMPSR = (n) )
3966 #define __udc_ep5out_set_max_packet_size(n) ( REG_UDC_EP5OutMPSR = (n) )
3967 #define __udc_ep6out_set_max_packet_size(n) ( REG_UDC_EP6OutMPSR = (n) )
3968 #define __udc_ep7out_set_max_packet_size(n) ( REG_UDC_EP7OutMPSR = (n) )
3970 /* set to 0xFFFF for UDC */
3971 #define __udc_set_setup_command_address(n) ( REG_UDC_STCMAR = (n) )
3973 /* Init and configure EPxInfR(x=0,1,2,3,4,5,6,7)
3974 * c: Configuration number to which this endpoint belongs
3975 * i: Interface number to which this endpoint belongs
3976 * a: Alternate setting to which this endpoint belongs
3977 * p: max Packet size of this endpoint
3980 #define __udc_ep0info_init(c,i,a,p) \
3981 do { \
3982 REG_UDC_EP0InfR &= ~UDC_EPInfR_MPS_MASK; \
3983 REG_UDC_EP0InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
3984 REG_UDC_EP0InfR &= ~UDC_EPInfR_ALTS_MASK; \
3985 REG_UDC_EP0InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
3986 REG_UDC_EP0InfR &= ~UDC_EPInfR_IFN_MASK; \
3987 REG_UDC_EP0InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
3988 REG_UDC_EP0InfR &= ~UDC_EPInfR_CGN_MASK; \
3989 REG_UDC_EP0InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
3990 REG_UDC_EP0InfR &= ~UDC_EPInfR_EPT_MASK; \
3991 REG_UDC_EP0InfR |= UDC_EPInfR_EPT_CTRL; \
3992 REG_UDC_EP0InfR &= ~UDC_EPInfR_EPD; \
3993 REG_UDC_EP0InfR |= UDC_EPInfR_EPD_OUT; \
3994 REG_UDC_EP0InfR &= ~UDC_EPInfR_EPN_MASK; \
3995 REG_UDC_EP0InfR |= (0 << UDC_EPInfR_EPN_BIT); \
3996 } while (0)
3998 #define __udc_ep1info_init(c,i,a,p) \
3999 do { \
4000 REG_UDC_EP1InfR &= ~UDC_EPInfR_MPS_MASK; \
4001 REG_UDC_EP1InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4002 REG_UDC_EP1InfR &= ~UDC_EPInfR_ALTS_MASK; \
4003 REG_UDC_EP1InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4004 REG_UDC_EP1InfR &= ~UDC_EPInfR_IFN_MASK; \
4005 REG_UDC_EP1InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4006 REG_UDC_EP1InfR &= ~UDC_EPInfR_CGN_MASK; \
4007 REG_UDC_EP1InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4008 REG_UDC_EP1InfR &= ~UDC_EPInfR_EPT_MASK; \
4009 REG_UDC_EP1InfR |= UDC_EPInfR_EPT_INTR; \
4010 REG_UDC_EP1InfR &= ~UDC_EPInfR_EPD; \
4011 REG_UDC_EP1InfR |= UDC_EPInfR_EPD_IN; \
4012 REG_UDC_EP1InfR &= ~UDC_EPInfR_EPN_MASK; \
4013 REG_UDC_EP1InfR |= (1 << UDC_EPInfR_EPN_BIT); \
4014 } while (0)
4016 #define __udc_ep2info_init(c,i,a,p) \
4017 do { \
4018 REG_UDC_EP2InfR &= ~UDC_EPInfR_MPS_MASK; \
4019 REG_UDC_EP2InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4020 REG_UDC_EP2InfR &= ~UDC_EPInfR_ALTS_MASK; \
4021 REG_UDC_EP2InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4022 REG_UDC_EP2InfR &= ~UDC_EPInfR_IFN_MASK; \
4023 REG_UDC_EP2InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4024 REG_UDC_EP2InfR &= ~UDC_EPInfR_CGN_MASK; \
4025 REG_UDC_EP2InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4026 REG_UDC_EP2InfR &= ~UDC_EPInfR_EPT_MASK; \
4027 REG_UDC_EP2InfR |= UDC_EPInfR_EPT_BULK; \
4028 REG_UDC_EP2InfR &= ~UDC_EPInfR_EPD; \
4029 REG_UDC_EP2InfR |= UDC_EPInfR_EPD_IN; \
4030 REG_UDC_EP2InfR &= ~UDC_EPInfR_EPN_MASK; \
4031 REG_UDC_EP2InfR |= (2 << UDC_EPInfR_EPN_BIT); \
4032 } while (0)
4034 #define __udc_ep3info_init(c,i,a,p) \
4035 do { \
4036 REG_UDC_EP3InfR &= ~UDC_EPInfR_MPS_MASK; \
4037 REG_UDC_EP3InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4038 REG_UDC_EP3InfR &= ~UDC_EPInfR_ALTS_MASK; \
4039 REG_UDC_EP3InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4040 REG_UDC_EP3InfR &= ~UDC_EPInfR_IFN_MASK; \
4041 REG_UDC_EP3InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4042 REG_UDC_EP3InfR &= ~UDC_EPInfR_CGN_MASK; \
4043 REG_UDC_EP3InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4044 REG_UDC_EP3InfR &= ~UDC_EPInfR_EPT_MASK; \
4045 REG_UDC_EP3InfR |= UDC_EPInfR_EPT_BULK; \
4046 REG_UDC_EP3InfR &= ~UDC_EPInfR_EPD; \
4047 REG_UDC_EP3InfR |= UDC_EPInfR_EPD_IN; \
4048 REG_UDC_EP3InfR &= ~UDC_EPInfR_EPN_MASK; \
4049 REG_UDC_EP3InfR |= (3 << UDC_EPInfR_EPN_BIT); \
4050 } while (0)
4052 #define __udc_ep4info_init(c,i,a,p) \
4053 do { \
4054 REG_UDC_EP4InfR &= ~UDC_EPInfR_MPS_MASK; \
4055 REG_UDC_EP4InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4056 REG_UDC_EP4InfR &= ~UDC_EPInfR_ALTS_MASK; \
4057 REG_UDC_EP4InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4058 REG_UDC_EP4InfR &= ~UDC_EPInfR_IFN_MASK; \
4059 REG_UDC_EP4InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4060 REG_UDC_EP4InfR &= ~UDC_EPInfR_CGN_MASK; \
4061 REG_UDC_EP4InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4062 REG_UDC_EP4InfR &= ~UDC_EPInfR_EPT_MASK; \
4063 REG_UDC_EP4InfR |= UDC_EPInfR_EPT_ISO; \
4064 REG_UDC_EP4InfR &= ~UDC_EPInfR_EPD; \
4065 REG_UDC_EP4InfR |= UDC_EPInfR_EPD_IN; \
4066 REG_UDC_EP4InfR &= ~UDC_EPInfR_EPN_MASK; \
4067 REG_UDC_EP4InfR |= (4 << UDC_EPInfR_EPN_BIT); \
4068 } while (0)
4070 #define __udc_ep5info_init(c,i,a,p) \
4071 do { \
4072 REG_UDC_EP5InfR &= ~UDC_EPInfR_MPS_MASK; \
4073 REG_UDC_EP5InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4074 REG_UDC_EP5InfR &= ~UDC_EPInfR_ALTS_MASK; \
4075 REG_UDC_EP5InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4076 REG_UDC_EP5InfR &= ~UDC_EPInfR_IFN_MASK; \
4077 REG_UDC_EP5InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4078 REG_UDC_EP5InfR &= ~UDC_EPInfR_CGN_MASK; \
4079 REG_UDC_EP5InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4080 REG_UDC_EP5InfR &= ~UDC_EPInfR_EPT_MASK; \
4081 REG_UDC_EP5InfR |= UDC_EPInfR_EPT_BULK; \
4082 REG_UDC_EP5InfR &= ~UDC_EPInfR_EPD; \
4083 REG_UDC_EP5InfR |= UDC_EPInfR_EPD_OUT; \
4084 REG_UDC_EP5InfR &= ~UDC_EPInfR_EPN_MASK; \
4085 REG_UDC_EP5InfR |= (5 << UDC_EPInfR_EPN_BIT); \
4086 } while (0)
4088 #define __udc_ep6info_init(c,i,a,p) \
4089 do { \
4090 REG_UDC_EP6InfR &= ~UDC_EPInfR_MPS_MASK; \
4091 REG_UDC_EP6InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4092 REG_UDC_EP6InfR &= ~UDC_EPInfR_ALTS_MASK; \
4093 REG_UDC_EP6InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4094 REG_UDC_EP6InfR &= ~UDC_EPInfR_IFN_MASK; \
4095 REG_UDC_EP6InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4096 REG_UDC_EP6InfR &= ~UDC_EPInfR_CGN_MASK; \
4097 REG_UDC_EP6InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4098 REG_UDC_EP6InfR &= ~UDC_EPInfR_EPT_MASK; \
4099 REG_UDC_EP6InfR |= UDC_EPInfR_EPT_BULK; \
4100 REG_UDC_EP6InfR &= ~UDC_EPInfR_EPD; \
4101 REG_UDC_EP6InfR |= UDC_EPInfR_EPD_OUT; \
4102 REG_UDC_EP6InfR &= ~UDC_EPInfR_EPN_MASK; \
4103 REG_UDC_EP6InfR |= (6 << UDC_EPInfR_EPN_BIT); \
4104 } while (0)
4106 #define __udc_ep7info_init(c,i,a,p) \
4107 do { \
4108 REG_UDC_EP7InfR &= ~UDC_EPInfR_MPS_MASK; \
4109 REG_UDC_EP7InfR |= ((p) << UDC_EPInfR_MPS_BIT); \
4110 REG_UDC_EP7InfR &= ~UDC_EPInfR_ALTS_MASK; \
4111 REG_UDC_EP7InfR |= ((a) << UDC_EPInfR_ALTS_BIT); \
4112 REG_UDC_EP7InfR &= ~UDC_EPInfR_IFN_MASK; \
4113 REG_UDC_EP7InfR |= ((i) << UDC_EPInfR_IFN_BIT); \
4114 REG_UDC_EP7InfR &= ~UDC_EPInfR_CGN_MASK; \
4115 REG_UDC_EP7InfR |= ((c) << UDC_EPInfR_CGN_BIT); \
4116 REG_UDC_EP7InfR &= ~UDC_EPInfR_EPT_MASK; \
4117 REG_UDC_EP7InfR |= UDC_EPInfR_EPT_ISO; \
4118 REG_UDC_EP7InfR &= ~UDC_EPInfR_EPD; \
4119 REG_UDC_EP7InfR |= UDC_EPInfR_EPD_OUT; \
4120 REG_UDC_EP7InfR &= ~UDC_EPInfR_EPN_MASK; \
4121 REG_UDC_EP7InfR |= (7 << UDC_EPInfR_EPN_BIT); \
4122 } while (0)
4125 /***************************************************************************
4126 * DMAC
4127 ***************************************************************************/
4129 /* n is the DMA channel (0 - 7) */
4131 #define __dmac_enable_all_channels() \
4132 ( REG_DMAC_DMACR |= DMAC_DMACR_DME | DMAC_DMACR_PR_ROUNDROBIN )
4133 #define __dmac_disable_all_channels() \
4134 ( REG_DMAC_DMACR &= ~DMAC_DMACR_DME )
4136 /* p=0,1,2,3 */
4137 #define __dmac_set_priority(p) \
4138 do { \
4139 REG_DMAC_DMACR &= ~DMAC_DMACR_PR_MASK; \
4140 REG_DMAC_DMACR |= ((p) << DMAC_DMACR_PR_BIT); \
4141 } while (0)
4143 #define __dmac_test_halt_error() ( REG_DMAC_DMACR & DMAC_DMACR_HTR )
4144 #define __dmac_test_addr_error() ( REG_DMAC_DMACR & DMAC_DMACR_AER )
4146 #define __dmac_enable_channel(n) \
4147 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_CHDE )
4148 #define __dmac_disable_channel(n) \
4149 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_CHDE )
4150 #define __dmac_channel_enabled(n) \
4151 ( REG_DMAC_DCCSR(n) & DMAC_DCCSR_CHDE )
4153 #define __dmac_channel_enable_irq(n) \
4154 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_TCIE )
4155 #define __dmac_channel_disable_irq(n) \
4156 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_TCIE )
4158 #define __dmac_channel_transmit_halt_detected(n) \
4159 ( REG_DMAC_DCCSR(n) & DMAC_DCCSR_HLT )
4160 #define __dmac_channel_transmit_end_detected(n) \
4161 ( REG_DMAC_DCCSR(n) & DMAC_DCCSR_TC )
4162 #define __dmac_channel_address_error_detected(n) \
4163 ( REG_DMAC_DCCSR(n) & DMAC_DCCSR_AR )
4165 #define __dmac_channel_clear_transmit_halt(n) \
4166 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_HLT )
4167 #define __dmac_channel_clear_transmit_end(n) \
4168 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_TC )
4169 #define __dmac_channel_clear_address_error(n) \
4170 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_AR )
4172 #define __dmac_channel_set_single_mode(n) \
4173 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_TM )
4174 #define __dmac_channel_set_block_mode(n) \
4175 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_TM )
4177 #define __dmac_channel_set_transfer_unit_32bit(n) \
4178 do { \
4179 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DS_MASK; \
4180 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DS_32b; \
4181 } while (0)
4183 #define __dmac_channel_set_transfer_unit_16bit(n) \
4184 do { \
4185 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DS_MASK; \
4186 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DS_16b; \
4187 } while (0)
4189 #define __dmac_channel_set_transfer_unit_8bit(n) \
4190 do { \
4191 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DS_MASK; \
4192 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DS_8b; \
4193 } while (0)
4195 #define __dmac_channel_set_transfer_unit_16byte(n) \
4196 do { \
4197 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DS_MASK; \
4198 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DS_16B; \
4199 } while (0)
4201 #define __dmac_channel_set_transfer_unit_32byte(n) \
4202 do { \
4203 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DS_MASK; \
4204 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DS_32B; \
4205 } while (0)
4207 /* w=8,16,32 */
4208 #define __dmac_channel_set_dest_port_width(n,w) \
4209 do { \
4210 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DWDH_MASK; \
4211 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DWDH_##w; \
4212 } while (0)
4214 /* w=8,16,32 */
4215 #define __dmac_channel_set_src_port_width(n,w) \
4216 do { \
4217 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_SWDH_MASK; \
4218 REG_DMAC_DCCSR(n) |= DMAC_DCCSR_SWDH_##w; \
4219 } while (0)
4221 /* v=0-15 */
4222 #define __dmac_channel_set_rdil(n,v) \
4223 do { \
4224 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_RDIL_MASK; \
4225 REG_DMAC_DCCSR(n) |= ((v) << DMAC_DCCSR_RDIL_BIT); \
4226 } while (0)
4228 #define __dmac_channel_dest_addr_fixed(n) \
4229 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_DAM )
4230 #define __dmac_channel_dest_addr_increment(n) \
4231 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_DAM )
4233 #define __dmac_channel_src_addr_fixed(n) \
4234 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_SAM )
4235 #define __dmac_channel_src_addr_increment(n) \
4236 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_SAM )
4238 #define __dmac_channel_set_eop_high(n) \
4239 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_EOPM )
4240 #define __dmac_channel_set_eop_low(n) \
4241 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_EOPM )
4243 #define __dmac_channel_set_erdm(n,m) \
4244 do { \
4245 REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_SWDH_MASK; \
4246 REG_DMAC_DCCSR(n) |= ((m) << DMAC_DCCSR_ERDM_BIT); \
4247 } while (0)
4249 #define __dmac_channel_set_eackm(n) \
4250 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_EACKM )
4251 #define __dmac_channel_clear_eackm(n) \
4252 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_EACKM )
4254 #define __dmac_channel_set_eacks(n) \
4255 ( REG_DMAC_DCCSR(n) |= DMAC_DCCSR_EACKS )
4256 #define __dmac_channel_clear_eacks(n) \
4257 ( REG_DMAC_DCCSR(n) &= ~DMAC_DCCSR_EACKS )
4260 #define __dmac_channel_irq_detected(n) \
4261 ( REG_DMAC_DCCSR(n) & (DMAC_DCCSR_TC | DMAC_DCCSR_AR) )
4263 static __inline__ int __dmac_get_irq(void)
4265 int i;
4266 for (i=0;i<NUM_DMA;i++)
4267 if (__dmac_channel_irq_detected(i))
4268 return i;
4269 return -1;
4272 /***************************************************************************
4273 * AIC (AC'97 & I2S Controller)
4274 ***************************************************************************/
4276 #define __aic_enable() ( REG_AIC_FR |= AIC_FR_ENB )
4277 #define __aic_disable() ( REG_AIC_FR &= ~AIC_FR_ENB )
4278 #define __aic_reset() ( REG_AIC_FR |= AIC_FR_RST )
4279 #define __aic_select_ac97() ( REG_AIC_FR &= ~AIC_FR_AUSEL )
4280 #define __aic_select_i2s() ( REG_AIC_FR |= AIC_FR_AUSEL )
4282 #define __i2s_as_master() ( REG_AIC_FR |= AIC_FR_BCKD | AIC_FR_SYNCD )
4283 #define __i2s_as_slave() ( REG_AIC_FR &= ~(AIC_FR_BCKD | AIC_FR_SYNCD) )
4285 #define __aic_set_transmit_trigger(n) \
4286 do { \
4287 REG_AIC_FR &= ~AIC_FR_TFTH_MASK; \
4288 REG_AIC_FR |= ((n) << AIC_FR_TFTH_BIT); \
4289 } while(0)
4291 #define __aic_set_receive_trigger(n) \
4292 do { \
4293 REG_AIC_FR &= ~AIC_FR_RFTH_MASK; \
4294 REG_AIC_FR |= ((n) << AIC_FR_RFTH_BIT); \
4295 } while(0)
4297 #define __aic_enable_record() ( REG_AIC_CR |= AIC_CR_EREC )
4298 #define __aic_disable_record() ( REG_AIC_CR &= ~AIC_CR_EREC )
4299 #define __aic_enable_replay() ( REG_AIC_CR |= AIC_CR_ERPL )
4300 #define __aic_disable_replay() ( REG_AIC_CR &= ~AIC_CR_ERPL )
4301 #define __aic_enable_loopback() ( REG_AIC_CR |= AIC_CR_ENLBF )
4302 #define __aic_disable_loopback() ( REG_AIC_CR &= ~AIC_CR_ENLBF )
4304 #define __aic_flush_fifo() ( REG_AIC_CR |= AIC_CR_FLUSH )
4305 #define __aic_unflush_fifo() ( REG_AIC_CR &= ~AIC_CR_FLUSH )
4307 #define __aic_enable_transmit_intr() \
4308 ( REG_AIC_CR |= (AIC_CR_ETFS | AIC_CR_ETUR) )
4309 #define __aic_disable_transmit_intr() \
4310 ( REG_AIC_CR &= ~(AIC_CR_ETFS | AIC_CR_ETUR) )
4311 #define __aic_enable_receive_intr() \
4312 ( REG_AIC_CR |= (AIC_CR_ERFS | AIC_CR_EROR) )
4313 #define __aic_disable_receive_intr() \
4314 ( REG_AIC_CR &= ~(AIC_CR_ERFS | AIC_CR_EROR) )
4316 #define __aic_enable_transmit_dma() ( REG_AIC_CR |= AIC_CR_TDMS )
4317 #define __aic_disable_transmit_dma() ( REG_AIC_CR &= ~AIC_CR_TDMS )
4318 #define __aic_enable_receive_dma() ( REG_AIC_CR |= AIC_CR_RDMS )
4319 #define __aic_disable_receive_dma() ( REG_AIC_CR &= ~AIC_CR_RDMS )
4321 #define AC97_PCM_XS_L_FRONT AIC_ACCR1_XS_SLOT3
4322 #define AC97_PCM_XS_R_FRONT AIC_ACCR1_XS_SLOT4
4323 #define AC97_PCM_XS_CENTER AIC_ACCR1_XS_SLOT6
4324 #define AC97_PCM_XS_L_SURR AIC_ACCR1_XS_SLOT7
4325 #define AC97_PCM_XS_R_SURR AIC_ACCR1_XS_SLOT8
4326 #define AC97_PCM_XS_LFE AIC_ACCR1_XS_SLOT9
4328 #define AC97_PCM_RS_L_FRONT AIC_ACCR1_RS_SLOT3
4329 #define AC97_PCM_RS_R_FRONT AIC_ACCR1_RS_SLOT4
4330 #define AC97_PCM_RS_CENTER AIC_ACCR1_RS_SLOT6
4331 #define AC97_PCM_RS_L_SURR AIC_ACCR1_RS_SLOT7
4332 #define AC97_PCM_RS_R_SURR AIC_ACCR1_RS_SLOT8
4333 #define AC97_PCM_RS_LFE AIC_ACCR1_RS_SLOT9
4335 #define __ac97_set_xs_none() ( REG_AIC_ACCR1 &= ~AIC_ACCR1_XS_MASK )
4336 #define __ac97_set_xs_mono() \
4337 do { \
4338 REG_AIC_ACCR1 &= ~AIC_ACCR1_XS_MASK; \
4339 REG_AIC_ACCR1 |= AC97_PCM_XS_R_FRONT; \
4340 } while(0)
4341 #define __ac97_set_xs_stereo() \
4342 do { \
4343 REG_AIC_ACCR1 &= ~AIC_ACCR1_XS_MASK; \
4344 REG_AIC_ACCR1 |= AC97_PCM_XS_L_FRONT | AC97_PCM_XS_R_FRONT; \
4345 } while(0)
4347 /* In fact, only stereo is support now. */
4348 #define __ac97_set_rs_none() ( REG_AIC_ACCR1 &= ~AIC_ACCR1_RS_MASK )
4349 #define __ac97_set_rs_mono() \
4350 do { \
4351 REG_AIC_ACCR1 &= ~AIC_ACCR1_RS_MASK; \
4352 REG_AIC_ACCR1 |= AC97_PCM_RS_R_FRONT; \
4353 } while(0)
4354 #define __ac97_set_rs_stereo() \
4355 do { \
4356 REG_AIC_ACCR1 &= ~AIC_ACCR1_RS_MASK; \
4357 REG_AIC_ACCR1 |= AC97_PCM_RS_L_FRONT | AC97_PCM_RS_R_FRONT; \
4358 } while(0)
4360 #define __ac97_warm_reset_codec() \
4361 do { \
4362 REG_AIC_ACCR2 |= AIC_ACCR2_SA; \
4363 REG_AIC_ACCR2 |= AIC_ACCR2_SS; \
4364 udelay(1); \
4365 REG_AIC_ACCR2 &= ~AIC_ACCR2_SS; \
4366 REG_AIC_ACCR2 &= ~AIC_ACCR2_SA; \
4367 } while (0)
4369 //#define Jz_AC97_RESET_BUG 1
4370 #ifndef Jz_AC97_RESET_BUG
4371 #define __ac97_cold_reset_codec() \
4372 do { \
4373 REG_AIC_ACCR2 |= AIC_ACCR2_SA; \
4374 REG_AIC_ACCR2 &= ~AIC_ACCR2_SS; \
4375 REG_AIC_ACCR2 |= AIC_ACCR2_SR; \
4376 udelay(1); \
4377 REG_AIC_ACCR2 &= ~AIC_ACCR2_SR; \
4378 REG_AIC_ACCR2 &= ~AIC_ACCR2_SA; \
4379 } while (0)
4380 #else
4381 #define __ac97_cold_reset_codec() \
4382 do { \
4383 __gpio_as_output(111); /* SDATA_OUT */ \
4384 __gpio_as_output(110); /* SDATA_IN */ \
4385 __gpio_as_output(112); /* SYNC */ \
4386 __gpio_as_output(114); /* RESET# */ \
4387 __gpio_clear_pin(111); \
4388 __gpio_clear_pin(110); \
4389 __gpio_clear_pin(112); \
4390 __gpio_clear_pin(114); \
4391 udelay(2); \
4392 __gpio_set_pin(114); \
4393 udelay(1); \
4394 __gpio_as_ac97(); \
4395 } while (0)
4396 #endif
4398 /* n=8,16,18,20 */
4399 #define __ac97_set_iass(n) \
4400 ( REG_AIC_ACCR2 = (REG_AIC_ACCR2 & ~AIC_ACCR2_IASS_MASK) | AIC_ACCR2_IASS_##n##BIT )
4401 #define __ac97_set_oass(n) \
4402 ( REG_AIC_ACCR2 = (REG_AIC_ACCR2 & ~AIC_ACCR2_OASS_MASK) | AIC_ACCR2_OASS_##n##BIT )
4404 #define __i2s_select_i2s() ( REG_AIC_I2SCR &= ~AIC_I2SCR_AMSL )
4405 #define __i2s_select_left_justified() ( REG_AIC_I2SCR |= AIC_I2SCR_AMSL )
4407 /* n=8,16,18,20,24 */
4408 #define __i2s_set_sample_size(n) \
4409 ( REG_AIC_I2SCR |= (REG_AIC_I2SCR & ~AIC_I2SCR_WL_MASK) | AIC_I2SCR_WL_##n##BIT )
4411 #define __i2s_stop_clock() ( REG_AIC_I2SCR |= AIC_I2SCR_STPBK )
4412 #define __i2s_start_clock() ( REG_AIC_I2SCR &= ~AIC_I2SCR_STPBK )
4414 #define __aic_transmit_request() ( REG_AIC_SR & AIC_SR_TFS )
4415 #define __aic_receive_request() ( REG_AIC_SR & AIC_SR_RFS )
4416 #define __aic_transmit_underrun() ( REG_AIC_SR & AIC_SR_TUR )
4417 #define __aic_receive_overrun() ( REG_AIC_SR & AIC_SR_ROR )
4419 #define __aic_clear_errors() ( REG_AIC_SR &= ~(AIC_SR_TUR | AIC_SR_ROR) )
4421 #define __aic_get_transmit_resident() \
4422 ( (REG_AIC_SR & AIC_SR_TFL_MASK) >> AIC_SR_TFL_BIT )
4423 #define __aic_get_receive_count() \
4424 ( (REG_AIC_SR & AIC_SR_RFL_MASK) >> AIC_SR_RFL_BIT )
4426 #define __ac97_command_transmitted() ( REG_AIC_ACSR & AIC_ACSR_CADT )
4427 #define __ac97_status_received() ( REG_AIC_ACSR & AIC_ACSR_SADR )
4428 #define __ac97_status_receive_timeout() ( REG_AIC_ACSR & AIC_ACSR_RSTO )
4429 #define __ac97_codec_is_low_power_mode() ( REG_AIC_ACSR & AIC_ACSR_CLPM )
4430 #define __ac97_codec_is_ready() ( REG_AIC_ACSR & AIC_ACSR_CRDY )
4432 #define __i2s_is_busy() ( REG_AIC_I2SSR & AIC_I2SSR_BSY )
4434 #define CODEC_READ_CMD (1 << 19)
4435 #define CODEC_WRITE_CMD (0 << 19)
4436 #define CODEC_REG_INDEX_BIT 12
4437 #define CODEC_REG_INDEX_MASK (0x7f << CODEC_REG_INDEX_BIT) /* 18:12 */
4438 #define CODEC_REG_DATA_BIT 4
4439 #define CODEC_REG_DATA_MASK (0x0ffff << 4) /* 19:4 */
4441 #define __ac97_out_rcmd_addr(reg) \
4442 do { \
4443 REG_AIC_ACCAR = CODEC_READ_CMD | ((reg) << CODEC_REG_INDEX_BIT); \
4444 } while (0)
4446 #define __ac97_out_wcmd_addr(reg) \
4447 do { \
4448 REG_AIC_ACCAR = CODEC_WRITE_CMD | ((reg) << CODEC_REG_INDEX_BIT); \
4449 } while (0)
4451 #define __ac97_out_data(value) \
4452 do { \
4453 REG_AIC_ACCDR = ((value) << CODEC_REG_DATA_BIT); \
4454 } while (0)
4456 #define __ac97_in_data() \
4457 ( (REG_AIC_ACSDR & CODEC_REG_DATA_MASK) >> CODEC_REG_DATA_BIT )
4459 #define __ac97_in_status_addr() \
4460 ( (REG_AIC_ACSAR & CODEC_REG_INDEX_MASK) >> CODEC_REG_INDEX_BIT )
4462 #define __i2s_set_sample_rate(i2sclk, sync) \
4463 ( REG_AIC_I2SDIV = ((i2sclk) / (4*64)) / (sync) )
4465 #define __aic_write_tfifo(v) ( REG_AIC_DR = (v) )
4466 #define __aic_read_rfifo() ( REG_AIC_DR )
4469 // Define next ops for AC97 compatible
4472 #define AC97_ACSR AIC_ACSR
4474 #define __ac97_enable() __aic_enable(); __aic_select_ac97()
4475 #define __ac97_disable() __aic_disable()
4476 #define __ac97_reset() __aic_reset()
4478 #define __ac97_set_transmit_trigger(n) __aic_set_transmit_trigger(n)
4479 #define __ac97_set_receive_trigger(n) __aic_set_receive_trigger(n)
4481 #define __ac97_enable_record() __aic_enable_record()
4482 #define __ac97_disable_record() __aic_disable_record()
4483 #define __ac97_enable_replay() __aic_enable_replay()
4484 #define __ac97_disable_replay() __aic_disable_replay()
4485 #define __ac97_enable_loopback() __aic_enable_loopback()
4486 #define __ac97_disable_loopback() __aic_disable_loopback()
4488 #define __ac97_enable_transmit_dma() __aic_enable_transmit_dma()
4489 #define __ac97_disable_transmit_dma() __aic_disable_transmit_dma()
4490 #define __ac97_enable_receive_dma() __aic_enable_receive_dma()
4491 #define __ac97_disable_receive_dma() __aic_disable_receive_dma()
4493 #define __ac97_transmit_request() __aic_transmit_request()
4494 #define __ac97_receive_request() __aic_receive_request()
4495 #define __ac97_transmit_underrun() __aic_transmit_underrun()
4496 #define __ac97_receive_overrun() __aic_receive_overrun()
4498 #define __ac97_clear_errors() __aic_clear_errors()
4500 #define __ac97_get_transmit_resident() __aic_get_transmit_resident()
4501 #define __ac97_get_receive_count() __aic_get_receive_count()
4503 #define __ac97_enable_transmit_intr() __aic_enable_transmit_intr()
4504 #define __ac97_disable_transmit_intr() __aic_disable_transmit_intr()
4505 #define __ac97_enable_receive_intr() __aic_enable_receive_intr()
4506 #define __ac97_disable_receive_intr() __aic_disable_receive_intr()
4508 #define __ac97_write_tfifo(v) __aic_write_tfifo(v)
4509 #define __ac97_read_rfifo() __aic_read_rfifo()
4512 // Define next ops for I2S compatible
4515 #define I2S_ACSR AIC_I2SSR
4517 #define __i2s_enable() __aic_enable(); __aic_select_i2s()
4518 #define __i2s_disable() __aic_disable()
4519 #define __i2s_reset() __aic_reset()
4521 #define __i2s_set_transmit_trigger(n) __aic_set_transmit_trigger(n)
4522 #define __i2s_set_receive_trigger(n) __aic_set_receive_trigger(n)
4524 #define __i2s_enable_record() __aic_enable_record()
4525 #define __i2s_disable_record() __aic_disable_record()
4526 #define __i2s_enable_replay() __aic_enable_replay()
4527 #define __i2s_disable_replay() __aic_disable_replay()
4528 #define __i2s_enable_loopback() __aic_enable_loopback()
4529 #define __i2s_disable_loopback() __aic_disable_loopback()
4531 #define __i2s_enable_transmit_dma() __aic_enable_transmit_dma()
4532 #define __i2s_disable_transmit_dma() __aic_disable_transmit_dma()
4533 #define __i2s_enable_receive_dma() __aic_enable_receive_dma()
4534 #define __i2s_disable_receive_dma() __aic_disable_receive_dma()
4536 #define __i2s_transmit_request() __aic_transmit_request()
4537 #define __i2s_receive_request() __aic_receive_request()
4538 #define __i2s_transmit_underrun() __aic_transmit_underrun()
4539 #define __i2s_receive_overrun() __aic_receive_overrun()
4541 #define __i2s_clear_errors() __aic_clear_errors()
4543 #define __i2s_get_transmit_resident() __aic_get_transmit_resident()
4544 #define __i2s_get_receive_count() __aic_get_receive_count()
4546 #define __i2s_enable_transmit_intr() __aic_enable_transmit_intr()
4547 #define __i2s_disable_transmit_intr() __aic_disable_transmit_intr()
4548 #define __i2s_enable_receive_intr() __aic_enable_receive_intr()
4549 #define __i2s_disable_receive_intr() __aic_disable_receive_intr()
4551 #define __i2s_write_tfifo(v) __aic_write_tfifo(v)
4552 #define __i2s_read_rfifo() __aic_read_rfifo()
4554 #define __i2s_reset_codec() \
4555 do { \
4556 __gpio_as_output(111); /* SDATA_OUT */ \
4557 __gpio_as_input(110); /* SDATA_IN */ \
4558 __gpio_as_output(112); /* SYNC */ \
4559 __gpio_as_output(114); /* RESET# */ \
4560 __gpio_clear_pin(111); \
4561 __gpio_clear_pin(110); \
4562 __gpio_clear_pin(112); \
4563 __gpio_clear_pin(114); \
4564 __gpio_as_i2s_master(); \
4565 } while (0)
4568 /***************************************************************************
4569 * LCD
4570 ***************************************************************************/
4572 #define __lcd_set_dis() ( REG_LCD_CTRL |= LCD_CTRL_DIS )
4573 #define __lcd_clr_dis() ( REG_LCD_CTRL &= ~LCD_CTRL_DIS )
4575 #define __lcd_set_ena() ( REG_LCD_CTRL |= LCD_CTRL_ENA )
4576 #define __lcd_clr_ena() ( REG_LCD_CTRL &= ~LCD_CTRL_ENA )
4578 /* n=1,2,4,8,16 */
4579 #define __lcd_set_bpp(n) \
4580 ( REG_LCD_CTRL = (REG_LCD_CTRL & ~LCD_CTRL_BPP_MASK) | LCD_CTRL_BPP_##n )
4582 /* n=4,8,16 */
4583 #define __lcd_set_burst_length(n) \
4584 do { \
4585 REG_LCD_CTRL &= ~LCD_CTRL_BST_MASK; \
4586 REG_LCD_CTRL |= LCD_CTRL_BST_n##; \
4587 } while (0)
4589 #define __lcd_select_rgb565() ( REG_LCD_CTRL &= ~LCD_CTRL_RGB555 )
4590 #define __lcd_select_rgb555() ( REG_LCD_CTRL |= LCD_CTRL_RGB555 )
4592 #define __lcd_set_ofup() ( REG_LCD_CTRL |= LCD_CTRL_OFUP )
4593 #define __lcd_clr_ofup() ( REG_LCD_CTRL &= ~LCD_CTRL_OFUP )
4595 /* n=2,4,16 */
4596 #define __lcd_set_stn_frc(n) \
4597 do { \
4598 REG_LCD_CTRL &= ~LCD_CTRL_FRC_MASK; \
4599 REG_LCD_CTRL |= LCD_CTRL_FRC_n##; \
4600 } while (0)
4603 #define __lcd_pixel_endian_little() ( REG_LCD_CTRL |= LCD_CTRL_PEDN )
4604 #define __lcd_pixel_endian_big() ( REG_LCD_CTRL &= ~LCD_CTRL_PEDN )
4606 #define __lcd_reverse_byte_endian() ( REG_LCD_CTRL |= LCD_CTRL_BEDN )
4607 #define __lcd_normal_byte_endian() ( REG_LCD_CTRL &= ~LCD_CTRL_BEDN )
4609 #define __lcd_enable_eof_intr() ( REG_LCD_CTRL |= LCD_CTRL_EOFM )
4610 #define __lcd_disable_eof_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_EOFM )
4612 #define __lcd_enable_sof_intr() ( REG_LCD_CTRL |= LCD_CTRL_SOFM )
4613 #define __lcd_disable_sof_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_SOFM )
4615 #define __lcd_enable_ofu_intr() ( REG_LCD_CTRL |= LCD_CTRL_OFUM )
4616 #define __lcd_disable_ofu_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_OFUM )
4618 #define __lcd_enable_ifu0_intr() ( REG_LCD_CTRL |= LCD_CTRL_IFUM0 )
4619 #define __lcd_disable_ifu0_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_IFUM0 )
4621 #define __lcd_enable_ifu1_intr() ( REG_LCD_CTRL |= LCD_CTRL_IFUM1 )
4622 #define __lcd_disable_ifu1_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_IFUM1 )
4624 #define __lcd_enable_ldd_intr() ( REG_LCD_CTRL |= LCD_CTRL_LDDM )
4625 #define __lcd_disable_ldd_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_LDDM )
4627 #define __lcd_enable_qd_intr() ( REG_LCD_CTRL |= LCD_CTRL_QDM )
4628 #define __lcd_disable_qd_intr() ( REG_LCD_CTRL &= ~LCD_CTRL_QDM )
4631 /* LCD status register indication */
4633 #define __lcd_quick_disable_done() ( REG_LCD_STATE & LCD_STATE_QD )
4634 #define __lcd_disable_done() ( REG_LCD_STATE & LCD_STATE_LDD )
4635 #define __lcd_infifo0_underrun() ( REG_LCD_STATE & LCD_STATE_IFU0 )
4636 #define __lcd_infifo1_underrun() ( REG_LCD_STATE & LCD_STATE_IFU1 )
4637 #define __lcd_outfifo_underrun() ( REG_LCD_STATE & LCD_STATE_OFU )
4638 #define __lcd_start_of_frame() ( REG_LCD_STATE & LCD_STATE_SOF )
4639 #define __lcd_end_of_frame() ( REG_LCD_STATE & LCD_STATE_EOF )
4641 #define __lcd_clr_outfifounderrun() ( REG_LCD_STATE &= ~LCD_STATE_OFU )
4642 #define __lcd_clr_sof() ( REG_LCD_STATE &= ~LCD_STATE_SOF )
4643 #define __lcd_clr_eof() ( REG_LCD_STATE &= ~LCD_STATE_EOF )
4645 #define __lcd_panel_white() ( REG_LCD_DEV |= LCD_DEV_WHITE )
4646 #define __lcd_panel_black() ( REG_LCD_DEV &= ~LCD_DEV_WHITE )
4648 /* n=1,2,4,8 for single mono-STN
4649 * n=4,8 for dual mono-STN
4651 #define __lcd_set_panel_datawidth(n) \
4652 do { \
4653 REG_LCD_DEV &= ~LCD_DEV_PDW_MASK; \
4654 REG_LCD_DEV |= LCD_DEV_PDW_n##; \
4655 } while (0)
4657 /* m=LCD_DEV_MODE_GENERUIC_TFT_xxx */
4658 #define __lcd_set_panel_mode(m) \
4659 do { \
4660 REG_LCD_DEV &= ~LCD_DEV_MODE_MASK; \
4661 REG_LCD_DEV |= (m); \
4662 } while(0)
4664 /* n = 0-255 */
4665 #define __lcd_disable_ac_bias() ( REG_LCD_IO = 0xff )
4666 #define __lcd_set_ac_bias(n) \
4667 do { \
4668 REG_LCD_IO &= ~LCD_IO_ACB_MASK; \
4669 REG_LCD_IO |= ((n) << LCD_IO_ACB_BIT); \
4670 } while(0)
4672 #define __lcd_io_set_dir() ( REG_LCD_IO |= LCD_IO_DIR )
4673 #define __lcd_io_clr_dir() ( REG_LCD_IO &= ~LCD_IO_DIR )
4675 #define __lcd_io_set_dep() ( REG_LCD_IO |= LCD_IO_DEP )
4676 #define __lcd_io_clr_dep() ( REG_LCD_IO &= ~LCD_IO_DEP )
4678 #define __lcd_io_set_vsp() ( REG_LCD_IO |= LCD_IO_VSP )
4679 #define __lcd_io_clr_vsp() ( REG_LCD_IO &= ~LCD_IO_VSP )
4681 #define __lcd_io_set_hsp() ( REG_LCD_IO |= LCD_IO_HSP )
4682 #define __lcd_io_clr_hsp() ( REG_LCD_IO &= ~LCD_IO_HSP )
4684 #define __lcd_io_set_pcp() ( REG_LCD_IO |= LCD_IO_PCP )
4685 #define __lcd_io_clr_pcp() ( REG_LCD_IO &= ~LCD_IO_PCP )
4687 #define __lcd_vsync_get_vps() \
4688 ( (REG_LCD_VSYNC & LCD_VSYNC_VPS_MASK) >> LCD_VSYNC_VPS_BIT )
4690 #define __lcd_vsync_get_vpe() \
4691 ( (REG_LCD_VSYNC & LCD_VSYNC_VPE_MASK) >> LCD_VSYNC_VPE_BIT )
4692 #define __lcd_vsync_set_vpe(n) \
4693 do { \
4694 REG_LCD_VSYNC &= ~LCD_VSYNC_VPE_MASK; \
4695 REG_LCD_VSYNC |= (n) << LCD_VSYNC_VPE_BIT; \
4696 } while (0)
4698 #define __lcd_hsync_get_hps() \
4699 ( (REG_LCD_HSYNC & LCD_HSYNC_HPS_MASK) >> LCD_HSYNC_HPS_BIT )
4700 #define __lcd_hsync_set_hps(n) \
4701 do { \
4702 REG_LCD_HSYNC &= ~LCD_HSYNC_HPS_MASK; \
4703 REG_LCD_HSYNC |= (n) << LCD_HSYNC_HPS_BIT; \
4704 } while (0)
4706 #define __lcd_hsync_get_hpe() \
4707 ( (REG_LCD_HSYNC & LCD_HSYNC_HPE_MASK) >> LCD_VSYNC_HPE_BIT )
4708 #define __lcd_hsync_set_hpe(n) \
4709 do { \
4710 REG_LCD_HSYNC &= ~LCD_HSYNC_HPE_MASK; \
4711 REG_LCD_HSYNC |= (n) << LCD_HSYNC_HPE_BIT; \
4712 } while (0)
4714 #define __lcd_vat_get_ht() \
4715 ( (REG_LCD_VAT & LCD_VAT_HT_MASK) >> LCD_VAT_HT_BIT )
4716 #define __lcd_vat_set_ht(n) \
4717 do { \
4718 REG_LCD_VAT &= ~LCD_VAT_HT_MASK; \
4719 REG_LCD_VAT |= (n) << LCD_VAT_HT_BIT; \
4720 } while (0)
4722 #define __lcd_vat_get_vt() \
4723 ( (REG_LCD_VAT & LCD_VAT_VT_MASK) >> LCD_VAT_VT_BIT )
4724 #define __lcd_vat_set_vt(n) \
4725 do { \
4726 REG_LCD_VAT &= ~LCD_VAT_VT_MASK; \
4727 REG_LCD_VAT |= (n) << LCD_VAT_VT_BIT; \
4728 } while (0)
4730 #define __lcd_dah_get_hds() \
4731 ( (REG_LCD_DAH & LCD_DAH_HDS_MASK) >> LCD_DAH_HDS_BIT )
4732 #define __lcd_dah_set_hds(n) \
4733 do { \
4734 REG_LCD_DAH &= ~LCD_DAH_HDS_MASK; \
4735 REG_LCD_DAH |= (n) << LCD_DAH_HDS_BIT; \
4736 } while (0)
4738 #define __lcd_dah_get_hde() \
4739 ( (REG_LCD_DAH & LCD_DAH_HDE_MASK) >> LCD_DAH_HDE_BIT )
4740 #define __lcd_dah_set_hde(n) \
4741 do { \
4742 REG_LCD_DAH &= ~LCD_DAH_HDE_MASK; \
4743 REG_LCD_DAH |= (n) << LCD_DAH_HDE_BIT; \
4744 } while (0)
4746 #define __lcd_dav_get_vds() \
4747 ( (REG_LCD_DAV & LCD_DAV_VDS_MASK) >> LCD_DAV_VDS_BIT )
4748 #define __lcd_dav_set_vds(n) \
4749 do { \
4750 REG_LCD_DAV &= ~LCD_DAV_VDS_MASK; \
4751 REG_LCD_DAV |= (n) << LCD_DAV_VDS_BIT; \
4752 } while (0)
4754 #define __lcd_dav_get_vde() \
4755 ( (REG_LCD_DAV & LCD_DAV_VDE_MASK) >> LCD_DAV_VDE_BIT )
4756 #define __lcd_dav_set_vde(n) \
4757 do { \
4758 REG_LCD_DAV &= ~LCD_DAV_VDE_MASK; \
4759 REG_LCD_DAV |= (n) << LCD_DAV_VDE_BIT; \
4760 } while (0)
4762 #define __lcd_cmd0_set_sofint() ( REG_LCD_CMD0 |= LCD_CMD_SOFINT )
4763 #define __lcd_cmd0_clr_sofint() ( REG_LCD_CMD0 &= ~LCD_CMD_SOFINT )
4764 #define __lcd_cmd1_set_sofint() ( REG_LCD_CMD1 |= LCD_CMD_SOFINT )
4765 #define __lcd_cmd1_clr_sofint() ( REG_LCD_CMD1 &= ~LCD_CMD_SOFINT )
4767 #define __lcd_cmd0_set_eofint() ( REG_LCD_CMD0 |= LCD_CMD_EOFINT )
4768 #define __lcd_cmd0_clr_eofint() ( REG_LCD_CMD0 &= ~LCD_CMD_EOFINT )
4769 #define __lcd_cmd1_set_eofint() ( REG_LCD_CMD1 |= LCD_CMD_EOFINT )
4770 #define __lcd_cmd1_clr_eofint() ( REG_LCD_CMD1 &= ~LCD_CMD_EOFINT )
4772 #define __lcd_cmd0_set_pal() ( REG_LCD_CMD0 |= LCD_CMD_PAL )
4773 #define __lcd_cmd0_clr_pal() ( REG_LCD_CMD0 &= ~LCD_CMD_PAL )
4775 #define __lcd_cmd0_get_len() \
4776 ( (REG_LCD_CMD0 & LCD_CMD_LEN_MASK) >> LCD_CMD_LEN_BIT )
4777 #define __lcd_cmd1_get_len() \
4778 ( (REG_LCD_CMD1 & LCD_CMD_LEN_MASK) >> LCD_CMD_LEN_BIT )
4782 /***************************************************************************
4783 * DES
4784 ***************************************************************************/
4787 /***************************************************************************
4788 * CPM
4789 ***************************************************************************/
4790 #define __cpm_plcr1_fd() \
4791 ((REG_CPM_PLCR1 & CPM_PLCR1_PLL1FD_MASK) >> CPM_PLCR1_PLL1FD_BIT)
4792 #define __cpm_plcr1_rd() \
4793 ((REG_CPM_PLCR1 & CPM_PLCR1_PLL1RD_MASK) >> CPM_PLCR1_PLL1RD_BIT)
4794 #define __cpm_plcr1_od() \
4795 ((REG_CPM_PLCR1 & CPM_PLCR1_PLL1OD_MASK) >> CPM_PLCR1_PLL1OD_BIT)
4796 #define __cpm_cfcr_mfr() \
4797 ((REG_CPM_CFCR & CPM_CFCR_MFR_MASK) >> CPM_CFCR_MFR_BIT)
4798 #define __cpm_cfcr_pfr() \
4799 ((REG_CPM_CFCR & CPM_CFCR_PFR_MASK) >> CPM_CFCR_PFR_BIT)
4800 #define __cpm_cfcr_sfr() \
4801 ((REG_CPM_CFCR & CPM_CFCR_SFR_MASK) >> CPM_CFCR_SFR_BIT)
4802 #define __cpm_cfcr_ifr() \
4803 ((REG_CPM_CFCR & CPM_CFCR_IFR_MASK) >> CPM_CFCR_IFR_BIT)
4805 static __inline__ unsigned int __cpm_divisor_encode(unsigned int n)
4807 unsigned int encode[10] = {1,2,3,4,6,8,12,16,24,32};
4808 int i;
4809 for (i=0;i<10;i++)
4810 if (n < encode[i])
4811 break;
4812 return i;
4815 #define __cpm_set_mclk_div(n) \
4816 do { \
4817 REG_CPM_CFCR = (REG_CPM_CFCR & ~CPM_CFCR_MFR_MASK) | \
4818 ((n) << (CPM_CFCR_MFR_BIT)); \
4819 } while (0)
4821 #define __cpm_set_pclk_div(n) \
4822 do { \
4823 REG_CPM_CFCR = (REG_CPM_CFCR & ~CPM_CFCR_PFR_MASK) | \
4824 ((n) << (CPM_CFCR_PFR_BIT)); \
4825 } while (0)
4827 #define __cpm_set_sclk_div(n) \
4828 do { \
4829 REG_CPM_CFCR = (REG_CPM_CFCR & ~CPM_CFCR_SFR_MASK) | \
4830 ((n) << (CPM_CFCR_SFR_BIT)); \
4831 } while (0)
4833 #define __cpm_set_iclk_div(n) \
4834 do { \
4835 REG_CPM_CFCR = (REG_CPM_CFCR & ~CPM_CFCR_IFR_MASK) | \
4836 ((n) << (CPM_CFCR_IFR_BIT)); \
4837 } while (0)
4839 #define __cpm_set_lcdclk_div(n) \
4840 do { \
4841 REG_CPM_CFCR = (REG_CPM_CFCR & ~CPM_CFCR_LFR_MASK) | \
4842 ((n) << (CPM_CFCR_LFR_BIT)); \
4843 } while (0)
4845 #define __cpm_enable_cko1() (REG_CPM_CFCR |= CPM_CFCR_CKOEN1)
4846 #define __cpm_enable_cko2() (REG_CPM_CFCR |= CPM_CFCR_CKOEN2)
4847 #define __cpm_disable_cko1() (REG_CPM_CFCR &= ~CPM_CFCR_CKOEN1)
4848 #define __cpm_disable_cko2() (REG_CPM_CFCR &= ~CPM_CFCR_CKOEN2)
4850 #define __cpm_idle_mode() \
4851 (REG_CPM_LPCR = (REG_CPM_LPCR & ~CPM_LPCR_LPM_MASK) | \
4852 CPM_LPCR_LPM_IDLE)
4853 #define __cpm_sleep_mode() \
4854 (REG_CPM_LPCR = (REG_CPM_LPCR & ~CPM_LPCR_LPM_MASK) | \
4855 CPM_LPCR_LPM_SLEEP)
4856 #define __cpm_hibernate_mode() \
4857 (REG_CPM_LPCR = (REG_CPM_LPCR & ~CPM_LPCR_LPM_MASK) | \
4858 CPM_LPCR_LPM_HIBERNATE)
4860 #define __cpm_start_uart0() \
4861 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UART0))
4862 #define __cpm_start_uart1() \
4863 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UART1))
4864 #define __cpm_start_uart2() \
4865 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UART2))
4866 #define __cpm_start_uart3() \
4867 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UART3))
4868 #define __cpm_start_ost() \
4869 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_OST))
4870 #define __cpm_start_dmac() \
4871 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_DMAC))
4872 #define __cpm_start_uhc() \
4873 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UHC))
4874 #define __cpm_start_lcd() \
4875 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_LCD))
4876 #define __cpm_start_i2c() \
4877 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_I2C))
4878 #define __cpm_start_aic_pclk() \
4879 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_AICPCLK))
4880 #define __cpm_start_aic_bitclk() \
4881 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_AICBCLK))
4882 #define __cpm_start_pwm0() \
4883 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_PWM0))
4884 #define __cpm_start_pwm1() \
4885 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_PWM1))
4886 #define __cpm_start_ssi() \
4887 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_SSI))
4888 #define __cpm_start_msc() \
4889 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_MSC))
4890 #define __cpm_start_scc() \
4891 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_SCC))
4892 #define __cpm_start_eth() \
4893 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_ETH))
4894 #define __cpm_start_kbc() \
4895 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_KBC))
4896 #define __cpm_start_cim() \
4897 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_CIM))
4898 #define __cpm_start_udc() \
4899 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UDC))
4900 #define __cpm_start_uprt() \
4901 (REG_CPM_MSCR &= ~(1 << CPM_MSCR_MSTP_UPRT))
4902 #define __cpm_start_all() (REG_CPM_MSCR = 0)
4904 #define __cpm_stop_uart0() \
4905 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UART0))
4906 #define __cpm_stop_uart1() \
4907 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UART1))
4908 #define __cpm_stop_uart2() \
4909 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UART2))
4910 #define __cpm_stop_uart3() \
4911 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UART3))
4912 #define __cpm_stop_ost() \
4913 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_OST))
4914 #define __cpm_stop_dmac() \
4915 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_DMAC))
4916 #define __cpm_stop_uhc() \
4917 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UHC))
4918 #define __cpm_stop_lcd() \
4919 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_LCD))
4920 #define __cpm_stop_i2c() \
4921 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_I2C))
4922 #define __cpm_stop_aic_pclk() \
4923 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_AICPCLK))
4924 #define __cpm_stop_aic_bitclk() \
4925 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_AICBCLK))
4926 #define __cpm_stop_pwm0() \
4927 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_PWM0))
4928 #define __cpm_stop_pwm1() \
4929 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_PWM1))
4930 #define __cpm_stop_ssi() \
4931 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_SSI))
4932 #define __cpm_stop_msc() \
4933 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_MSC))
4934 #define __cpm_stop_scc() \
4935 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_SCC))
4936 #define __cpm_stop_eth() \
4937 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_ETH))
4938 #define __cpm_stop_kbc() \
4939 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_KBC))
4940 #define __cpm_stop_cim() \
4941 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_CIM))
4942 #define __cpm_stop_udc() \
4943 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UDC))
4944 #define __cpm_stop_uprt() \
4945 (REG_CPM_MSCR |= (1 << CPM_MSCR_MSTP_UPRT))
4946 #define __cpm_stop_all() (REG_CPM_MSCR = 0xffffffff)
4948 #define __cpm_set_pin(n) \
4949 do { \
4950 unsigned int p, o; \
4951 p = (n) / 32; \
4952 o = (n) % 32; \
4953 if (p == 0) \
4954 REG_CPM_GSR0 |= (1 << o); \
4955 else if (p == 1) \
4956 REG_CPM_GSR1 |= (1 << o); \
4957 else if (p == 2) \
4958 REG_CPM_GSR2 |= (1 << o); \
4959 else if (p == 3) \
4960 REG_CPM_GSR3 |= (1 << o); \
4961 } while (0)
4963 #define __cpm_clear_pin(n) \
4964 do { \
4965 unsigned int p, o; \
4966 p = (n) / 32; \
4967 o = (n) % 32; \
4968 if (p == 0) \
4969 REG_CPM_GSR0 &= ~(1 << o); \
4970 else if (p == 1) \
4971 REG_CPM_GSR1 &= ~(1 << o); \
4972 else if (p == 2) \
4973 REG_CPM_GSR2 &= ~(1 << o); \
4974 else if (p == 3) \
4975 REG_CPM_GSR3 &= ~(1 << o); \
4976 } while (0)
4979 #define __cpm_select_msc_clk(type) \
4980 do { \
4981 if (type == 0) \
4982 REG_CPM_CFCR &= ~CPM_CFCR_MSC; \
4983 else \
4984 REG_CPM_CFCR |= CPM_CFCR_MSC; \
4985 REG_CPM_CFCR |= CPM_CFCR_UPE; \
4986 } while(0)
4989 /***************************************************************************
4990 * SSI
4991 ***************************************************************************/
4993 #define __ssi_enable() ( REG_SSI_CR0 |= SSI_CR0_SSIE )
4994 #define __ssi_disable() ( REG_SSI_CR0 &= ~SSI_CR0_SSIE )
4995 #define __ssi_select_ce() ( REG_SSI_CR0 &= ~SSI_CR0_FSEL )
4997 #define __ssi_normal_mode() ( REG_SSI_ITR &= ~SSI_ITR_IVLTM_MASK )
4999 #define __ssi_select_ce2() \
5000 do { \
5001 REG_SSI_CR0 |= SSI_CR0_FSEL; \
5002 REG_SSI_CR1 &= ~SSI_CR1_MULTS; \
5003 } while (0)
5005 #define __ssi_select_gpc() \
5006 do { \
5007 REG_SSI_CR0 &= ~SSI_CR0_FSEL; \
5008 REG_SSI_CR1 |= SSI_CR1_MULTS; \
5009 } while (0)
5011 #define __ssi_enable_tx_intr() \
5012 ( REG_SSI_CR0 |= SSI_CR0_TIE | SSI_CR0_TEIE )
5014 #define __ssi_disable_tx_intr() \
5015 ( REG_SSI_CR0 &= ~(SSI_CR0_TIE | SSI_CR0_TEIE) )
5017 #define __ssi_enable_rx_intr() \
5018 ( REG_SSI_CR0 |= SSI_CR0_RIE | SSI_CR0_REIE )
5020 #define __ssi_disable_rx_intr() \
5021 ( REG_SSI_CR0 &= ~(SSI_CR0_RIE | SSI_CR0_REIE) )
5023 #define __ssi_enable_loopback() ( REG_SSI_CR0 |= SSI_CR0_LOOP )
5024 #define __ssi_disable_loopback() ( REG_SSI_CR0 &= ~SSI_CR0_LOOP )
5026 #define __ssi_enable_receive() ( REG_SSI_CR0 &= ~SSI_CR0_DISREV )
5027 #define __ssi_disable_receive() ( REG_SSI_CR0 |= SSI_CR0_DISREV )
5029 #define __ssi_finish_receive() \
5030 ( REG_SSI_CR0 |= (SSI_CR0_RFINE | SSI_CR0_RFINC) )
5032 #define __ssi_disable_recvfinish() \
5033 ( REG_SSI_CR0 &= ~(SSI_CR0_RFINE | SSI_CR0_RFINC) )
5035 #define __ssi_flush_txfifo() ( REG_SSI_CR0 |= SSI_CR0_TFLUSH )
5036 #define __ssi_flush_rxfifo() ( REG_SSI_CR0 |= SSI_CR0_RFLUSH )
5038 #define __ssi_flush_fifo() \
5039 ( REG_SSI_CR0 |= SSI_CR0_TFLUSH | SSI_CR0_RFLUSH )
5041 #define __ssi_finish_transmit() ( REG_SSI_CR1 &= ~SSI_CR1_UNFIN )
5043 /* Motorola's SPI format, set 1 delay */
5044 #define __ssi_spi_format() \
5045 do { \
5046 REG_SSI_CR1 &= ~SSI_CR1_FMAT_MASK; \
5047 REG_SSI_CR1 |= SSI_CR1_FMAT_SPI; \
5048 REG_SSI_CR1 &= ~(SSI_CR1_TFVCK_MASK|SSI_CR1_TCKFI_MASK);\
5049 REG_SSI_CR1 |= (SSI_CR1_TFVCK_1 | SSI_CR1_TCKFI_1); \
5050 } while (0)
5052 /* TI's SSP format, must clear SSI_CR1.UNFIN */
5053 #define __ssi_ssp_format() \
5054 do { \
5055 REG_SSI_CR1 &= ~(SSI_CR1_FMAT_MASK | SSI_CR1_UNFIN); \
5056 REG_SSI_CR1 |= SSI_CR1_FMAT_SSP; \
5057 } while (0)
5059 /* National's Microwire format, must clear SSI_CR0.RFINE, and set max delay */
5060 #define __ssi_microwire_format() \
5061 do { \
5062 REG_SSI_CR1 &= ~SSI_CR1_FMAT_MASK; \
5063 REG_SSI_CR1 |= SSI_CR1_FMAT_MW1; \
5064 REG_SSI_CR1 &= ~(SSI_CR1_TFVCK_MASK|SSI_CR1_TCKFI_MASK);\
5065 REG_SSI_CR1 |= (SSI_CR1_TFVCK_3 | SSI_CR1_TCKFI_3); \
5066 REG_SSI_CR0 &= ~SSI_CR0_RFINE; \
5067 } while (0)
5069 /* CE# level (FRMHL), CE# in interval time (ITFRM),
5070 clock phase and polarity (PHA POL),
5071 interval time (SSIITR), interval characters/frame (SSIICR) */
5073 /* frmhl,endian,mcom,flen,pha,pol MASK */
5074 #define SSICR1_MISC_MASK \
5075 ( SSI_CR1_FRMHL_MASK | SSI_CR1_LFST | SSI_CR1_MCOM_MASK \
5076 | SSI_CR1_FLEN_MASK | SSI_CR1_PHA | SSI_CR1_POL ) \
5078 #define __ssi_spi_set_misc(frmhl,endian,flen,mcom,pha,pol) \
5079 do { \
5080 REG_SSI_CR1 &= ~SSICR1_MISC_MASK; \
5081 REG_SSI_CR1 |= ((frmhl) << 30) | ((endian) << 25) | \
5082 (((mcom) - 1) << 12) | (((flen) - 2) << 4) | \
5083 ((pha) << 1) | (pol); \
5084 } while(0)
5086 /* Transfer with MSB or LSB first */
5087 #define __ssi_set_msb() ( REG_SSI_CR1 &= ~SSI_CR1_LFST )
5088 #define __ssi_set_lsb() ( REG_SSI_CR1 |= SSI_CR1_LFST )
5090 /* n = 2 - 17 */
5091 #define __ssi_set_frame_length(n) \
5092 ( REG_SSI_CR1 = ((REG_SSI_CR1 & ~SSI_CR1_FLEN_MASK) | SSI_CR1_FLEN_##n##BIT) )
5094 /* n = 1 - 16 */
5095 #define __ssi_set_microwire_command_length(n) \
5096 ( REG_SSI_CR1 = ((REG_SSI_CR1 & ~SSI_CR1_MCOM_MASK) | SSI_CR1_MCOM_##n##BIT) )
5098 /* Set the clock phase for SPI */
5099 #define __ssi_set_spi_clock_phase(n) \
5100 ( REG_SSI_CR1 = ((REG_SSI_CR1 & ~SSI_CR1_PHA) | (n&0x1)) )
5102 /* Set the clock polarity for SPI */
5103 #define __ssi_set_spi_clock_polarity(n) \
5104 ( REG_SSI_CR1 = ((REG_SSI_CR1 & ~SSI_CR1_POL) | (n&0x1)) )
5106 /* n = 1,4,8,14 */
5107 #define __ssi_set_tx_trigger(n) \
5108 do { \
5109 REG_SSI_CR1 &= ~SSI_CR1_TTRG_MASK; \
5110 REG_SSI_CR1 |= SSI_CR1_TTRG_##n; \
5111 } while (0)
5113 /* n = 1,4,8,14 */
5114 #define __ssi_set_rx_trigger(n) \
5115 do { \
5116 REG_SSI_CR1 &= ~SSI_CR1_RTRG_MASK; \
5117 REG_SSI_CR1 |= SSI_CR1_RTRG_##n; \
5118 } while (0)
5120 #define __ssi_get_txfifo_count() \
5121 ( (REG_SSI_SR & SSI_SR_TFIFONUM_MASK) >> SSI_SR_TFIFONUM_BIT )
5123 #define __ssi_get_rxfifo_count() \
5124 ( (REG_SSI_SR & SSI_SR_RFIFONUM_MASK) >> SSI_SR_RFIFONUM_BIT )
5126 #define __ssi_clear_errors() \
5127 ( REG_SSI_SR &= ~(SSI_SR_UNDR | SSI_SR_OVER) )
5129 #define __ssi_transfer_end() ( REG_SSI_SR & SSI_SR_END )
5130 #define __ssi_is_busy() ( REG_SSI_SR & SSI_SR_BUSY )
5132 #define __ssi_txfifo_full() ( REG_SSI_SR & SSI_SR_TFF )
5133 #define __ssi_rxfifo_empty() ( REG_SSI_SR & SSI_SR_RFE )
5134 #define __ssi_rxfifo_noempty() ( REG_SSI_SR & SSI_SR_RFHF )
5136 #define __ssi_set_clk(dev_clk, ssi_clk) \
5137 ( REG_SSI_GR = (dev_clk) / (2*(ssi_clk)) - 1 )
5139 #define __ssi_receive_data() REG_SSI_DR
5140 #define __ssi_transmit_data(v) ( REG_SSI_DR = (v) )
5142 /***************************************************************************
5143 * WDT
5144 ***************************************************************************/
5146 #define __wdt_set_count(count) ( REG_WDT_WTCNT = (count) )
5147 #define __wdt_start() ( REG_WDT_WTCSR |= WDT_WTCSR_START )
5148 #define __wdt_stop() ( REG_WDT_WTCSR &= ~WDT_WTCSR_START )
5151 /***************************************************************************
5152 ***************************************************************************/
5155 * CPU clocks
5157 #ifdef CFG_EXTAL
5158 #define JZ_EXTAL CFG_EXTAL
5159 #else
5160 #define JZ_EXTAL 3686400
5161 #endif
5162 #define JZ_EXTAL2 32768 /* RTC clock */
5164 static __inline__ unsigned int __cpm_get_pllout(void)
5166 unsigned int nf, nr, no, pllout;
5167 unsigned long plcr = REG_CPM_PLCR1;
5168 unsigned long od[4] = {1, 2, 2, 4};
5169 if (plcr & CPM_PLCR1_PLL1EN) {
5170 nf = (plcr & CPM_PLCR1_PLL1FD_MASK) >> CPM_PLCR1_PLL1FD_BIT;
5171 nr = (plcr & CPM_PLCR1_PLL1RD_MASK) >> CPM_PLCR1_PLL1RD_BIT;
5172 no = od[((plcr & CPM_PLCR1_PLL1OD_MASK) >> CPM_PLCR1_PLL1OD_BIT)];
5173 pllout = (JZ_EXTAL) / ((nr+2) * no) * (nf+2);
5174 } else
5175 pllout = JZ_EXTAL;
5176 return pllout;
5179 static __inline__ unsigned int __cpm_get_iclk(void)
5181 unsigned int iclk;
5182 int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
5183 unsigned long cfcr = REG_CPM_CFCR;
5184 unsigned long plcr = REG_CPM_PLCR1;
5185 if (plcr & CPM_PLCR1_PLL1EN)
5186 iclk = __cpm_get_pllout() /
5187 div[(cfcr & CPM_CFCR_IFR_MASK) >> CPM_CFCR_IFR_BIT];
5188 else
5189 iclk = JZ_EXTAL;
5190 return iclk;
5193 static __inline__ unsigned int __cpm_get_sclk(void)
5195 unsigned int sclk;
5196 int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
5197 unsigned long cfcr = REG_CPM_CFCR;
5198 unsigned long plcr = REG_CPM_PLCR1;
5199 if (plcr & CPM_PLCR1_PLL1EN)
5200 sclk = __cpm_get_pllout() /
5201 div[(cfcr & CPM_CFCR_SFR_MASK) >> CPM_CFCR_SFR_BIT];
5202 else
5203 sclk = JZ_EXTAL;
5204 return sclk;
5207 static __inline__ unsigned int __cpm_get_mclk(void)
5209 unsigned int mclk;
5210 int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
5211 unsigned long cfcr = REG_CPM_CFCR;
5212 unsigned long plcr = REG_CPM_PLCR1;
5213 if (plcr & CPM_PLCR1_PLL1EN)
5214 mclk = __cpm_get_pllout() /
5215 div[(cfcr & CPM_CFCR_MFR_MASK) >> CPM_CFCR_MFR_BIT];
5216 else
5217 mclk = JZ_EXTAL;
5218 return mclk;
5221 static __inline__ unsigned int __cpm_get_pclk(void)
5223 unsigned int devclk;
5224 int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
5225 unsigned long cfcr = REG_CPM_CFCR;
5226 unsigned long plcr = REG_CPM_PLCR1;
5227 if (plcr & CPM_PLCR1_PLL1EN)
5228 devclk = __cpm_get_pllout() /
5229 div[(cfcr & CPM_CFCR_PFR_MASK) >> CPM_CFCR_PFR_BIT];
5230 else
5231 devclk = JZ_EXTAL;
5232 return devclk;
5235 static __inline__ unsigned int __cpm_get_devclk(void)
5237 unsigned int devclk;
5238 int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
5239 unsigned long cfcr = REG_CPM_CFCR;
5240 unsigned long plcr = REG_CPM_PLCR1;
5241 if (plcr & CPM_PLCR1_PLL1EN)
5242 devclk = __cpm_get_pllout() /
5243 div[(cfcr & CPM_CFCR_PFR_MASK) >> CPM_CFCR_PFR_BIT];
5244 else
5245 devclk = JZ_EXTAL;
5246 return devclk;
5249 #endif /* !__ASSEMBLY__ */
5251 #endif /* __JZ4730_H__ */