diff options
author | Timur Tabi <timur@freescale.com> | 2007-10-03 12:34:59 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2007-10-08 09:38:15 -0400 |
commit | 6b0b594bb81f86dbc7b0829ee5102abaab242913 (patch) | |
tree | 707463987ab05d04596763afa9db1c63cbde4c4a /include/asm-powerpc/qe.h | |
parent | 6039680705906f270411435c05c869ac4f59ef10 (diff) |
[POWERPC] qe: miscellaneous code improvements and fixes to the QE library
This patch makes numerous miscellaneous code improvements to the QE library.
1. Remove struct ucc_common and merge ucc_init_guemr() into ucc_set_type()
(every caller of ucc_init_guemr() also calls ucc_set_type()). Modify all
callers of ucc_set_type() accordingly.
2. Remove the unused enum ucc_pram_initial_offset.
3. Refactor qe_setbrg(), also implement work-around for errata QE_General4.
4. Several printk() calls were missing the terminating \n.
5. Add __iomem where needed, and change u16 to __be16 and u32 to __be32 where
appropriate.
6. In ucc_slow_init() the RBASE and TBASE registers in the PRAM were programmed
with the wrong value.
7. Add the protocol type to struct us_info and updated ucc_slow_init() to
use it, instead of always programming QE_CR_PROTOCOL_UNSPECIFIED.
8. Rename ucc_slow_restart_x() to ucc_slow_restart_tx()
9. Add several macros in qe.h (mostly for slow UCC support, but also to
standardize some naming convention) and remove several unused macros.
10. Update ucc_geth.c to use the new macros.
11. Add ucc_slow_info.protocol to specify which QE_CR_PROTOCOL_xxx protcol
to use when initializing the UCC in ucc_slow_init().
12. Rename ucc_slow_pram.rfcr to rbmr and ucc_slow_pram.tfcr to tbmr, since
these are the real names of the registers.
13. Use the setbits, clrbits, and clrsetbits where appropriate.
14. Refactor ucc_set_qe_mux_rxtx().
15. Remove all instances of 'volatile'.
16. Simplify get_cmxucr_reg();
17. Replace qe_mux.cmxucrX with qe_mux.cmxucr[].
18. Updated struct ucc_geth because struct ucc_fast is not padded any more.
Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'include/asm-powerpc/qe.h')
-rw-r--r-- | include/asm-powerpc/qe.h | 243 |
1 files changed, 168 insertions, 75 deletions
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h index ad23c580631c..0dabe46a29d2 100644 --- a/include/asm-powerpc/qe.h +++ b/include/asm-powerpc/qe.h | |||
@@ -38,7 +38,7 @@ extern int par_io_data_set(u8 port, u8 pin, u8 val); | |||
38 | 38 | ||
39 | /* QE internal API */ | 39 | /* QE internal API */ |
40 | int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); | 40 | int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); |
41 | void qe_setbrg(u32 brg, u32 rate); | 41 | void qe_setbrg(unsigned int brg, unsigned int rate, unsigned int multiplier); |
42 | int qe_get_snum(void); | 42 | int qe_get_snum(void); |
43 | void qe_put_snum(u8 snum); | 43 | void qe_put_snum(u8 snum); |
44 | unsigned long qe_muram_alloc(int size, int align); | 44 | unsigned long qe_muram_alloc(int size, int align); |
@@ -49,14 +49,28 @@ void *qe_muram_addr(unsigned long offset); | |||
49 | 49 | ||
50 | /* Buffer descriptors */ | 50 | /* Buffer descriptors */ |
51 | struct qe_bd { | 51 | struct qe_bd { |
52 | u16 status; | 52 | __be16 status; |
53 | u16 length; | 53 | __be16 length; |
54 | u32 buf; | 54 | __be32 buf; |
55 | } __attribute__ ((packed)); | 55 | } __attribute__ ((packed)); |
56 | 56 | ||
57 | #define BD_STATUS_MASK 0xffff0000 | 57 | #define BD_STATUS_MASK 0xffff0000 |
58 | #define BD_LENGTH_MASK 0x0000ffff | 58 | #define BD_LENGTH_MASK 0x0000ffff |
59 | 59 | ||
60 | #define BD_SC_EMPTY 0x8000 /* Receive is empty */ | ||
61 | #define BD_SC_READY 0x8000 /* Transmit is ready */ | ||
62 | #define BD_SC_WRAP 0x2000 /* Last buffer descriptor */ | ||
63 | #define BD_SC_INTRPT 0x1000 /* Interrupt on change */ | ||
64 | #define BD_SC_LAST 0x0800 /* Last buffer in frame */ | ||
65 | #define BD_SC_CM 0x0200 /* Continous mode */ | ||
66 | #define BD_SC_ID 0x0100 /* Rec'd too many idles */ | ||
67 | #define BD_SC_P 0x0100 /* xmt preamble */ | ||
68 | #define BD_SC_BR 0x0020 /* Break received */ | ||
69 | #define BD_SC_FR 0x0010 /* Framing error */ | ||
70 | #define BD_SC_PR 0x0008 /* Parity error */ | ||
71 | #define BD_SC_OV 0x0002 /* Overrun */ | ||
72 | #define BD_SC_CD 0x0001 /* ?? */ | ||
73 | |||
60 | /* Alignment */ | 74 | /* Alignment */ |
61 | #define QE_INTR_TABLE_ALIGN 16 /* ??? */ | 75 | #define QE_INTR_TABLE_ALIGN 16 /* ??? */ |
62 | #define QE_ALIGNMENT_OF_BD 8 | 76 | #define QE_ALIGNMENT_OF_BD 8 |
@@ -269,15 +283,12 @@ enum qe_clock { | |||
269 | /* QE CECR Protocol - For non-MCC, specifies mode for QE CECR command */ | 283 | /* QE CECR Protocol - For non-MCC, specifies mode for QE CECR command */ |
270 | #define QE_CR_PROTOCOL_UNSPECIFIED 0x00 /* For all other protocols */ | 284 | #define QE_CR_PROTOCOL_UNSPECIFIED 0x00 /* For all other protocols */ |
271 | #define QE_CR_PROTOCOL_HDLC_TRANSPARENT 0x00 | 285 | #define QE_CR_PROTOCOL_HDLC_TRANSPARENT 0x00 |
286 | #define QE_CR_PROTOCOL_QMC 0x02 | ||
287 | #define QE_CR_PROTOCOL_UART 0x04 | ||
272 | #define QE_CR_PROTOCOL_ATM_POS 0x0A | 288 | #define QE_CR_PROTOCOL_ATM_POS 0x0A |
273 | #define QE_CR_PROTOCOL_ETHERNET 0x0C | 289 | #define QE_CR_PROTOCOL_ETHERNET 0x0C |
274 | #define QE_CR_PROTOCOL_L2_SWITCH 0x0D | 290 | #define QE_CR_PROTOCOL_L2_SWITCH 0x0D |
275 | 291 | ||
276 | /* BMR byte order */ | ||
277 | #define QE_BMR_BYTE_ORDER_BO_PPC 0x08 /* powerpc little endian */ | ||
278 | #define QE_BMR_BYTE_ORDER_BO_MOT 0x10 /* motorola big endian */ | ||
279 | #define QE_BMR_BYTE_ORDER_BO_MAX 0x18 | ||
280 | |||
281 | /* BRG configuration register */ | 292 | /* BRG configuration register */ |
282 | #define QE_BRGC_ENABLE 0x00010000 | 293 | #define QE_BRGC_ENABLE 0x00010000 |
283 | #define QE_BRGC_DIVISOR_SHIFT 1 | 294 | #define QE_BRGC_DIVISOR_SHIFT 1 |
@@ -324,41 +335,41 @@ enum qe_clock { | |||
324 | #define UPGCR_ADDR 0x10000000 /* Master MPHY Addr multiplexing */ | 335 | #define UPGCR_ADDR 0x10000000 /* Master MPHY Addr multiplexing */ |
325 | #define UPGCR_DIAG 0x01000000 /* Diagnostic mode */ | 336 | #define UPGCR_DIAG 0x01000000 /* Diagnostic mode */ |
326 | 337 | ||
327 | /* UCC */ | 338 | /* UCC GUEMR register */ |
328 | #define UCC_GUEMR_MODE_MASK_RX 0x02 | 339 | #define UCC_GUEMR_MODE_MASK_RX 0x02 |
329 | #define UCC_GUEMR_MODE_MASK_TX 0x01 | ||
330 | #define UCC_GUEMR_MODE_FAST_RX 0x02 | 340 | #define UCC_GUEMR_MODE_FAST_RX 0x02 |
331 | #define UCC_GUEMR_MODE_FAST_TX 0x01 | ||
332 | #define UCC_GUEMR_MODE_SLOW_RX 0x00 | 341 | #define UCC_GUEMR_MODE_SLOW_RX 0x00 |
342 | #define UCC_GUEMR_MODE_MASK_TX 0x01 | ||
343 | #define UCC_GUEMR_MODE_FAST_TX 0x01 | ||
333 | #define UCC_GUEMR_MODE_SLOW_TX 0x00 | 344 | #define UCC_GUEMR_MODE_SLOW_TX 0x00 |
345 | #define UCC_GUEMR_MODE_MASK (UCC_GUEMR_MODE_MASK_RX | UCC_GUEMR_MODE_MASK_TX) | ||
334 | #define UCC_GUEMR_SET_RESERVED3 0x10 /* Bit 3 in the guemr is reserved but | 346 | #define UCC_GUEMR_SET_RESERVED3 0x10 /* Bit 3 in the guemr is reserved but |
335 | must be set 1 */ | 347 | must be set 1 */ |
336 | 348 | ||
337 | /* structure representing UCC SLOW parameter RAM */ | 349 | /* structure representing UCC SLOW parameter RAM */ |
338 | struct ucc_slow_pram { | 350 | struct ucc_slow_pram { |
339 | u16 rbase; /* RX BD base address */ | 351 | __be16 rbase; /* RX BD base address */ |
340 | u16 tbase; /* TX BD base address */ | 352 | __be16 tbase; /* TX BD base address */ |
341 | u8 rfcr; /* Rx function code */ | 353 | u8 rbmr; /* RX bus mode register (same as CPM's RFCR) */ |
342 | u8 tfcr; /* Tx function code */ | 354 | u8 tbmr; /* TX bus mode register (same as CPM's TFCR) */ |
343 | u16 mrblr; /* Rx buffer length */ | 355 | __be16 mrblr; /* Rx buffer length */ |
344 | u32 rstate; /* Rx internal state */ | 356 | __be32 rstate; /* Rx internal state */ |
345 | u32 rptr; /* Rx internal data pointer */ | 357 | __be32 rptr; /* Rx internal data pointer */ |
346 | u16 rbptr; /* rb BD Pointer */ | 358 | __be16 rbptr; /* rb BD Pointer */ |
347 | u16 rcount; /* Rx internal byte count */ | 359 | __be16 rcount; /* Rx internal byte count */ |
348 | u32 rtemp; /* Rx temp */ | 360 | __be32 rtemp; /* Rx temp */ |
349 | u32 tstate; /* Tx internal state */ | 361 | __be32 tstate; /* Tx internal state */ |
350 | u32 tptr; /* Tx internal data pointer */ | 362 | __be32 tptr; /* Tx internal data pointer */ |
351 | u16 tbptr; /* Tx BD pointer */ | 363 | __be16 tbptr; /* Tx BD pointer */ |
352 | u16 tcount; /* Tx byte count */ | 364 | __be16 tcount; /* Tx byte count */ |
353 | u32 ttemp; /* Tx temp */ | 365 | __be32 ttemp; /* Tx temp */ |
354 | u32 rcrc; /* temp receive CRC */ | 366 | __be32 rcrc; /* temp receive CRC */ |
355 | u32 tcrc; /* temp transmit CRC */ | 367 | __be32 tcrc; /* temp transmit CRC */ |
356 | } __attribute__ ((packed)); | 368 | } __attribute__ ((packed)); |
357 | 369 | ||
358 | /* General UCC SLOW Mode Register (GUMRH & GUMRL) */ | 370 | /* General UCC SLOW Mode Register (GUMRH & GUMRL) */ |
359 | #define UCC_SLOW_GUMR_H_CRC16 0x00004000 | 371 | #define UCC_SLOW_GUMR_H_SAM_QMC 0x00000000 |
360 | #define UCC_SLOW_GUMR_H_CRC16CCITT 0x00000000 | 372 | #define UCC_SLOW_GUMR_H_SAM_SATM 0x00008000 |
361 | #define UCC_SLOW_GUMR_H_CRC32CCITT 0x00008000 | ||
362 | #define UCC_SLOW_GUMR_H_REVD 0x00002000 | 373 | #define UCC_SLOW_GUMR_H_REVD 0x00002000 |
363 | #define UCC_SLOW_GUMR_H_TRX 0x00001000 | 374 | #define UCC_SLOW_GUMR_H_TRX 0x00001000 |
364 | #define UCC_SLOW_GUMR_H_TTX 0x00000800 | 375 | #define UCC_SLOW_GUMR_H_TTX 0x00000800 |
@@ -378,9 +389,33 @@ struct ucc_slow_pram { | |||
378 | #define UCC_SLOW_GUMR_L_TCI 0x10000000 | 389 | #define UCC_SLOW_GUMR_L_TCI 0x10000000 |
379 | #define UCC_SLOW_GUMR_L_RINV 0x02000000 | 390 | #define UCC_SLOW_GUMR_L_RINV 0x02000000 |
380 | #define UCC_SLOW_GUMR_L_TINV 0x01000000 | 391 | #define UCC_SLOW_GUMR_L_TINV 0x01000000 |
381 | #define UCC_SLOW_GUMR_L_TEND 0x00020000 | 392 | #define UCC_SLOW_GUMR_L_TEND 0x00040000 |
393 | #define UCC_SLOW_GUMR_L_TDCR_MASK 0x00030000 | ||
394 | #define UCC_SLOW_GUMR_L_TDCR_32 0x00030000 | ||
395 | #define UCC_SLOW_GUMR_L_TDCR_16 0x00020000 | ||
396 | #define UCC_SLOW_GUMR_L_TDCR_8 0x00010000 | ||
397 | #define UCC_SLOW_GUMR_L_TDCR_1 0x00000000 | ||
398 | #define UCC_SLOW_GUMR_L_RDCR_MASK 0x0000c000 | ||
399 | #define UCC_SLOW_GUMR_L_RDCR_32 0x0000c000 | ||
400 | #define UCC_SLOW_GUMR_L_RDCR_16 0x00008000 | ||
401 | #define UCC_SLOW_GUMR_L_RDCR_8 0x00004000 | ||
402 | #define UCC_SLOW_GUMR_L_RDCR_1 0x00000000 | ||
403 | #define UCC_SLOW_GUMR_L_RENC_NRZI 0x00000800 | ||
404 | #define UCC_SLOW_GUMR_L_RENC_NRZ 0x00000000 | ||
405 | #define UCC_SLOW_GUMR_L_TENC_NRZI 0x00000100 | ||
406 | #define UCC_SLOW_GUMR_L_TENC_NRZ 0x00000000 | ||
407 | #define UCC_SLOW_GUMR_L_DIAG_MASK 0x000000c0 | ||
408 | #define UCC_SLOW_GUMR_L_DIAG_LE 0x000000c0 | ||
409 | #define UCC_SLOW_GUMR_L_DIAG_ECHO 0x00000080 | ||
410 | #define UCC_SLOW_GUMR_L_DIAG_LOOP 0x00000040 | ||
411 | #define UCC_SLOW_GUMR_L_DIAG_NORM 0x00000000 | ||
382 | #define UCC_SLOW_GUMR_L_ENR 0x00000020 | 412 | #define UCC_SLOW_GUMR_L_ENR 0x00000020 |
383 | #define UCC_SLOW_GUMR_L_ENT 0x00000010 | 413 | #define UCC_SLOW_GUMR_L_ENT 0x00000010 |
414 | #define UCC_SLOW_GUMR_L_MODE_MASK 0x0000000F | ||
415 | #define UCC_SLOW_GUMR_L_MODE_BISYNC 0x00000008 | ||
416 | #define UCC_SLOW_GUMR_L_MODE_AHDLC 0x00000006 | ||
417 | #define UCC_SLOW_GUMR_L_MODE_UART 0x00000004 | ||
418 | #define UCC_SLOW_GUMR_L_MODE_QMC 0x00000002 | ||
384 | 419 | ||
385 | /* General UCC FAST Mode Register */ | 420 | /* General UCC FAST Mode Register */ |
386 | #define UCC_FAST_GUMR_TCI 0x20000000 | 421 | #define UCC_FAST_GUMR_TCI 0x20000000 |
@@ -397,53 +432,111 @@ struct ucc_slow_pram { | |||
397 | #define UCC_FAST_GUMR_ENR 0x00000020 | 432 | #define UCC_FAST_GUMR_ENR 0x00000020 |
398 | #define UCC_FAST_GUMR_ENT 0x00000010 | 433 | #define UCC_FAST_GUMR_ENT 0x00000010 |
399 | 434 | ||
400 | /* Slow UCC Event Register (UCCE) */ | 435 | /* UART Slow UCC Event Register (UCCE) */ |
401 | #define UCC_SLOW_UCCE_GLR 0x1000 | 436 | #define UCC_UART_UCCE_AB 0x0200 |
402 | #define UCC_SLOW_UCCE_GLT 0x0800 | 437 | #define UCC_UART_UCCE_IDLE 0x0100 |
403 | #define UCC_SLOW_UCCE_DCC 0x0400 | 438 | #define UCC_UART_UCCE_GRA 0x0080 |
404 | #define UCC_SLOW_UCCE_FLG 0x0200 | 439 | #define UCC_UART_UCCE_BRKE 0x0040 |
405 | #define UCC_SLOW_UCCE_AB 0x0200 | 440 | #define UCC_UART_UCCE_BRKS 0x0020 |
406 | #define UCC_SLOW_UCCE_IDLE 0x0100 | 441 | #define UCC_UART_UCCE_CCR 0x0008 |
407 | #define UCC_SLOW_UCCE_GRA 0x0080 | 442 | #define UCC_UART_UCCE_BSY 0x0004 |
408 | #define UCC_SLOW_UCCE_TXE 0x0010 | 443 | #define UCC_UART_UCCE_TX 0x0002 |
409 | #define UCC_SLOW_UCCE_RXF 0x0008 | 444 | #define UCC_UART_UCCE_RX 0x0001 |
410 | #define UCC_SLOW_UCCE_CCR 0x0008 | 445 | |
411 | #define UCC_SLOW_UCCE_RCH 0x0008 | 446 | /* HDLC Slow UCC Event Register (UCCE) */ |
412 | #define UCC_SLOW_UCCE_BSY 0x0004 | 447 | #define UCC_HDLC_UCCE_GLR 0x1000 |
413 | #define UCC_SLOW_UCCE_TXB 0x0002 | 448 | #define UCC_HDLC_UCCE_GLT 0x0800 |
414 | #define UCC_SLOW_UCCE_TX 0x0002 | 449 | #define UCC_HDLC_UCCE_IDLE 0x0100 |
415 | #define UCC_SLOW_UCCE_RX 0x0001 | 450 | #define UCC_HDLC_UCCE_BRKE 0x0040 |
416 | #define UCC_SLOW_UCCE_GOV 0x0001 | 451 | #define UCC_HDLC_UCCE_BRKS 0x0020 |
417 | #define UCC_SLOW_UCCE_GUN 0x0002 | 452 | #define UCC_HDLC_UCCE_TXE 0x0010 |
418 | #define UCC_SLOW_UCCE_GINT 0x0004 | 453 | #define UCC_HDLC_UCCE_RXF 0x0008 |
419 | #define UCC_SLOW_UCCE_IQOV 0x0008 | 454 | #define UCC_HDLC_UCCE_BSY 0x0004 |
420 | 455 | #define UCC_HDLC_UCCE_TXB 0x0002 | |
421 | #define UCC_SLOW_UCCE_HDLC_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | 456 | #define UCC_HDLC_UCCE_RXB 0x0001 |
422 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_RXF | \ | 457 | |
423 | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | 458 | /* BISYNC Slow UCC Event Register (UCCE) */ |
424 | #define UCC_SLOW_UCCE_ENET_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | 459 | #define UCC_BISYNC_UCCE_GRA 0x0080 |
425 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_RXF) | 460 | #define UCC_BISYNC_UCCE_TXE 0x0010 |
426 | #define UCC_SLOW_UCCE_TRANS_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | 461 | #define UCC_BISYNC_UCCE_RCH 0x0008 |
427 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TX | UCC_SLOW_UCCE_RX | \ | 462 | #define UCC_BISYNC_UCCE_BSY 0x0004 |
428 | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | 463 | #define UCC_BISYNC_UCCE_TXB 0x0002 |
429 | #define UCC_SLOW_UCCE_UART_SET (UCC_SLOW_UCCE_BSY | UCC_SLOW_UCCE_GRA | \ | 464 | #define UCC_BISYNC_UCCE_RXB 0x0001 |
430 | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_TX | UCC_SLOW_UCCE_RX | \ | 465 | |
431 | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | 466 | /* Gigabit Ethernet Fast UCC Event Register (UCCE) */ |
432 | #define UCC_SLOW_UCCE_QMC_SET (UCC_SLOW_UCCE_IQOV | UCC_SLOW_UCCE_GINT | \ | 467 | #define UCC_GETH_UCCE_MPD 0x80000000 |
433 | UCC_SLOW_UCCE_GUN | UCC_SLOW_UCCE_GOV) | 468 | #define UCC_GETH_UCCE_SCAR 0x40000000 |
434 | 469 | #define UCC_GETH_UCCE_GRA 0x20000000 | |
435 | #define UCC_SLOW_UCCE_OTHER (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | 470 | #define UCC_GETH_UCCE_CBPR 0x10000000 |
436 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | \ | 471 | #define UCC_GETH_UCCE_BSY 0x08000000 |
437 | UCC_SLOW_UCCE_GLR) | 472 | #define UCC_GETH_UCCE_RXC 0x04000000 |
438 | 473 | #define UCC_GETH_UCCE_TXC 0x02000000 | |
439 | #define UCC_SLOW_INTR_TX UCC_SLOW_UCCE_TXB | 474 | #define UCC_GETH_UCCE_TXE 0x01000000 |
440 | #define UCC_SLOW_INTR_RX (UCC_SLOW_UCCE_RXF | UCC_SLOW_UCCE_RX) | 475 | #define UCC_GETH_UCCE_TXB7 0x00800000 |
441 | #define UCC_SLOW_INTR (UCC_SLOW_INTR_TX | UCC_SLOW_INTR_RX) | 476 | #define UCC_GETH_UCCE_TXB6 0x00400000 |
477 | #define UCC_GETH_UCCE_TXB5 0x00200000 | ||
478 | #define UCC_GETH_UCCE_TXB4 0x00100000 | ||
479 | #define UCC_GETH_UCCE_TXB3 0x00080000 | ||
480 | #define UCC_GETH_UCCE_TXB2 0x00040000 | ||
481 | #define UCC_GETH_UCCE_TXB1 0x00020000 | ||
482 | #define UCC_GETH_UCCE_TXB0 0x00010000 | ||
483 | #define UCC_GETH_UCCE_RXB7 0x00008000 | ||
484 | #define UCC_GETH_UCCE_RXB6 0x00004000 | ||
485 | #define UCC_GETH_UCCE_RXB5 0x00002000 | ||
486 | #define UCC_GETH_UCCE_RXB4 0x00001000 | ||
487 | #define UCC_GETH_UCCE_RXB3 0x00000800 | ||
488 | #define UCC_GETH_UCCE_RXB2 0x00000400 | ||
489 | #define UCC_GETH_UCCE_RXB1 0x00000200 | ||
490 | #define UCC_GETH_UCCE_RXB0 0x00000100 | ||
491 | #define UCC_GETH_UCCE_RXF7 0x00000080 | ||
492 | #define UCC_GETH_UCCE_RXF6 0x00000040 | ||
493 | #define UCC_GETH_UCCE_RXF5 0x00000020 | ||
494 | #define UCC_GETH_UCCE_RXF4 0x00000010 | ||
495 | #define UCC_GETH_UCCE_RXF3 0x00000008 | ||
496 | #define UCC_GETH_UCCE_RXF2 0x00000004 | ||
497 | #define UCC_GETH_UCCE_RXF1 0x00000002 | ||
498 | #define UCC_GETH_UCCE_RXF0 0x00000001 | ||
499 | |||
500 | /* UPSMR, when used as a UART */ | ||
501 | #define UCC_UART_UPSMR_FLC 0x8000 | ||
502 | #define UCC_UART_UPSMR_SL 0x4000 | ||
503 | #define UCC_UART_UPSMR_CL_MASK 0x3000 | ||
504 | #define UCC_UART_UPSMR_CL_8 0x3000 | ||
505 | #define UCC_UART_UPSMR_CL_7 0x2000 | ||
506 | #define UCC_UART_UPSMR_CL_6 0x1000 | ||
507 | #define UCC_UART_UPSMR_CL_5 0x0000 | ||
508 | #define UCC_UART_UPSMR_UM_MASK 0x0c00 | ||
509 | #define UCC_UART_UPSMR_UM_NORMAL 0x0000 | ||
510 | #define UCC_UART_UPSMR_UM_MAN_MULTI 0x0400 | ||
511 | #define UCC_UART_UPSMR_UM_AUTO_MULTI 0x0c00 | ||
512 | #define UCC_UART_UPSMR_FRZ 0x0200 | ||
513 | #define UCC_UART_UPSMR_RZS 0x0100 | ||
514 | #define UCC_UART_UPSMR_SYN 0x0080 | ||
515 | #define UCC_UART_UPSMR_DRT 0x0040 | ||
516 | #define UCC_UART_UPSMR_PEN 0x0010 | ||
517 | #define UCC_UART_UPSMR_RPM_MASK 0x000c | ||
518 | #define UCC_UART_UPSMR_RPM_ODD 0x0000 | ||
519 | #define UCC_UART_UPSMR_RPM_LOW 0x0004 | ||
520 | #define UCC_UART_UPSMR_RPM_EVEN 0x0008 | ||
521 | #define UCC_UART_UPSMR_RPM_HIGH 0x000C | ||
522 | #define UCC_UART_UPSMR_TPM_MASK 0x0003 | ||
523 | #define UCC_UART_UPSMR_TPM_ODD 0x0000 | ||
524 | #define UCC_UART_UPSMR_TPM_LOW 0x0001 | ||
525 | #define UCC_UART_UPSMR_TPM_EVEN 0x0002 | ||
526 | #define UCC_UART_UPSMR_TPM_HIGH 0x0003 | ||
442 | 527 | ||
443 | /* UCC Transmit On Demand Register (UTODR) */ | 528 | /* UCC Transmit On Demand Register (UTODR) */ |
444 | #define UCC_SLOW_TOD 0x8000 | 529 | #define UCC_SLOW_TOD 0x8000 |
445 | #define UCC_FAST_TOD 0x8000 | 530 | #define UCC_FAST_TOD 0x8000 |
446 | 531 | ||
532 | /* UCC Bus Mode Register masks */ | ||
533 | /* Not to be confused with the Bundle Mode Register */ | ||
534 | #define UCC_BMR_GBL 0x20 | ||
535 | #define UCC_BMR_BO_BE 0x10 | ||
536 | #define UCC_BMR_CETM 0x04 | ||
537 | #define UCC_BMR_DTB 0x02 | ||
538 | #define UCC_BMR_BDB 0x01 | ||
539 | |||
447 | /* Function code masks */ | 540 | /* Function code masks */ |
448 | #define FC_GBL 0x20 | 541 | #define FC_GBL 0x20 |
449 | #define FC_DTB_LCL 0x02 | 542 | #define FC_DTB_LCL 0x02 |