Annotation of sys/arch/sparc/dev/spifreg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: spifreg.h,v 1.10 2003/06/02 18:40:59 jason Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 1999 Jason L. Wright (jason@thought.net)
! 5: * All rights reserved.
! 6: *
! 7: * Redistribution and use in source and binary forms, with or without
! 8: * modification, are permitted provided that the following conditions
! 9: * are met:
! 10: * 1. Redistributions of source code must retain the above copyright
! 11: * notice, this list of conditions and the following disclaimer.
! 12: * 2. Redistributions in binary form must reproduce the above copyright
! 13: * notice, this list of conditions and the following disclaimer in the
! 14: * documentation and/or other materials provided with the distribution.
! 15: *
! 16: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
! 17: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
! 18: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
! 19: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
! 20: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
! 21: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
! 22: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 23: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
! 24: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
! 25: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 26: * POSSIBILITY OF SUCH DAMAGE.
! 27: */
! 28:
! 29: struct ppcregs {
! 30: volatile u_int8_t in_pdata; /* input data reg */
! 31: volatile u_int8_t in_pstat; /* input status reg */
! 32: volatile u_int8_t in_pctrl; /* input control reg */
! 33: volatile u_int8_t in_pweird; /* input weird reg */
! 34: volatile u_int8_t out_pdata; /* output data reg */
! 35: volatile u_int8_t out_pstat; /* output status reg */
! 36: volatile u_int8_t out_pctrl; /* output control reg */
! 37: volatile u_int8_t out_pweird; /* output weird reg */
! 38: volatile u_int8_t _unused[500]; /* unused space */
! 39: volatile u_int8_t iack_pdata; /* intr-ack data reg */
! 40: volatile u_int8_t iack_pstat; /* intr-ack status reg */
! 41: volatile u_int8_t iack_pctrl; /* intr-ack control reg */
! 42: volatile u_int8_t iack_pweird; /* intr-ack weird reg */
! 43: };
! 44:
! 45: /* Parallel Status: read only */
! 46: #define PPC_PSTAT_ERROR 0x08 /* error */
! 47: #define PPC_PSTAT_SELECT 0x10 /* select */
! 48: #define PPC_PSTAT_PAPER 0x20 /* paper out */
! 49: #define PPC_PSTAT_ACK 0x40 /* ack */
! 50: #define PPC_PSTAT_BUSY 0x80 /* busy */
! 51:
! 52: /* Parallel Control: read/write */
! 53: #define PPC_CTRL_STROBE 0x01 /* strobe, 1=drop strobe */
! 54: #define PPC_CTRL_AFX 0x02 /* auto form-feed */
! 55: #define PPC_CTRL_INIT 0x04 /* init, 1=enable printer */
! 56: #define PPC_CTRL_SLCT 0x08 /* SLC, 1=select printer */
! 57: #define PPC_CTRL_IRQE 0x10 /* IRQ, 1=enable intrs */
! 58: #define PPC_CTRL_OUTPUT 0x20 /* direction: 1=ppc out */
! 59:
! 60: /*
! 61: * The 'stc' is a Cirrus Logic CL-CD180 (either revision B or revision C)
! 62: */
! 63: struct stcregs {
! 64: volatile u_int8_t _unused0[1]; /* 0x00 unused */
! 65: volatile u_int8_t ccr; /* channel command reg */
! 66: volatile u_int8_t srer; /* service req enable reg */
! 67: volatile u_int8_t cor1; /* channel option reg 1 */
! 68: volatile u_int8_t cor2; /* channel option reg 2 */
! 69: volatile u_int8_t cor3; /* channel option reg 3 */
! 70: volatile u_int8_t ccsr; /* channel cntrl status reg */
! 71: volatile u_int8_t rdcr; /* rx data count reg */
! 72: volatile u_int8_t _unused1[1]; /* 0x08 unused */
! 73: volatile u_int8_t schr1; /* special char reg 1 */
! 74: volatile u_int8_t schr2; /* special char reg 2 */
! 75: volatile u_int8_t schr3; /* special char reg 3 */
! 76: volatile u_int8_t schr4; /* special char reg 4 */
! 77: volatile u_int8_t _unused2[3]; /* 0x0d - 0x0f unused */
! 78:
! 79: volatile u_int8_t mcor1; /* modem change option reg 1 */
! 80: volatile u_int8_t mcor2; /* modem change option reg 2 */
! 81: volatile u_int8_t mcr; /* modem change reg */
! 82: volatile u_int8_t _unused3[5]; /* 0x13 - 0x17 unused */
! 83: volatile u_int8_t rtpr; /* rx timeout period reg */
! 84: volatile u_int8_t _unused4[7];
! 85:
! 86: volatile u_int8_t _unused5[8]; /* 0x19 - 0x27 unused */
! 87: volatile u_int8_t msvr; /* modem signal value reg */
! 88: volatile u_int8_t msvrts; /* modem sig value rts reg */
! 89: volatile u_int8_t msvdtr; /* modem sig value dtr reg */
! 90: volatile u_int8_t _unused6[5]; /* 0x2b - 0x2f unused */
! 91:
! 92: volatile u_int8_t _unused7[1]; /* 0x30 unused */
! 93: volatile u_int8_t rbprh; /* rx bit rate period reg hi */
! 94: volatile u_int8_t rbprl; /* rx bit rate period reg lo */
! 95: volatile u_int8_t rbr; /* rx bit reg */
! 96: volatile u_int8_t _unused8[5]; /* 0x34 - 0x38 unused */
! 97: volatile u_int8_t tbprh; /* tx bit rate period reg hi */
! 98: volatile u_int8_t tbprl; /* tx bit rate period reg lo */
! 99: volatile u_int8_t _unused9[5]; /* 0x34 - 0x38 unused */
! 100:
! 101: volatile u_int8_t gsvr; /* global service vector reg */
! 102: volatile u_int8_t gscr1; /* global service chan reg 1 */
! 103: volatile u_int8_t gscr2; /* global service chan reg 2 */
! 104: volatile u_int8_t gscr3; /* global service chan reg 3 */
! 105: volatile u_int8_t _unused10[12]; /* 0x44 - 0x4f unused */
! 106:
! 107: volatile u_int8_t _unused11[16]; /* 0x50 - 0x5f unused */
! 108:
! 109: volatile u_int8_t _unused12[1]; /* 0x60 unused */
! 110: volatile u_int8_t msmr; /* modem service match reg */
! 111: volatile u_int8_t tsmr; /* tx service match reg */
! 112: volatile u_int8_t rsmr; /* rx service match reg */
! 113: volatile u_int8_t car; /* channel access reg */
! 114: volatile u_int8_t srsr; /* service request stat reg */
! 115: volatile u_int8_t srcr; /* service request conf reg */
! 116: volatile u_int8_t _unused13[4]; /* 0x67 - 0x6a unused */
! 117: volatile u_int8_t gfrcr; /* global firmwr rev code reg */
! 118: volatile u_int8_t _unused14[4]; /* 0x6c - 0x6f unused */
! 119:
! 120: volatile u_int8_t pprh; /* prescalar period reg hi */
! 121: volatile u_int8_t pprl; /* prescalar period reg lo */
! 122: volatile u_int8_t _unused15[3]; /* 0x72 - 0x74 unused */
! 123: volatile u_int8_t mrar; /* modem request ack reg */
! 124: volatile u_int8_t trar; /* tx request ack reg */
! 125: volatile u_int8_t rrar; /* rx request ack reg */
! 126: volatile u_int8_t rdr; /* rx data reg */
! 127: volatile u_int8_t _unused16[1]; /* 0x79 unused */
! 128: volatile u_int8_t rcsr; /* rx char status reg */
! 129: volatile u_int8_t tdr; /* tx data reg */
! 130: volatile u_int8_t _unused17[3]; /* 0x7c - 0x7e unused */
! 131: volatile u_int8_t eosrr; /* end of service req reg */
! 132: };
! 133:
! 134: /* Global Firmware Revision Code Register (rw) */
! 135: #define CD180_GFRCR_REV_B 0x81 /* CL-CD180B */
! 136: #define CD180_GFRCR_REV_C 0x82 /* CL-CD180C */
! 137:
! 138: /* Service Request Configuration Register (rw) (CD180C or higher) */
! 139: #define CD180_SRCR_PKGTYP 0x80 /* pkg type,0=PLCC,1=PQFP */
! 140: #define CD180_SRCR_REGACKEN 0x40 /* register ack enable */
! 141: #define CD180_SRCR_DAISYEN 0x20 /* daisy chain enable */
! 142: #define CD180_SRCR_GLOBPRI 0x10 /* global priority */
! 143: #define CD180_SRCR_UNFAIR 0x08 /* use unfair interrupts */
! 144: #define CD180_SRCR_AUTOPRI 0x02 /* automatic priority */
! 145: #define CD180_SRCR_PRISEL 0x01 /* select rx/tx as high pri */
! 146:
! 147: /* Prescalar Period Register High (rw) */
! 148: #define CD180_PPRH 0xf0 /* high byte */
! 149: #define CD180_PPRL 0x00 /* low byte */
! 150:
! 151: /* Global Service Vector Register (rw) */
! 152: /* Modem Request Acknowledgement Register (ro) (and IACK equivalent) */
! 153: /* Receive Request Acknowledgement Register (ro) (and IACK equivalent) */
! 154: /* Transmit Request Acknowledgement Register (ro) (and IACK equivalent) */
! 155: #define CD180_GSVR_USERMASK 0xf8 /* user defined bits */
! 156: #define CD180_GSVR_IMASK 0x07 /* interrupt type mask */
! 157: #define CD180_GSVR_NOREQUEST 0x00 /* no request pending */
! 158: #define CD180_GSVR_STATCHG 0x01 /* modem signal change */
! 159: #define CD180_GSVR_TXDATA 0x02 /* tx service request */
! 160: #define CD180_GSVR_RXGOOD 0x03 /* rx service request */
! 161: #define CD180_GSVR_reserved1 0x04 /* reserved */
! 162: #define CD180_GSVR_reserved2 0x05 /* reserved */
! 163: #define CD180_GSVR_reserved3 0x06 /* reserved */
! 164: #define CD180_GSVR_RXEXCEPTION 0x07 /* rx exception request */
! 165:
! 166: /* Service Request Status Register (ro) (CD180C and higher) */
! 167: #define CD180_SRSR_MREQINT 0x01 /* modem request internal */
! 168: #define CD180_SRSR_MREQEXT 0x02 /* modem request external */
! 169: #define CD180_SRSR_TREQINT 0x04 /* tx request internal */
! 170: #define CD180_SRSR_TREQEXT 0x08 /* tx request external */
! 171: #define CD180_SRSR_RREQINT 0x10 /* rx request internal */
! 172: #define CD180_SRSR_RREQEXT 0x20 /* rx request external */
! 173: #define CD180_SRSR_ILV_MASK 0xc0 /* internal service context */
! 174: #define CD180_SRSR_ILV_NONE 0x00 /* not in service context */
! 175: #define CD180_SRSR_ILV_RX 0xc0 /* in rx service context */
! 176: #define CD180_SRSR_ILV_TX 0x80 /* in tx service context */
! 177: #define CD180_SRSR_ILV_MODEM 0x40 /* in modem service context */
! 178:
! 179: /* Global Service Channel Register 1,2,3 (rw) */
! 180: #define CD180_GSCR_CHANNEL(gscr) (((gscr) >> 2) & 7)
! 181:
! 182: /* Receive Data Count Register (ro) */
! 183: #define CD180_RDCR_MASK 0x0f /* mask for fifo length */
! 184:
! 185: /* Receive Character Status Register (ro) */
! 186: #define CD180_RCSR_TO 0x80 /* time out */
! 187: #define CD180_RCSR_SCD2 0x40 /* special char detect 2 */
! 188: #define CD180_RCSR_SCD1 0x20 /* special char detect 1 */
! 189: #define CD180_RCSR_SCD0 0x10 /* special char detect 0 */
! 190: #define CD180_RCSR_BE 0x08 /* break exception */
! 191: #define CD180_RCSR_PE 0x04 /* parity exception */
! 192: #define CD180_RCSR_FE 0x02 /* framing exception */
! 193: #define CD180_RCSR_OE 0x01 /* overrun exception */
! 194:
! 195: /* Service Request Enable Register (rw) */
! 196: #define CD180_SRER_DSR 0x80 /* DSR service request */
! 197: #define CD180_SRER_CD 0x40 /* CD service request */
! 198: #define CD180_SRER_CTS 0x20 /* CTS service request */
! 199: #define CD180_SRER_RXD 0x10 /* RXD service request */
! 200: #define CD180_SRER_RXSCD 0x08 /* RX special char request */
! 201: #define CD180_SRER_TXD 0x04 /* TX ready service request */
! 202: #define CD180_SRER_TXE 0x02 /* TX empty service request */
! 203: #define CD180_SRER_NNDT 0x01 /* No new data timeout req */
! 204:
! 205: /* Channel Command Register (rw) */
! 206: /* Reset Channel Command */
! 207: #define CD180_CCR_CMD_RESET 0x80 /* chip/channel reset */
! 208: #define CD180_CCR_RESETALL 0x01 /* global reset */
! 209: #define CD180_CCR_RESETCHAN 0x00 /* current channel reset */
! 210: /* Channel Option Register Command */
! 211: #define CD180_CCR_CMD_COR 0x40 /* channel opt reg changed */
! 212: #define CD180_CCR_CORCHG1 0x02 /* cor1 has changed */
! 213: #define CD180_CCR_CORCHG2 0x04 /* cor2 has changed */
! 214: #define CD180_CCR_CORCHG3 0x08 /* cor3 has changed */
! 215: /* Send Special Character Command */
! 216: #define CD180_CCR_CMD_SPC 0x20 /* send special chars changed */
! 217: #define CD180_CCR_SSPC0 0x01 /* send special char 0 change */
! 218: #define CD180_CCR_SSPC1 0x02 /* send special char 1 change */
! 219: #define CD180_CCR_SSPC2 0x04 /* send special char 2 change */
! 220: /* Channel Control Command */
! 221: #define CD180_CCR_CMD_CHAN 0x10 /* channel control command */
! 222: #define CD180_CCR_CHAN_TXEN 0x08 /* enable channel tx */
! 223: #define CD180_CCR_CHAN_TXDIS 0x04 /* disable channel tx */
! 224: #define CD180_CCR_CHAN_RXEN 0x02 /* enable channel rx */
! 225: #define CD180_CCR_CHAN_RXDIS 0x01 /* disable channel rx */
! 226:
! 227: /* Channel Option Register 1 (rw) */
! 228: #define CD180_COR1_EVENPAR 0x00 /* even parity */
! 229: #define CD180_COR1_ODDPAR 0x80 /* odd parity */
! 230: #define CD180_COR1_PARMODE_NO 0x00 /* no parity */
! 231: #define CD180_COR1_PARMODE_FORCE 0x20 /* force (odd=1, even=0) */
! 232: #define CD180_COR1_PARMODE_NORMAL 0x40 /* normal parity mode */
! 233: #define CD180_COR1_PARMODE_NA 0x60 /* notused */
! 234: #define CD180_COR1_IGNPAR 0x10 /* ignore parity */
! 235: #define CD180_COR1_STOP1 0x00 /* 1 stop bit */
! 236: #define CD180_COR1_STOP15 0x04 /* 1.5 stop bits */
! 237: #define CD180_COR1_STOP2 0x08 /* 2 stop bits */
! 238: #define CD180_COR1_STOP25 0x0c /* 2.5 stop bits */
! 239: #define CD180_COR1_CS5 0x00 /* 5 bit characters */
! 240: #define CD180_COR1_CS6 0x01 /* 6 bit characters */
! 241: #define CD180_COR1_CS7 0x02 /* 7 bit characters */
! 242: #define CD180_COR1_CS8 0x03 /* 8 bit characters */
! 243:
! 244: /* Channel Option Register 2 (rw) */
! 245: #define CD180_COR2_IXM 0x80 /* implied xon mode */
! 246: #define CD180_COR2_TXIBE 0x40 /* tx in-band flow control */
! 247: #define CD180_COR2_ETC 0x20 /* embedded tx command enbl */
! 248: #define CD180_COR2_LLM 0x10 /* local loopback mode */
! 249: #define CD180_COR2_RLM 0x08 /* remote loopback mode */
! 250: #define CD180_COR2_RTSAO 0x04 /* RTS automatic output enbl */
! 251: #define CD180_COR2_CTSAE 0x02 /* CTS automatic enable */
! 252: #define CD180_COR2_DSRAE 0x01 /* DSR automatic enable */
! 253:
! 254: /* Channel Option Register 3 (rw) */
! 255: #define CD180_COR3_XON2 0x80 /* XON char in spc1&3 */
! 256: #define CD180_COR3_XON1 0x00 /* XON char in spc1 */
! 257: #define CD180_COR3_XOFF2 0x40 /* XOFF char in spc2&4 */
! 258: #define CD180_COR3_XOFF1 0x00 /* XOFF char in spc2 */
! 259: #define CD180_COR3_FCT 0x20 /* flow control transparency */
! 260: #define CD180_COR3_SCDE 0x10 /* special char recognition */
! 261: #define CD180_COR3_RXFIFO_MASK 0x0f /* rx fifo threshold */
! 262:
! 263: /* Channel Control Status Register (ro) */
! 264: #define CD180_CCSR_RXEN 0x80 /* rx is enabled */
! 265: #define CD180_CCSR_RXFLOFF 0x40 /* rx flow-off */
! 266: #define CD180_CCSR_RXFLON 0x20 /* rx flow-on */
! 267: #define CD180_CCSR_TXEN 0x08 /* tx is enabled */
! 268: #define CD180_CCSR_TXFLOFF 0x04 /* tx flow-off */
! 269: #define CD180_CCSR_TXFLON 0x02 /* tx flow-on */
! 270:
! 271: /* Receiver Bit Register (ro) */
! 272: #define CD180_RBR_RXD 0x40 /* state of RxD pin */
! 273: #define CD180_RBR_STARTHUNT 0x20 /* looking for start bit */
! 274:
! 275: /* Modem Change Register (rw) */
! 276: #define CD180_MCR_DSR 0x80 /* DSR changed */
! 277: #define CD180_MCR_CD 0x40 /* CD changed */
! 278: #define CD180_MCR_CTS 0x20 /* CTS changed */
! 279:
! 280: /* Modem Change Option Register 1 (rw) */
! 281: #define CD180_MCOR1_DSRZD 0x80 /* catch 0->1 DSR changes */
! 282: #define CD180_MCOR1_CDZD 0x40 /* catch 0->1 CD changes */
! 283: #define CD180_MCOR1_CTSZD 0x40 /* catch 0->1 CTS changes */
! 284: #define CD180_MCOR1_DTRTHRESH 0x0f /* DTR threshold mask */
! 285:
! 286: /* Modem Change Option Register 2 (rw) */
! 287: #define CD180_MCOR2_DSROD 0x80 /* catch 1->0 DSR changes */
! 288: #define CD180_MCOR2_CDOD 0x40 /* catch 1->0 CD changes */
! 289: #define CD180_MCOR2_CTSOD 0x20 /* catch 1->0 CTS changes */
! 290:
! 291: /* Modem Signal Value Register (rw) */
! 292: #define CD180_MSVR_DSR 0x80 /* DSR input state */
! 293: #define CD180_MSVR_CD 0x40 /* CD input state */
! 294: #define CD180_MSVR_CTS 0x20 /* CTS input state */
! 295: #define CD180_MSVR_DTR 0x02 /* DTR output state */
! 296: #define CD180_MSVR_RTS 0x01 /* RTS output state */
! 297:
! 298: /* Modem Signal Value Register - Request To Send (w) (CD180C and higher) */
! 299: #define CD180_MSVRTS_RTS 0x01 /* RTS signal value */
! 300:
! 301: /* Modem Signal Value Register - Data Terminal Ready (w) (CD180C and higher) */
! 302: #define CD180_MSVDTR_DTR 0x02 /* DTR signal value */
! 303:
! 304: /*
! 305: * The register map for the SUNW,spif looks something like:
! 306: * Offset: Function:
! 307: * 0000 - 03ff Boot ROM
! 308: * 0400 - 0407 dtr latches (one per port)
! 309: * 0408 - 07ff unused
! 310: * 0800 - 087f CD180 registers (normal mapping)
! 311: * 0880 - 0bff unused
! 312: * 0c00 - 0c7f CD180 registers (*iack mapping)
! 313: * 0c80 - 0dff unused
! 314: * 0e00 - 1fff PPC registers
! 315: *
! 316: * One note about the DTR latches: The values stored there are reversed.
! 317: * By writing a 1 to the latch, DTR is lowered, and by writing a 0, DTR
! 318: * is raised. The latches cannot be read, and no other value can be written
! 319: * there or the system will crash due to "excessive bus loading (see
! 320: * SBus loading and capacitance spec)"
! 321: *
! 322: * The *iack registers are read/written with the IACK bit set. When
! 323: * the interrupt routine starts, it reads the MRAR, TRAR, and RRAR registers
! 324: * from this mapping. This signals an interrupt acknowledgement cycle.
! 325: * (NOTE: these are not really the MRAR, TRAR, and RRAR... They are copies
! 326: * of the GSVR, I just mapped them to the same location as the mrar, trar,
! 327: * and rrar because it seemed appropriate).
! 328: */
! 329: struct spifregs {
! 330: volatile u_int8_t _unused1[1024]; /* 0x000-0x3ff unused */
! 331: volatile u_int8_t dtrlatch[8]; /* per port dtr latch */
! 332: volatile u_int8_t _unused2[1016]; /* 0x408-0x7ff unused */
! 333: struct stcregs stc; /* regular cd-180 regs */
! 334: volatile u_int8_t _unused3[896]; /* 0x880-0xbff unused */
! 335: struct stcregs istc; /* *iack cd-180 regs */
! 336: volatile u_int8_t _unused4[384]; /* 0xc80-0xdff unused */
! 337: struct ppcregs ppc; /* parallel port regs */
! 338: };
! 339:
! 340: /*
! 341: * The mapping of minor device number -> card and port is done as
! 342: * follows by default:
! 343: *
! 344: * +---+---+---+---+---+---+---+---+
! 345: * | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
! 346: * +---+---+---+---+---+---+---+---+
! 347: * | | | | | | | |
! 348: * | | | | | +---+---+---> port number
! 349: * | | | | |
! 350: * | | | | +---------------> unused
! 351: * | | | |
! 352: * | | | +-------------------> dialout (on tty ports)
! 353: * | | |
! 354: * | | +-----------------------> unused
! 355: * | |
! 356: * +---+---------------------------> card number
! 357: *
! 358: */
! 359: #define SPIF_MAX_CARDS 4
! 360: #define SPIF_MAX_TTY 8
! 361: #define SPIF_MAX_BPP 1
! 362:
! 363: /*
! 364: * device selectors
! 365: */
! 366: #define SPIF_CARD(x) ((minor(x) >> 6) & 0x03)
! 367: #define SPIF_PORT(x) (minor(x) & 0x07)
! 368: #define STTY_DIALOUT(x) (minor(x) & 0x10)
! 369:
! 370: #define STTY_RX_FIFO_THRESHOLD 4
! 371: #define STTY_RX_DTR_THRESHOLD 7
! 372: #define CD180_TX_FIFO_SIZE 8 /* 8 chars of fifo */
! 373:
! 374: /*
! 375: * These are the offsets of the MRAR, TRAR, and RRAR in *IACK space.
! 376: * The high bit must be set as per specs for the MSMR, TSMR, and RSMR.
! 377: */
! 378: #define SPIF_MSMR 0xf5 /* offset of MRAR | 0x80 */
! 379: #define SPIF_TSMR 0xf6 /* offset of TRAR | 0x80 */
! 380: #define SPIF_RSMR 0xf7 /* offset of RRAR | 0x80 */
! 381:
! 382: /*
! 383: * "verosc" node tells which oscillator we have.
! 384: */
! 385: #define SPIF_OSC9 1 /* 9.8304 MHz */
! 386: #define SPIF_OSC10 2 /* 10MHz */
! 387:
! 388: /*
! 389: * There are two interrupts, serial gets interrupt[0], and parallel
! 390: * gets interrupt[1]
! 391: */
! 392: #define SERIAL_INTR 0
! 393: #define PARALLEL_INTR 1
! 394:
! 395: /*
! 396: * spif tty flags
! 397: */
! 398: #define STTYF_CDCHG 0x01 /* carrier changed */
! 399: #define STTYF_RING_OVERFLOW 0x02 /* ring buffer overflowed */
! 400: #define STTYF_DONE 0x04 /* done... flush buffers */
! 401: #define STTYF_SET_BREAK 0x08 /* set break signal */
! 402: #define STTYF_CLR_BREAK 0x10 /* clear break signal */
! 403: #define STTYF_STOP 0x20 /* stopped */
! 404:
! 405: #define STTY_RBUF_SIZE (2 * 512)
CVSweb