home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1992 NeXT Computer, Inc. All rights reserved.
- *
- * Zilog Z85C30 Serial Controller Chip definitions
- *
- * The 85C30 contains the following registers:
- * Read Register: Function:
- * RR0 Transmit/Receive buffer and external status
- * RR1 Special receive condition status
- * RR2 Interrupt vector.
- * RR3 Interrupt pending bits.
- * RR8 Receive buffer.
- * RR10 Miscellaneous status
- * RR12 Lower byte of baud rate generator time constant
- * RR13 Upper byte of baud rate generator time constant
- * RR15 External/Status interrupt information
- *
- * Write register: Function:
- * WR0 Initialization commands.
- * WR1 Transmit/Receive interrupt and data transfer mode
- * WR2 Interrupt vector
- * WR3 Receive parameters and control
- * WR4 Transmit/Receive miscellaneous parameters and modes
- * WR5 Transmit parameters and controls
- * WR6 Sync characters or SDLC address field
- * WR7 Sync character or SDLC flag
- * WR8 Transmit buffer
- * WR9 Master interrupt control and reset
- * WR10 Miscellaneous transmitter/receiver control bits
- * WR11 Clock mode control
- * WR12 Lower byte of baud rate generator time constant
- * WR13 Upper byte of baud rate generator time constant
- * WR14 Miscellaneous control bits
- * WR15 External/Status interrupt control
- */
-
- /* Read register 0 */
- #define RR0_RXAVAIL 0x01 /* Rx Character Available */
- #define RR0_ZERO_COUNT 0x02 /* Zero count (timer) */
- #define RR0_TXEMPTY 0x04 /* Tx Buffer Empty */
- #define RR0_DCD 0x08 /* DCD status */
- #define RR0_SYNC_HUNT 0x10 /* Sync hunt mode */
-
- /*
- * NOTE: the sense of CTS is dependent on the cpu board rev
- */
- #define RR0_CTS 0x20 /* CTS status */
-
- #define RR0_TXUNDER 0x40 /* Tx Underrun/EOM */
- #define RR0_BREAK 0x80 /* Break/Abort */
-
- /* Read register 1 */
- #define RR1_ALLSENT 0x01 /* All Sent */
- #define RR1_RESCODE2 0x02 /* Residue Code 2 */
- #define RR1_RESCODE1 0x04 /* Residue Code 1 */
- #define RR1_RESCODE0 0x08 /* Residue Code 0 */
- #define RR1_PARITY 0x10 /* Parity Error */
- #define RR1_RXOVER 0x20 /* Rx Overrun Error */
- #define RR1_FRAME 0x40 /* CRC/Framing Error */
- #define RR1_EOF 0x80 /* End of Frame (SDLC) */
-
- /*
- * Read/Write Register 2: 8 bits of interrupt vector
- * Channel A unmodified, channel B is modified by current UART status
- */
-
- /* Read register 3 -- ONLY CHANNEL A */
- #define RR3_B_STATIP 0x01 /* Chanel B Ext/Status intr pending */
- #define RR3_B_TXIP 0x02 /* Chanel B Tx interrupt pending */
- #define RR3_B_RXIP 0x04 /* Chanel B Rx interrupt pending */
- #define RR3_A_STATIP 0x08 /* Chanel A Ext/Status intr pending */
- #define RR3_A_TXIP 0x10 /* Chanel A Tx interrupt pending */
- #define RR3_A_RXIP 0x20 /* Chanel A Rx interrupt pending */
-
- #define RR3_A_IP (RR3_A_STATIP|RR3_A_TXIP|RR3_A_RXIP)
- #define RR3_B_IP (RR3_B_STATIP|RR3_B_TXIP|RR3_B_RXIP)
-
- /*
- * Read Register 8: same as data port (receive buffer)
- */
-
- /* Read Register 10 */
- #define RR10_ONLOOP 0x02 /* On Loop */
- #define RR10_LOOPSEND 0x10 /* Loop Sending */
- #define RR10_MISS2 0x40 /* Two Clocks Missing */
- #define RR10_MISS1 0x80 /* One Clock Missing */
-
- /*
- * Read/Write Register 12/13 16 bits of time constant
- */
-
- /* Read/Write Register 15 */
- #define RW15_ZEROCNTIE 0x02 /* Enable interrupt on timer zero */
- #define RW15_DCDIE 0x08 /* Enable interrupt on DCD change */
- #define RW15_SYNCIE 0x10 /* Enable interrupt on Sync Hunt */
- #define RW15_CTSIE 0x20 /* Enable interrupt on CTS change */
- #define RW15_TXUNDERIE 0x40 /* Enable interrupt on TxUnderrun/EOM*/
- #define RW15_BREAKIE 0x80 /* Enable interrupt on Break/Abort */
-
- /* Write register 0 */
- #define WR0_REGMASK 0x0F /* Mask for register select */
- #define WR0_RESET_STAT 0x10 /* Reset Ext/Status Interrupts */
- #define WR0_ABORT 0x18 /* Send abort */
- #define WR0_NEXTRXIE 0x20 /* Enable interrupt on next char Rx */
- #define WR0_RESETTXPEND 0x28 /* Reset Pending Tx Interrupt */
- #define WR0_RESET 0x30 /* Error Reset */
- #define WR0_RESETIUS 0x38 /* Reset Interrupt Under Service */
- #define WR0_RESETRXCRC 0x40 /* Reset Rx CRC Checker */
- #define WR0_RESETTXCRC 0x80 /* Reset Rx CRC Generator */
- #define WR0_RESETEOM 0xC0 /* Reset Underrun/EOM latch */
-
- /* Write register 1 */
- #define WR1_EXTIE 0x01 /* External Interrupt Enable */
- #define WR1_TXIE 0x02 /* Transmit Interrupt Enable */
- #define WR1_PARSPEC 0x04 /* Parity is Special Condition */
- #define WR1_RXFIRSTIE 0x08 /* Interrupt Enable on First Rx */
- #define WR1_RXALLIE 0x10 /* Interrupt Enable on ALL Rx */
- #define WR1_SPECIE 0x18 /* Interrupt on Special only */
- #define WR1_REQRX 0x20 /* Request on Rx (else Tx) */
- #define WR1_REQFUNC 0x40 /* DMA Request (else cpu wait) */
- #define WR1_REQENABLE 0x80 /* Request/Wait enable */
-
- /* Read/Write register 2, interrupt vector */
-
- /* Write register 3 */
- #define WR3_RXENABLE 0x01 /* Rx Enable */
- #define WR3_SYNCINHIB 0x02 /* Sync Character Load Inhibit */
- #define WR3_ADDRSRCH 0x04 /* Address search mode (SDLC) */
- #define WR3_RXCRCENABLE 0x08 /* Rx CRC enable */
- #define WR3_ENTERHUNT 0x10 /* Enter Hunt Mode */
- #define WR3_AUTOENABLES 0x20 /* Auto Enables */
- #define WR3_RX5 0x00 /* Rx 5 bit characters */
- #define WR3_RX7 0x40 /* Rx 7 bit characters */
- #define WR3_RX6 0x80 /* Rx 6 bit characters */
- #define WR3_RX8 0xC0 /* Rx 8 bit characters */
-
- /* Write register 4 */
- #define WR4_PARENABLE 0x01 /* Parity enable */
- #define WR4_PAREVEN 0x02 /* Even parity */
- #define WR4_STOP1 0x04 /* 1 stop bit */
- #define WR4_STOP15 0x08 /* 1.5 stop bits */
- #define WR4_STOP2 0x0C /* 2 stop bits */
- #define WR4_SYNC8 0x00 /* 8 bit sync character */
- #define WR4_SYNC16 0x10 /* 16 bit sync character */
- #define WR4_SDLC 0x10 /* SDLC mode */
- #define WR4_EXTSYNC 0x30 /* External sync */
- #define WR4_X1CLOCK 0x00 /* x1 clock mode */
- #define WR4_X16CLOCK 0x40 /* x16 clock mode */
- #define WR4_X32CLOCK 0x80 /* x32 clock mode */
- #define WR4_X64CLOCK 0xC0 /* x64 clock mode */
-
- /* Write register 5 */
- #define WR5_TXCRCENABLE 0x01 /* Enable CRC on Rx */
- #define WR5_RTS 0x02 /* RTS */
- #define WR5_CRC16 0x04 /* SDLC/CRC-16 */
- #define WR5_TXENABLE 0x08 /* Enable transmitter */
- #define WR5_BREAK 0x10 /* Send a break */
- #define WR5_TX5 0x00 /* Tx 5 bit characters */
- #define WR5_TX7 0x20 /* Tx 7 bit characters */
- #define WR5_TX6 0x40 /* Tx 6 bit characters */
- #define WR5_TX8 0x60 /* Tx 8 bit characters */
- #define WR5_DTR 0x80 /* DTR */
-
- /* Write register 6 (Sync characters or SDLC address) */
-
- /* Write register 7 more sync/SDLC */
-
- /* Write register 8, same as data port, (Tx buffer) */
-
- /* Write register 9 -- ONLY 1, SHARED BETWEEN CHANNELS, ACCESSABLE FROM BOTH */
- #define WR9_VIS 0x01 /* Vector Includes Status */
- #define WR9_NV 0x02 /* No Vector (don't respond to IACK) */
- #define WR9_DLC 0x04 /* Disable Lower Chain */
- #define WR9_MIE 0x08 /* Master Interrupt Enable */
- #define WR9_STATHIGH 0x10 /* Status high */
- #define WR9_RESETB 0x40 /* Reset channel B */
- #define WR9_RESETA 0x80 /* Reset channel A */
- #define WR9_RESETHARD 0xC0 /* Hardware reset */
-
- /* Write register 10 */
- #define WR10_SYNC6 0x01 /* 6 bit sync */
- #define WR10_LOOP 0x02 /* Loop mode */
- #define WR10_ABORTUNDER 0x04 /* Abort on Underrun */
- #define WR10_MARKIDLE 0x08 /* Mark Idle */
- #define WR10_POLLACT 0x10 /* Go active on poll */
- #define WR10_NRZ 0x00 /* NRZ */
- #define WR10_NRZI 0x20 /* NRZI */
- #define WR10_FM1 0x40 /* FM (Transition = 1) */
- #define WR10_FM0 0x60 /* FM (Transition = 0) */
- #define WR10_PRESET1 0x80 /* CRC Preset 1 */
-
- /* Write register 11 */
- #define WR11_XTAL 0x00 /* TRxC Out = XTAL Output */
- #define WR11_TXCLOCK 0x01 /* TRxC Out = Transmit clock */
- #define WR11_BRGEN 0x02 /* TRxC Out = BR Generator Output */
- #define WR11_DPLL 0x03 /* TRxC Out = DPLL Output */
- #define WR11_TRXCOUTEN 0x04 /* Enable TRxC as output */
- #define WR11_TXCLKRTXC 0x00 /* Tx clock = RTxC pin */
- #define WR11_TXCLKTRXC 0x08 /* Tx clock = TRxC pin */
- #define WR11_TXCLKBRGEN 0x10 /* Tx clock = BR Generator Output */
- #define WR11_TXCLKDPLL 0x18 /* Tx clock = DPLL Output */
- #define WR11_RXCLKRTXC 0x00 /* Rx clock = RTxC pin */
- #define WR11_RXCLKTRXC 0x20 /* Rx clock = TRxC pin */
- #define WR11_RXCLKBRGEN 0x40 /* Rx clock = BR Generator Output */
- #define WR11_RXCLKDPLL 0x60 /* Rx clock = DPLL Output */
- #define WR11_RTXCXTAL 0x80 /* Crystal RTxC in (else TTL) */
-
- /* Read/Write register 12/13 Time constant */
-
- /* Write register 14 */
- #define WR14_BRENABLE 0x01 /* BR Generator Enable */
- #define WR14_BRPCLK 0x02 /* BR Generator CLK from PCLK */
- #define WR14_DTRREQ 0x04 /* DTR low is DMA request */
- #define WR14_AUTOECHO 0x08 /* Auto echo */
- #define WR14_LOOPBACK 0x10 /* Local loopback */
- #define WR14_SEARCH 0x20 /* Enter Search mode */
- #define WR14_RESET 0x40 /* Reset Missing Clock */
- #define WR14_DPLLDISABLE 0x60 /* Disable DPLL */
- #define WR14_SRCBR 0x80 /* Set DPLL CLK Src = BR Generator */
- #define WR14_SRCRTXC 0xA0 /* Set DPLL CLK Src = RTxC */
- #define WR14_FM 0xC0 /* Set FM mode */
- #define WR14_NRZI 0xE0 /* Set NRZI mode */
-
-