[BACK]Return to dcmreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / hp300 / dev

Annotation of sys/arch/hp300/dev/dcmreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: dcmreg.h,v 1.5 2007/05/25 21:27:15 krw Exp $  */
                      2: /*     $NetBSD: dcmreg.h,v 1.5 1996/02/24 00:55:05 thorpej Exp $       */
                      3:
                      4: /*
                      5:  * Copyright (c) 1988 University of Utah.
                      6:  * Copyright (c) 1982, 1986, 1990, 1993
                      7:  *     The Regents of the University of California.  All rights reserved.
                      8:  *
                      9:  * This code is derived from software contributed to Berkeley by
                     10:  * the Systems Programming Group of the University of Utah Computer
                     11:  * Science Department.
                     12:  *
                     13:  * Redistribution and use in source and binary forms, with or without
                     14:  * modification, are permitted provided that the following conditions
                     15:  * are met:
                     16:  * 1. Redistributions of source code must retain the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer.
                     18:  * 2. Redistributions in binary form must reproduce the above copyright
                     19:  *    notice, this list of conditions and the following disclaimer in the
                     20:  *    documentation and/or other materials provided with the distribution.
                     21:  * 3. Neither the name of the University nor the names of its contributors
                     22:  *    may be used to endorse or promote products derived from this software
                     23:  *    without specific prior written permission.
                     24:  *
                     25:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     26:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     27:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     28:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     29:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     30:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     31:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     32:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     33:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     34:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     35:  * SUCH DAMAGE.
                     36:  *
                     37:  * from: Utah $Hdr: dcmreg.h 1.7 92/01/21$
                     38:  *
                     39:  *     @(#)dcmreg.h    8.1 (Berkeley) 6/10/93
                     40:  */
                     41:
                     42: #include <hp300/dev/iotypes.h>         /* XXX */
                     43:
                     44: struct dcmdevice {        /* host address, only odd bytes addressed */
                     45:        u_char  dcm_pad0;
                     46:        vu_char dcm_rsid;               /* Reset / ID                   0001 */
                     47:        u_char  dcm_pad1;
                     48:        vu_char dcm_ic;                 /* Interrupt control register   0003 */
                     49:        u_char  dcm_pad2;
                     50:        vu_char dcm_sem;                /* Semaphore register           0005 */
                     51:        u_char  dcm_pad3[0x7ffa];       /* Unaddressable        0006-7fff */
                     52:        u_char  dcm_pad4;
                     53:        vu_char dcm_iir;                /* Interrupt ident register     8001 */
                     54:        u_char  dcm_pad5;
                     55:        vu_char dcm_cr;                 /* Command register             8003 */
                     56:        u_char  dcm_pad6[0x3fc];        /* Card scratch         8004-83ff */
                     57:        struct  dcmrfifo {
                     58:                u_char  ptr_pad1;
                     59:                vu_char data_char;
                     60:                u_char  ptr_pad2;
                     61:                vu_char data_stat;
                     62:        } dcm_rfifos[4][0x80];          /* Receive queues               8400 */
                     63:        struct  {
                     64:                u_char  ptr_pad1;
                     65:                vu_char data_data;
                     66:        } dcm_bmap[0x100];              /* Bitmap table                 8c00 */
                     67:        struct  {
                     68:                u_char  ptr_pad;
                     69:                vu_char ptr;
                     70:        } dcm_rhead[4];                 /* Fifo head - receive          8e00 */
                     71:        struct  {
                     72:                u_char  ptr_pad;
                     73:                vu_char  ptr;
                     74:        } dcm_rtail[4];                 /* Fifo tail - receive          8e08 */
                     75:        struct  {
                     76:                u_char  ptr_pad;
                     77:                vu_char ptr;
                     78:        } dcm_thead[4];                 /* Fifo head - transmit         8e10 */
                     79:        struct  {
                     80:                u_char  ptr_pad;
                     81:                vu_char ptr;
                     82:        } dcm_ttail[4];                 /* Fifo tail - transmit         8e18 */
                     83:        struct  {
                     84:                u_char  pad1;
                     85:                vu_char dcm_conf;
                     86:                u_char  pad2;
                     87:                vu_char dcm_baud;
                     88:        } dcm_data[4];                  /* Configuration registers      8e20 */
                     89:        struct  modemreg {
                     90:                u_char  pad0;
                     91:                vu_char mdmin;          /* Modem in                     8e31 */
                     92:                u_char  pad1;
                     93:                vu_char mdmout;         /* Modem out                    8e33 */
                     94:                u_char  pad2;
                     95:                vu_char mdmmsk;         /* Modem mask                   8e35 */
                     96:        } dcm_modem0;
                     97:        struct  {
                     98:                u_char pad1;
                     99:                vu_char dcm_data;
                    100:        } dcm_cmdtab[4];                /* Command tables               8e36 */
                    101:        struct  {
                    102:                u_char pad1;
                    103:                vu_char dcm_data;
                    104:        } dcm_icrtab[4];                /* Interrupt data               8e3e */
                    105:        u_char  dcm_pad10;
                    106:        vu_char dcm_stcon;              /* Self test condition          8e47 */
                    107:        struct modemreg dcm_modem1;     /* 638 Modem port1              8e48 */
                    108:        struct modemreg dcm_modem2;     /* 638 Modem port2              8e4e */
                    109:        struct modemreg dcm_modem3;     /* 638 Modem port3              8e54 */
                    110:        u_char  dcm_pad11;
                    111:        vu_char dcm_modemchng;          /* 638 Modem change mask        8e5b */
                    112:        u_char  dcm_pad12;
                    113:        vu_char dcm_modemintr;          /* 638 Modem interrupt mask     8e5d */
                    114:        u_char  dcm_pad13[0x82];        /* Undef Shared Ram     8e5e-8edf */
                    115:        struct  dcmtfifo {
                    116:            u_char  ptr_pad1;
                    117:            vu_char  data_char;
                    118:        } dcm_tfifos[4][0x10];          /* Transmit queues              8ee0 */
                    119: };
                    120:
                    121: /*
                    122:  * Overlay structure for port specific queue "registers".
                    123:  * Starts at offset 0x8E00+(port*2).
                    124:  */
                    125: struct dcmpreg {
                    126:        u_char          pad0;           /* +00 */
                    127:        vu_char r_head;                 /* +01 */
                    128:        u_char          pad1[7];        /* +02 */
                    129:        vu_char r_tail;                 /* +09 */
                    130:        u_char          pad2[7];        /* +0A */
                    131:        vu_char t_head;                 /* +11 */
                    132:        u_char          pad3[7];        /* +12 */
                    133:        vu_char t_tail;                 /* +19 */
                    134: };
                    135: #define        dcm_preg(d, p)  ((struct dcmpreg *)((u_int)(d)+0x8e00+(p)*2))
                    136:
                    137: /* interface reset/id */
                    138: #define DCMCON          0x80   /* REMOTE/LOCAL switch, read */
                    139: #define        DCMID           0x5     /* hardwired card id, read */
                    140: #define        DCMRS           0x80    /* software reset, write */
                    141:
                    142: /* interrupt control */
                    143: #define        DCMIPL(x)       ((((x) >> 4) & 3) + 3)  /* interrupt level, read */
                    144: #define        IC_IR           0x40    /* interrupt request, read */
                    145: #define        IC_IE           0x80    /* interrupt enable, write */
                    146: #define        IC_ID           0x00    /* interrupt disable, write */
                    147:
                    148:
                    149: /* Semaphore control */
                    150: #define        SEM_BSY         0x80    /* read */
                    151: #define SEM_CLR         0xFF   /* write */
                    152: #define SEM_LOCK(dcm)  while ((dcm)->dcm_sem & SEM_BSY)
                    153: #define SEM_UNLOCK(dcm)        (dcm)->dcm_sem = SEM_CLR
                    154:
                    155: /* command register */
                    156: #define        CR_PORT0        0x1
                    157: #define        CR_PORT1        0x2
                    158: #define        CR_PORT2        0x4
                    159: #define        CR_PORT3        0x8
                    160: #define        CR_MODM         0x10    /* change modem output lines */
                    161: #define        CR_TIMER        0x20    /* 16ms interrupt timer toggle */
                    162: #define        CR_SELFT        0x40    /* run self test */
                    163: #define CR_MASK                0x7f
                    164:
                    165: /* interrupt ident register */
                    166: #define        IIR_PORT0       0x1
                    167: #define        IIR_PORT1       0x2
                    168: #define        IIR_PORT2       0x4
                    169: #define        IIR_PORT3       0x8
                    170: #define        IIR_SELFT       0x10    /* self test completed */
                    171: #define        IIR_MODM        0x20    /* change in modem input lines */
                    172: #define        IIR_TIMEO       0x40    /* Time out */
                    173: #define IIR_MASK       0x7f
                    174:
                    175: /* self test cond reg */
                    176: #define ST_OK           0xe0
                    177:
                    178: /* Line configuration register */
                    179: #define        LC_PNO          0x00
                    180: #define        LC_PODD         0x01
                    181: #define        LC_PEVEN        0x02
                    182: #define        LC_PMSK         0x03
                    183:
                    184: #define        LC_1STOP        0x00
                    185: #define        LC_1HSTOP       0x04
                    186: #define        LC_2STOP        0x08
                    187: #define        LC_STOPMSK      0x0b
                    188:
                    189: #define        LC_8BITS        0x30
                    190: #define        LC_7BITS        0x20
                    191: #define        LC_6BITS        0x10
                    192: #define        LC_5BITS        0x00
                    193: #define        LC_BITMSK       0x30
                    194:
                    195: /* baud reg */
                    196: #define BR_0           0x00
                    197: #define BR_50          0x01
                    198: #define BR_75          0x02
                    199: #define BR_110         0x03
                    200: #define BR_134         0x04
                    201: #define BR_150         0x05
                    202: #define BR_300         0x06
                    203: #define BR_600         0x07
                    204: #define BR_900         0x08
                    205: #define BR_1200                0x09
                    206: #define BR_1800                0x0a
                    207: #define BR_2400                0x0b
                    208: #define BR_3600                0x0c
                    209: #define BR_4800                0x0d
                    210: #define BR_7200                0x0e
                    211: #define BR_9600                0x0f
                    212: #define BR_19200       0x10
                    213: #define BR_38400       0x11
                    214:
                    215: /* modem input register */
                    216: #define        MI_CTS          0x08
                    217: #define        MI_DM           0x04
                    218: #define        MI_CD           0x02
                    219: #define        MI_RI           0x01
                    220:
                    221: /* modem output register */
                    222: #define        MO_SR           0x04
                    223: #define        MO_DTR          0x02
                    224: #define        MO_RTS          0x01
                    225: #define        MO_ON           ((MO_DTR) | (MO_RTS))
                    226: #define        MO_OFF          0x00
                    227:
                    228: /* cmd-tab values, write */
                    229: #define CT_CON         0x1     /* configuration change */
                    230: #define CT_TX          0x2     /* transmit buffer not empty */
                    231: #define CT_BRK         0x4     /* toggle BREAK */
                    232:
                    233: /* icr-tab values, read */
                    234: #define IT_TX          0x1     /* transmit buffer empty */
                    235: #define IT_SPEC                0x2     /* special character received */
                    236:
                    237: /* data errors */
                    238: #define RD_OVF         0x08
                    239: #define RD_BD          0x10
                    240: #define RD_PE          0x20
                    241: #define RD_OE          0x40
                    242: #define RD_FE          0x80
                    243: #define RD_MASK                0xf8
                    244:
                    245: /* Transmit/Receive masks */
                    246: #define TX_MASK                0x0f
                    247: #define RX_MASK                0xff
                    248:
                    249: /*
                    250:  * DCM console caveat: only port 1 is affected by the remote switch, and
                    251:  * thus the only supported console port on a given DCM card.
                    252:  */
                    253: #define DCMCONSPORT    1

CVSweb