141480Smckusick /* 241480Smckusick * Copyright (c) 1982, 1986, 1990 Regents of the University of California. 341480Smckusick * All rights reserved. 441480Smckusick * 541480Smckusick * %sccs.include.redist.c% 641480Smckusick * 7*49308Shibler * @(#)dcareg.h 7.3 (Berkeley) 05/07/91 841480Smckusick */ 941480Smckusick 1041480Smckusick struct dcadevice { 1141480Smckusick u_char dca_pad0; 1241480Smckusick volatile u_char dca_irid; 1341480Smckusick volatile short dca_ic; 1441480Smckusick volatile short dca_ocbrc; 1541480Smckusick volatile short dca_lcsm; 1641480Smckusick short dca_pad1[4]; 1741480Smckusick u_char dca_pad2; 1841480Smckusick volatile u_char dca_data; 1941480Smckusick volatile short dca_ier; 2044318Shibler u_char dca_pad4; 21*49308Shibler volatile u_char dca_iir; /* read-only */ 22*49308Shibler #define dca_fifo dca_iir /* write-only */ 2341480Smckusick volatile short dca_cfcr; 2441480Smckusick volatile short dca_mcr; 2541480Smckusick volatile short dca_lsr; 2641480Smckusick u_char dca_pad3; 2741480Smckusick volatile u_char dca_msr; 2841480Smckusick }; 2941480Smckusick 3041480Smckusick /* interface reset/id */ 3141480Smckusick #define DCAID0 0x02 3241480Smckusick #define DCAREMID0 0x82 3341480Smckusick #define DCAID1 0x42 3441480Smckusick #define DCAREMID1 0xC2 3541480Smckusick 3641480Smckusick /* interrupt control */ 3741480Smckusick #define DCAIPL(x) ((((x) >> 4) & 3) + 3) 3841480Smckusick #define IC_IR 0x40 3941480Smckusick #define IC_IE 0x80 4041480Smckusick 4141480Smckusick /* 16 bit baud rate divisor (lower byte in dca_data, upper in dca_ier) */ 4241480Smckusick #define DCABRD(x) (153600 / (x)) 4341480Smckusick 4441480Smckusick /* interrupt enable register */ 4541480Smckusick #define IER_ERXRDY 0x1 4641480Smckusick #define IER_ETXRDY 0x2 4741480Smckusick #define IER_ERLS 0x4 4841480Smckusick #define IER_EMSC 0x8 4941480Smckusick 5041480Smckusick /* interrupt identification register */ 51*49308Shibler #define IIR_IMASK 0xf 52*49308Shibler #define IIR_RXTOUT 0xc 53*49308Shibler #define IIR_RLS 0x6 54*49308Shibler #define IIR_RXRDY 0x4 55*49308Shibler #define IIR_TXRDY 0x2 5641480Smckusick #define IIR_NOPEND 0x1 57*49308Shibler #define IIR_MLSC 0x0 58*49308Shibler #define IIR_FIFO_MASK 0xc0 /* set if FIFOs are enabled */ 5941480Smckusick 60*49308Shibler /* fifo control register */ 61*49308Shibler #define FIFO_ENABLE 0x01 62*49308Shibler #define FIFO_RCV_RST 0x02 63*49308Shibler #define FIFO_XMT_RST 0x04 64*49308Shibler #define FIFO_DMA_MODE 0x08 65*49308Shibler #define FIFO_TRIGGER_1 0x00 66*49308Shibler #define FIFO_TRIGGER_4 0x40 67*49308Shibler #define FIFO_TRIGGER_8 0x80 68*49308Shibler #define FIFO_TRIGGER_14 0xc0 69*49308Shibler 7041480Smckusick /* character format control register */ 7141480Smckusick #define CFCR_DLAB 0x80 7241480Smckusick #define CFCR_SBREAK 0x40 7341480Smckusick #define CFCR_PZERO 0x30 7441480Smckusick #define CFCR_PONE 0x20 7541480Smckusick #define CFCR_PEVEN 0x10 7641480Smckusick #define CFCR_PODD 0x00 7741480Smckusick #define CFCR_PENAB 0x08 7841480Smckusick #define CFCR_STOPB 0x04 7941480Smckusick #define CFCR_8BITS 0x03 8041480Smckusick #define CFCR_7BITS 0x02 8141480Smckusick #define CFCR_6BITS 0x01 8241480Smckusick #define CFCR_5BITS 0x00 8341480Smckusick 8441480Smckusick /* modem control register */ 8541480Smckusick #define MCR_LOOPBACK 0x10 8641480Smckusick #define MCR_SRTS 0x08 8741480Smckusick #define MCR_DRS 0x04 8841480Smckusick #define MCR_RTS 0x02 8941480Smckusick #define MCR_DTR 0x01 9041480Smckusick 9141480Smckusick /* line status register */ 92*49308Shibler #define LSR_RCV_FIFO 0x80 9341480Smckusick #define LSR_TSRE 0x40 9441480Smckusick #define LSR_TXRDY 0x20 9541480Smckusick #define LSR_BI 0x10 9641480Smckusick #define LSR_FE 0x08 9741480Smckusick #define LSR_PE 0x04 9841480Smckusick #define LSR_OE 0x02 9941480Smckusick #define LSR_RXRDY 0x01 100*49308Shibler #define LSR_RCV_MASK 0x1f 10141480Smckusick 10241480Smckusick /* modem status register */ 10341480Smckusick #define MSR_DCD 0x80 10441480Smckusick #define MSR_RI 0x40 10541480Smckusick #define MSR_DSR 0x20 10641480Smckusick #define MSR_CTS 0x10 10744318Shibler #define MSR_DDCD 0x08 10841480Smckusick #define MSR_TERI 0x04 10941480Smckusick #define MSR_DDSR 0x02 11044318Shibler #define MSR_DCTS 0x01 11141480Smckusick 11241480Smckusick /* 11341480Smckusick * WARNING: Serial console is assumed to be at SC9 11441480Smckusick * and CONUNIT must be 0. 11541480Smckusick */ 116*49308Shibler #define CONSCODE (9) 117*49308Shibler #define CONUNIT (0) 118