[BACK]Return to z8530reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/z8530reg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: z8530reg.h,v 1.6 2003/10/21 18:58:50 jmc Exp $ */
        !             2: /*     $NetBSD: z8530reg.h,v 1.7 1996/10/23 00:32:31 gwr Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1992, 1993
        !             6:  *     The Regents of the University of California.  All rights reserved.
        !             7:  *
        !             8:  * This software was developed by the Computer Systems Engineering group
        !             9:  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
        !            10:  * contributed to Berkeley.
        !            11:  *
        !            12:  * All advertising materials mentioning features or use of this software
        !            13:  * must display the following acknowledgement:
        !            14:  *     This product includes software developed by the University of
        !            15:  *     California, Lawrence Berkeley Laboratory.
        !            16:  *
        !            17:  * Redistribution and use in source and binary forms, with or without
        !            18:  * modification, are permitted provided that the following conditions
        !            19:  * are met:
        !            20:  * 1. Redistributions of source code must retain the above copyright
        !            21:  *    notice, this list of conditions and the following disclaimer.
        !            22:  * 2. Redistributions in binary form must reproduce the above copyright
        !            23:  *    notice, this list of conditions and the following disclaimer in the
        !            24:  *    documentation and/or other materials provided with the distribution.
        !            25:  * 3. Neither the name of the University nor the names of its contributors
        !            26:  *    may be used to endorse or promote products derived from this software
        !            27:  *    without specific prior written permission.
        !            28:  *
        !            29:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            30:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            31:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            32:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            33:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            34:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            35:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            36:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            37:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            38:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            39:  * SUCH DAMAGE.
        !            40:  *
        !            41:  *     @(#)zsreg.h     8.1 (Berkeley) 6/11/93
        !            42:  */
        !            43:
        !            44: /*
        !            45:  * Zilog SCC registers, as implemented on the Sun-4c.
        !            46:  *
        !            47:  * Each Z8530 implements two channels (called `a' and `b').
        !            48:  *
        !            49:  * The damnable chip was designed to fit on Z80 I/O ports, and thus
        !            50:  * has everything multiplexed out the wazoo.  We have to select
        !            51:  * a register, then read or write the register, and so on.  Worse,
        !            52:  * the parameter bits are scattered all over the register space.
        !            53:  * This thing is full of `miscellaneous' control registers.
        !            54:  *
        !            55:  * Worse yet, the registers have incompatible functions on read
        !            56:  * and write operations.  We describe the registers below according
        !            57:  * to whether they are `read registers' (RR) or `write registers' (WR).
        !            58:  * As if this were not enough, some of the channel B status bits show
        !            59:  * up in channel A, and vice versa.  The blasted thing shares write
        !            60:  * registers 2 and 9 across both channels, and reads registers 2 and 3
        !            61:  * differently for the two channels.  We can, however, ignore this much
        !            62:  * of the time.
        !            63:  *
        !            64:  * This file also includes flags for the Z85C30 and Z85230 enhanced scc.
        !            65:  * The CMOS 8530 includes extra SDLC functionality, and is used in a
        !            66:  * number of Macs (often in the Z85C80, an 85C30 combined w/ a SCSI
        !            67:  * controller). -wrs
        !            68:  *
        !            69:  * Some of the names in this files were chosen to make the hsis driver
        !            70:  * work unchanged (which means that they will match some in SunOS).
        !            71:  *
        !            72:  * `S.C.' stands for Special Condition, which is any of these:
        !            73:  *     receiver overrun        (aka silo overflow)
        !            74:  *     framing error           (missing stop bit, etc)
        !            75:  *     end of frame            (in synchronous modes)
        !            76:  *     parity error            (when `parity error is S.C.' is set)
        !            77:  *
        !            78:  * Registers with only a single `numeric value' get a name.
        !            79:  * Other registers hold bits and are only numbered; the bit
        !            80:  * definitions imply the register number (see below).
        !            81:  *
        !            82:  * We never use the receive and transmit data registers as
        !            83:  * indirects (choosing instead the zc_data register), so they
        !            84:  * are not defined here.
        !            85:  */
        !            86: #define        ZSRR_IVEC       2       /* interrupt vector (channel 0) */
        !            87: #define        ZSRR_IPEND      3       /* interrupt pending (ch. 0 only) */
        !            88: #define        ZSRR_TXSYNC     6       /* sync transmit char (monosync mode) */
        !            89: #define        ZSRR_RXSYNC     7       /* sync receive char (monosync mode) */
        !            90: #define        ZSRR_SYNCLO     6       /* sync low byte (bisync mode) */
        !            91: #define        ZSRR_SYNCHI     7       /* sync high byte (bisync mode) */
        !            92: #define        ZSRR_SDLC_ADDR  6       /* SDLC address (SDLC mode) */
        !            93: #define        ZSRR_SDLC_FLAG  7       /* SDLC flag 0x7E (SDLC mode) */
        !            94: #define        ZSRR_BAUDLO     12      /* baud rate generator (low half) */
        !            95: #define        ZSRR_BAUDHI     13      /* baud rate generator (high half) */
        !            96: #define        ZSRR_ENHANCED   14      /* read address of WR7' - yes, it's not 7!*/
        !            97:
        !            98: #define        ZSWR_IVEC       2       /* interrupt vector (shared) */
        !            99: #define        ZSWR_TXSYNC     6       /* sync transmit char (monosync mode) */
        !           100: #define        ZSWR_RXSYNC     7       /* sync receive char (monosync mode) */
        !           101: #define        ZSWR_SYNCLO     6       /* sync low byte (bisync mode) */
        !           102: #define        ZSWR_SYNCHI     7       /* sync high byte (bisync mode) */
        !           103: #define        ZSWR_SDLC_ADDR  6       /* SDLC address (SDLC mode) */
        !           104: #define        ZSWR_SDLC_FLAG  7       /* SDLC flag 0x7E (SDLC mode) */
        !           105: #define        ZSWR_BAUDLO     12      /* baud rate generator (low half) */
        !           106: #define        ZSWR_BAUDHI     13      /* baud rate generator (high half) */
        !           107: #define        ZSWR_ENHANCED   7       /* write address of WR7' */
        !           108:
        !           109: /*
        !           110:  * Registers 0 through 7 may be written with any one of the 8 command
        !           111:  * modifiers, and/or any one of the 4 reset modifiers, defined below.
        !           112:  * To write registers 8 through 15, however, the command modifier must
        !           113:  * always be `point high'.  Rather than track this bizzareness all over
        !           114:  * the driver, we try to avoid using any modifiers, ever (but they are
        !           115:  * defined here if you want them).
        !           116:  */
        !           117: #define        ZSM_RESET_TXUEOM        0xc0    /* reset xmit underrun / eom latch */
        !           118: #define        ZSM_RESET_TXCRC         0x80    /* reset xmit crc generator */
        !           119: #define        ZSM_RESET_RXCRC         0x40    /* reset recv crc checker */
        !           120: #define        ZSM_NULL                0x00    /* nothing special */
        !           121:
        !           122: #define        ZSM_RESET_IUS           0x38    /* reset interrupt under service */
        !           123: #define        ZSM_RESET_ERR           0x30    /* reset error cond */
        !           124: #define        ZSM_RESET_TXINT         0x28    /* reset xmit interrupt pending */
        !           125: #define        ZSM_EI_NEXTRXC          0x20    /* enable int. on next rcvd char */
        !           126: #define        ZSM_SEND_ABORT          0x18    /* send abort (SDLC) */
        !           127: #define        ZSM_RESET_STINT         0x10    /* reset external/status interrupt */
        !           128: #define        ZSM_POINTHIGH           0x08    /* `point high' (use r8-r15) */
        !           129: #define        ZSM_NULL                0x00    /* nothing special */
        !           130:
        !           131: /*
        !           132:  * Commands for Write Register 0 (`Command Register').
        !           133:  * These are just the command modifiers or'ed with register number 0
        !           134:  * (which of course equals the command modifier).
        !           135:  */
        !           136: #define        ZSWR0_RESET_EOM         ZSM_RESET_TXUEOM
        !           137: #define        ZSWR0_RESET_TXCRC       ZSM_RESET_TXCRC
        !           138: #define        ZSWR0_RESET_RXCRC       ZSM_RESET_RXCRC
        !           139: #define        ZSWR0_CLR_INTR          ZSM_RESET_IUS
        !           140: #define        ZSWR0_RESET_ERRORS      ZSM_RESET_ERR
        !           141: #define        ZSWR0_EI_NEXTRXC        ZSM_EI_NEXTRXC
        !           142: #define        ZSWR0_SEND_ABORT        ZSM_SEND_ABORT
        !           143: #define        ZSWR0_RESET_STATUS      ZSM_RESET_STINT
        !           144: #define        ZSWR0_RESET_TXINT       ZSM_RESET_TXINT
        !           145:
        !           146: /*
        !           147:  * Bits in Write Register 1 (`Transmit/Receive Interrupt and Data
        !           148:  * Transfer Mode Definition').  Note that bits 3 and 4 are taken together
        !           149:  * as a single unit, and bits 5 and 6 are useful only if bit 7 is set.
        !           150:  */
        !           151: #define        ZSWR1_REQ_WAIT          0x80    /* WAIT*-REQ* pin gives WAIT* */
        !           152: #define        ZSWR1_REQ_REQ           0xc0    /* WAIT*-REQ* pin gives REQ* */
        !           153: #define        ZSWR1_REQ_TX            0x00    /* WAIT*-REQ* pin follows xmit buf */
        !           154: #define        ZSWR1_REQ_RX            0x20    /* WAIT*-REQ* pin follows recv buf */
        !           155:
        !           156: #define        ZSWR1_RIE_NONE          0x00    /* disable rxint entirely */
        !           157: #define        ZSWR1_RIE_FIRST         0x08    /* rxint on first char & on S.C. */
        !           158: #define        ZSWR1_RIE               0x10    /* rxint per char & on S.C. */
        !           159: #define        ZSWR1_RIE_SPECIAL_ONLY  0x18    /* rxint on S.C. only */
        !           160:
        !           161: #define        ZSWR1_PE_SC             0x04    /* parity error is special condition */
        !           162: #define        ZSWR1_TIE               0x02    /* transmit interrupt enable */
        !           163: #define        ZSWR1_SIE               0x01    /* external/status interrupt enable */
        !           164:
        !           165: /* HSIS compat */
        !           166: #define        ZSWR1_REQ_ENABLE        (ZSWR1_REQ_WAIT | ZSWR1_REQ_TX)
        !           167:
        !           168: /*
        !           169:  * Bits in Write Register 3 (`Receive Parameters and Control').
        !           170:  * Bits 7 and 6 are taken as a unit.  Note that the receive bits
        !           171:  * per character ordering is insane.
        !           172:  *
        !           173:  * Here `hardware flow control' means CTS enables the transmitter
        !           174:  * and DCD enables the receiver.  The latter is neither interesting
        !           175:  * nor useful, and gets in our way, making it almost unusable.
        !           176:  */
        !           177: #define        ZSWR3_RX_5              0x00    /* receive 5 bits per char */
        !           178: #define        ZSWR3_RX_7              0x40    /* receive 7 bits per char */
        !           179: #define        ZSWR3_RX_6              0x80    /* receive 6 bits per char */
        !           180: #define        ZSWR3_RX_8              0xc0    /* receive 8 bits per char */
        !           181: #define        ZSWR3_RXSIZE            0xc0    /* receive char size mask */
        !           182:
        !           183: #define        ZSWR3_HFC               0x20    /* hardware flow control */
        !           184: #define        ZSWR3_HUNT              0x10    /* enter hunt mode */
        !           185: #define        ZSWR3_RXCRC_ENABLE      0x08    /* enable recv crc calculation */
        !           186: #define        ZSWR3_ADDR_SEARCH_MODE  0x04    /* address search mode (SDLC only) */
        !           187: #define        ZSWR3_SYNC_LOAD_INH     0x02    /* sync character load inhibit */
        !           188: #define        ZSWR3_RX_ENABLE         0x01    /* receiver enable */
        !           189:
        !           190: /*
        !           191:  * Bits in Write Register 4 (`Transmit/Receive Miscellaneous Parameters
        !           192:  * and Modes').  Bits 7&6, 5&4, and 3&2 are taken as units.
        !           193:  */
        !           194: #define        ZSWR4_CLK_X1            0x00    /* clock divisor = 1 */
        !           195: #define        ZSWR4_CLK_X16           0x40    /* clock divisor = 16 */
        !           196: #define        ZSWR4_CLK_X32           0x80    /* clock divisor = 32 */
        !           197: #define        ZSWR4_CLK_X64           0xc0    /* clock divisor = 64 */
        !           198: #define        ZSWR4_CLK_MASK          0xc0    /* clock divisor mask */
        !           199:
        !           200: #define        ZSWR4_MONOSYNC          0x00    /* 8 bit sync char (sync only) */
        !           201: #define        ZSWR4_BISYNC            0x10    /* 16 bit sync char (sync only) */
        !           202: #define        ZSWR4_SDLC              0x20    /* SDLC mode */
        !           203: #define        ZSWR4_EXTSYNC           0x30    /* external sync mode */
        !           204: #define        ZSWR4_SYNC_MASK         0x30    /* sync mode bit mask */
        !           205:
        !           206: #define        ZSWR4_SYNCMODE          0x00    /* no stop bit (sync mode only) */
        !           207: #define        ZSWR4_ONESB             0x04    /* 1 stop bit */
        !           208: #define        ZSWR4_1P5SB             0x08    /* 1.5 stop bits (clk cannot be 1x) */
        !           209: #define        ZSWR4_TWOSB             0x0c    /* 2 stop bits */
        !           210: #define        ZSWR4_SBMASK            0x0c    /* mask of all stop bits */
        !           211:
        !           212: #define        ZSWR4_EVENP             0x02    /* check for even parity */
        !           213: #define        ZSWR4_PARENB            0x01    /* enable parity checking */
        !           214: #define        ZSWR4_PARMASK           0x03    /* mask of all parity bits */
        !           215:
        !           216: /*
        !           217:  * Bits in Write Register 5 (`Transmit Parameter and Controls').
        !           218:  * Bits 6 and 5 are taken as a unit; the ordering is, as with RX
        !           219:  * bits per char, not sensible.
        !           220:  */
        !           221: #define        ZSWR5_DTR               0x80    /* assert (set to -12V) DTR */
        !           222:
        !           223: #define        ZSWR5_TX_5              0x00    /* transmit 5 or fewer bits */
        !           224: #define        ZSWR5_TX_7              0x20    /* transmit 7 bits */
        !           225: #define        ZSWR5_TX_6              0x40    /* transmit 6 bits */
        !           226: #define        ZSWR5_TX_8              0x60    /* transmit 8 bits */
        !           227: #define        ZSWR5_TXSIZE            0x60    /* transmit char size mask */
        !           228:
        !           229: #define        ZSWR5_BREAK             0x10    /* send break (continuous 0s) */
        !           230: #define        ZSWR5_TX_ENABLE         0x08    /* enable transmitter */
        !           231: #define        ZSWR5_CRC16             0x04    /* use CRC16 (off => use SDLC) */
        !           232: #define        ZSWR5_RTS               0x02    /* assert RTS */
        !           233: #define        ZSWR5_TXCRC_ENABLE      0x01    /* enable xmit crc calculation */
        !           234:
        !           235: #ifdef not_done_here
        !           236: /*
        !           237:  * Bits in Write Register 7 when the chip is in SDLC mode.
        !           238:  */
        !           239: #define        ZSWR7_SDLCFLAG          0x7e    /* this value makes SDLC mode work */
        !           240: #endif
        !           241:
        !           242: /*
        !           243:  * Bits in Write Register 7' (ZSWR_ENHANCED above). This register is
        !           244:  * only available on the 85230. Dispite the fact it contains flags
        !           245:  * and not a single value, the register was named as it is read
        !           246:  * via RR14. Weird.
        !           247:  */
        !           248:                        /*      0x80    unused */
        !           249: #define        ZSWR7P_EXTEND_READ      0x40    /* modify read map; make most regs readable */
        !           250: #define        ZSWR7P_TX_FIFO          0x20    /* change level for Tx FIFO empty int */
        !           251: #define        ZSWR7P_DTR_TIME         0x10    /* modifies deact. speed of /DTR//REQ */
        !           252: #define        ZSWR7P_RX_FIFO          0x08    /* Rx FIFO int on 1/2 full? */
        !           253: #define        ZSWR7P_RTS_DEACT        0x04    /* automatically deassert RTS */
        !           254: #define        ZSWR7P_AUTO_EOM_RESET   0x02    /* automatically reset EMO/Tx Underrun */
        !           255: #define        ZSWR7P_AUTO_TX_FLAG     0x01    /* Auto send SDLC flag at transmit start */
        !           256:
        !           257: /*
        !           258:  * Bits in Write Register 9 (`Master Interrupt Control').  Bits 7 & 6
        !           259:  * are taken as a unit and indicate the type of reset; 00 means no reset
        !           260:  * (and is not defined here).
        !           261:  */
        !           262: #define        ZSWR9_HARD_RESET        0xc0    /* force hardware reset */
        !           263: #define        ZSWR9_A_RESET           0x80    /* reset channel A (0) */
        !           264: #define        ZSWR9_B_RESET           0x40    /* reset channel B (1) */
        !           265: #define        ZSWR9_SOFT_INTAC        0x20    /* Not in NMOS version */
        !           266:
        !           267: #define        ZSWR9_STATUS_HIGH       0x10    /* status in high bits of intr vec */
        !           268: #define        ZSWR9_MASTER_IE         0x08    /* master interrupt enable */
        !           269: #define        ZSWR9_DLC               0x04    /* disable lower chain */
        !           270: #define        ZSWR9_NO_VECTOR         0x02    /* no vector */
        !           271: #define        ZSWR9_VECTOR_INCL_STAT  0x01    /* vector includes status */
        !           272:
        !           273: /*
        !           274:  * Bits in Write Register 10 (`Miscellaneous Transmitter/Receiver Control
        !           275:  * Bits').  Bits 6 & 5 are taken as a unit, and some of the bits are
        !           276:  * meaningful only in certain modes.  Bleah.
        !           277:  */
        !           278: #define        ZSWR10_PRESET_ONES      0x80    /* preset CRC to all 1 (else all 0) */
        !           279:
        !           280: #define        ZSWR10_NRZ              0x00    /* NRZ encoding */
        !           281: #define        ZSWR10_NRZI             0x20    /* NRZI encoding */
        !           282: #define        ZSWR10_FM1              0x40    /* FM1 encoding */
        !           283: #define        ZSWR10_FM0              0x60    /* FM0 encoding */
        !           284:
        !           285: #define        ZSWR10_GA_ON_POLL       0x10    /* go active on poll (loop mode) */
        !           286: #define        ZSWR10_MARK_IDLE        0x08    /* all 1s (vs flag) when idle (SDLC) */
        !           287: #define        ZSWR10_ABORT_ON_UNDERRUN 0x4    /* abort on xmit underrun (SDLC) */
        !           288: #define        ZSWR10_LOOP_MODE        0x02    /* loop mode (SDLC) */
        !           289: #define        ZSWR10_6_BIT_SYNC       0x01    /* 6 bits per sync char (sync modes) */
        !           290:
        !           291: /*
        !           292:  * Bits in Write Register 11 (`Clock Mode Control').  Bits 6&5, 4&3, and
        !           293:  * 1&0 are taken as units.  Various bits depend on other bits in complex
        !           294:  * ways; see the Zilog manual.
        !           295:  */
        !           296: #define        ZSWR11_XTAL             0x80    /* have xtal between RTxC* and SYNC* */
        !           297:                                        /* (else have TTL oscil. on RTxC*) */
        !           298: #define        ZSWR11_RXCLK_RTXC       0x00    /* recv clock taken from RTxC* pin */
        !           299: #define        ZSWR11_RXCLK_TRXC       0x20    /* recv clock taken from TRxC* pin */
        !           300: #define        ZSWR11_RXCLK_BAUD       0x40    /* recv clock taken from BRG */
        !           301: #define        ZSWR11_RXCLK_DPLL       0x60    /* recv clock taken from DPLL */
        !           302:
        !           303: #define        ZSWR11_TXCLK_RTXC       0x00    /* xmit clock taken from RTxC* pin */
        !           304: #define        ZSWR11_TXCLK_TRXC       0x08    /* xmit clock taken from TRxC* pin */
        !           305: #define        ZSWR11_TXCLK_BAUD       0x10    /* xmit clock taken from BRG */
        !           306: #define        ZSWR11_TXCLK_DPLL       0x18    /* xmit clock taken from DPLL */
        !           307:
        !           308: #define        ZSWR11_TRXC_OUT_ENA     0x04    /* TRxC* pin will be an output */
        !           309:                                        /* (unless it is being used above) */
        !           310: #define        ZSWR11_TRXC_XTAL        0x00    /* TRxC output from xtal oscillator */
        !           311: #define        ZSWR11_TRXC_XMIT        0x01    /* TRxC output from xmit clock */
        !           312: #define        ZSWR11_TRXC_BAUD        0x02    /* TRxC output from BRG */
        !           313: #define        ZSWR11_TRXC_DPLL        0x03    /* TRxC output from DPLL */
        !           314:
        !           315: /*
        !           316:  * Formula for Write Registers 12 and 13 (`Lower Byte of Baud Rate
        !           317:  * Generator Time Constant' and `Upper Byte of ...').  Inputs:
        !           318:  *
        !           319:  *     f       BRG input clock frequency (in Hz) AFTER division
        !           320:  *             by 1, 16, 32, or 64 (per clock divisor in WR4)
        !           321:  *     bps     desired rate in bits per second (9600, etc)
        !           322:  *
        !           323:  * We want
        !           324:  *
        !           325:  *       f
        !           326:  *     ----- + 0.5 - 2
        !           327:  *     2 bps
        !           328:  *
        !           329:  * rounded down to an integer.  This can be computed entirely
        !           330:  * in integer arithmetic as:
        !           331:  *
        !           332:  *     f + bps
        !           333:  *     ------- - 2
        !           334:  *      2 bps
        !           335:  */
        !           336: #define        BPS_TO_TCONST(f, bps)   ((((f) + (bps)) / (2 * (bps))) - 2)
        !           337:
        !           338: /* inverse of above: given a BRG Time Constant, return Bits Per Second */
        !           339: #define        TCONST_TO_BPS(f, tc)    ((f) / 2 / ((tc) + 2))
        !           340:
        !           341: /*
        !           342:  * Bits in Write Register 14 (`Miscellaneous Control Bits').
        !           343:  * Bits 7 through 5 are taken as a unit and make up a `DPLL command'.
        !           344:  */
        !           345: #define        ZSWR14_DPLL_NOOP        0x00    /* leave DPLL alone */
        !           346: #define        ZSWR14_DPLL_SEARCH      0x20    /* enter search mode */
        !           347: #define        ZSWR14_DPLL_RESET_CM    0x40    /* reset `clock missing' in RR10 */
        !           348: #define        ZSWR14_DPLL_DISABLE     0x60    /* disable DPLL (continuous search) */
        !           349: #define        ZSWR14_DPLL_SRC_BAUD    0x80    /* set DPLL src = BRG */
        !           350: #define        ZSWR14_DPLL_SRC_RTXC    0xa0    /* set DPLL src = RTxC* or xtal osc */
        !           351: #define        ZSWR14_DPLL_FM          0xc0    /* operate in FM mode */
        !           352: #define        ZSWR14_DPLL_NRZI        0xe0    /* operate in NRZI mode */
        !           353:
        !           354: #define        ZSWR14_LOCAL_LOOPBACK   0x10    /* set local loopback mode */
        !           355: #define        ZSWR14_AUTO_ECHO        0x08    /* set auto echo mode */
        !           356: #define        ZSWR14_DTR_REQ          0x04    /* DTR* / REQ* pin gives REQ* */
        !           357: #define        ZSWR14_BAUD_FROM_PCLK   0x02    /* BRG clock taken from PCLK */
        !           358:                                        /* (else from RTxC* pin or xtal osc) */
        !           359: #define        ZSWR14_BAUD_ENA         0x01    /* enable BRG countdown */
        !           360:
        !           361: /*
        !           362:  * Bits in Write Register 15 (`External/Status Interrupt Control').
        !           363:  * Most of these cause status interrupts whenever the corresponding
        !           364:  * bit or pin changes state (i.e., any rising or falling edge).
        !           365:  *
        !           366:  * NOTE: ZSWR15_SDLC_FIFO & ZSWR15_ENABLE_ENHANCED should not be
        !           367:  * set on an NMOS 8530. Also, ZSWR15_ENABLE_ENHANCED is only
        !           368:  * available on the 85230.
        !           369:  */
        !           370: #define        ZSWR15_BREAK_IE         0x80    /* enable break/abort status int */
        !           371: #define        ZSWR15_TXUEOM_IE        0x40    /* enable TX underrun/EOM status int */
        !           372: #define        ZSWR15_CTS_IE           0x20    /* enable CTS* pin status int */
        !           373: #define        ZSWR15_SYNCHUNT_IE      0x10    /* enable SYNC* pin/hunt status int */
        !           374: #define        ZSWR15_DCD_IE           0x08    /* enable DCD* pin status int */
        !           375: #define        ZSWR15_SDLC_FIFO        0x04    /* enable SDLC FIFO enhancements */
        !           376: #define        ZSWR15_ZERO_COUNT_IE    0x02    /* enable BRG-counter = 0 status int */
        !           377: #define        ZSWR15_ENABLE_ENHANCED  0x01    /* enable writing WR7' at reg 7 */
        !           378:
        !           379: /*
        !           380:  * Bits in Read Register 0 (`Transmit/Receive Buffer Status and External
        !           381:  * Status').
        !           382:  */
        !           383: #define        ZSRR0_BREAK             0x80    /* break/abort detected */
        !           384: #define        ZSRR0_TXUNDER           0x40    /* transmit underrun/EOM (sync) */
        !           385: #define        ZSRR0_CTS               0x20    /* clear to send */
        !           386: #define        ZSRR0_SYNC_HUNT         0x10    /* sync/hunt (sync mode) */
        !           387: #define        ZSRR0_DCD               0x08    /* data carrier detect */
        !           388: #define        ZSRR0_TX_READY          0x04    /* transmit buffer empty */
        !           389: #define        ZSRR0_ZERO_COUNT        0x02    /* zero count in baud clock */
        !           390: #define        ZSRR0_RX_READY          0x01    /* received character ready */
        !           391:
        !           392: /*
        !           393:  * Bits in Read Register 1 (the Zilog book does not name this one).
        !           394:  */
        !           395: #define        ZSRR1_EOF               0x80    /* end of frame (SDLC mode) */
        !           396: #define        ZSRR1_FE                0x40    /* CRC/framing error */
        !           397: #define        ZSRR1_DO                0x20    /* data (receiver) overrun */
        !           398: #define        ZSRR1_PE                0x10    /* parity error */
        !           399: #define        ZSRR1_RC0               0x08    /* residue code 0 (SDLC mode) */
        !           400: #define        ZSRR1_RC1               0x04    /* residue code 1 (SDLC mode) */
        !           401: #define        ZSRR1_RC2               0x02    /* residue code 2 (SDLC mode) */
        !           402: #define        ZSRR1_ALL_SENT          0x01    /* all chars out of xmitter (async) */
        !           403:
        !           404: /*
        !           405:  * Read Register 2 in B channel contains status bits if VECTOR_INCL_STAT
        !           406:  * is set.
        !           407:  */
        !           408:
        !           409: /*
        !           410:  * Bits in Read Register 3 (`Interrupt Pending').  Only channel A
        !           411:  * has an RR3.
        !           412:  */
        !           413:                        /*      0x80       unused, returned as 0 */
        !           414:                        /*      0x40       unused, returned as 0 */
        !           415: #define        ZSRR3_IP_A_RX           0x20    /* channel A recv int pending */
        !           416: #define        ZSRR3_IP_A_TX           0x10    /* channel A xmit int pending */
        !           417: #define        ZSRR3_IP_A_STAT         0x08    /* channel A status int pending */
        !           418: #define        ZSRR3_IP_B_RX           0x04    /* channel B recv int pending */
        !           419: #define        ZSRR3_IP_B_TX           0x02    /* channel B xmit int pending */
        !           420: #define        ZSRR3_IP_B_STAT         0x01    /* channel B status int pending */
        !           421:
        !           422: /*
        !           423:  * Bits in Read Register 10 (`contains some miscellaneous status bits').
        !           424:  */
        !           425: #define        ZSRR10_1_CLOCK_MISSING  0x80    /* 1 clock edge missing (FM mode) */
        !           426: #define        ZSRR10_2_CLOCKS_MISSING 0x40    /* 2 clock edges missing (FM mode) */
        !           427:                        /*      0x20       unused */
        !           428: #define        ZSRR10_LOOP_SENDING     0x10    /* xmitter controls loop (SDLC loop) */
        !           429:                        /*      0x08       unused */
        !           430:                        /*      0x04       unused */
        !           431: #define        ZSRR10_ON_LOOP          0x02    /* SCC is on loop (SDLC/X.21 modes) */
        !           432:
        !           433: /*
        !           434:  * Bits in Read Register 15.  This register is one of the few that
        !           435:  * simply reads back the corresponding Write Register.
        !           436:  */
        !           437: #define        ZSRR15_BREAK_IE         0x80    /* break/abort status int enable */
        !           438: #define        ZSRR15_TXUEOM_IE        0x40    /* TX underrun/EOM status int enable */
        !           439: #define        ZSRR15_CTS_IE           0x20    /* CTS* pin status int enable */
        !           440: #define        ZSRR15_SYNCHUNT_IE      0x10    /* SYNC* pin/hunt status int enable */
        !           441: #define        ZSRR15_DCD_IE           0x08    /* DCD* pin status int enable */
        !           442:                        /*      0x04       unused, returned as zero */
        !           443: #define        ZSRR15_ZERO_COUNT_IE    0x02    /* BRG-counter = 0 status int enable */
        !           444:                        /*      0x01       unused, returned as zero */

CVSweb