[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     ! 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