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

Annotation of sys/dev/pci/musyccreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: musyccreg.h,v 1.3 2005/08/27 12:53:17 claudio Exp $ */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2004,2005  Internet Business Solutions AG, Zurich, Switzerland
        !             5:  * Written by: Claudio Jeker <jeker@accoom.net>
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this software for any
        !             8:  * purpose with or without fee is hereby granted, provided that the above
        !             9:  * copyright notice and this permission notice appear in all copies.
        !            10:  *
        !            11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19: #ifndef __MUSYCCREG_H__
        !            20: #define __MUSYCCREG_H__
        !            21:
        !            22: #define        MUSYCC_PCI_BAR  0x10    /* offset of Base Address Register */
        !            23:
        !            24: /* Group Base Pointer -- per Group unique */
        !            25: #define        MUSYCC_GROUPBASE(x)     (0x0800 * (x))
        !            26: /* Dual Address Cycle Base Pointer */
        !            27: #define MUSYCC_DACB_PTR                0x0004
        !            28: /* Service Request Descriptor -- per Group unique */
        !            29: #define MUSYCC_SERREQ(x)       (0x0008 + 0x0800 * (x))
        !            30: /* Interrupt Status Descriptor */
        !            31: #define MUSYCC_INTRSTATUS      0x000c
        !            32: #define MUSYCC_INTCNT_MASK     0x00007fff
        !            33: #define MUSYCC_INTFULL         0x00008000
        !            34: #define MUSYCC_NEXTINT_GET(x)  (((x) >> 16) & 0x7fff)
        !            35: #define MUSYCC_NEXTINT_SET(x)  (((x) & 0x7fff) << 16)
        !            36:
        !            37: /* Global Configuration Descriptor */
        !            38: #define MUSYCC_GLOBALCONF      0x0600
        !            39: /* Interrupt Queue Descriptor */
        !            40: #define MUSYCC_INTQPTR         0x0604
        !            41: #define MUSYCC_INTQLEN         0x0608
        !            42:
        !            43: /* group structure [page 5-6], this puppy needs to be 2k aligned */
        !            44: struct musycc_grpdesc {
        !            45:        u_int32_t               tx_headp[32];   /* transmit head ptr */
        !            46:        u_int32_t               tx_msgp[32];    /* transmit msg ptr */
        !            47:        u_int32_t               rx_headp[32];   /* receive head ptr */
        !            48:        u_int32_t               rx_msgp[32];    /* receive msg ptr */
        !            49:        u_int8_t                tx_tsmap[128];  /* transmit timeslot map */
        !            50:        u_int8_t                tx_submap[256]; /* transmit sub channel map */
        !            51:        u_int32_t               tx_cconf[32];   /* transmit channel config */
        !            52:        u_int8_t                rx_tsmap[128];  /* receive timeslot map */
        !            53:        u_int8_t                rx_submap[256]; /* receive sub channel map */
        !            54:        u_int32_t               rx_cconf[32];   /* receive channel config */
        !            55:        u_int32_t               global_conf;    /* global config */
        !            56:        u_int32_t               int_queuep;     /* interrupt queue ptr */
        !            57:        u_int32_t               int_queuelen;   /* interrupt queue len */
        !            58:        u_int32_t               group_conf;     /* group config */
        !            59:        u_int32_t               memprot;        /* memory protection */
        !            60:        u_int32_t               msglen_conf;    /* message length config */
        !            61:        u_int32_t               port_conf;      /* serial port config */
        !            62: };
        !            63:
        !            64: /* Global Configuration Descriptor [page 5-10] */
        !            65: #define MUSYCC_CONF_PORTMAP    0x00000003      /* group -> port mapping */
        !            66: #define MUSYCC_CONF_INTB       0x00000004      /* if set INTB is disabled */
        !            67: #define MUSYCC_CONF_INTA       0x00000008      /* if set INTA is disabled */
        !            68: #define MUSYCC_CONF_ELAPSE_GET(x)      \
        !            69:     (((x) >> 4) & 0x7)                         /* get elapse value */
        !            70: #define MUSYCC_CONF_ELAPSE_SET(x)      \
        !            71:     ((x & 0x7) << 4)                           /* set elapse value */
        !            72: #define MUSYCC_CONF_ALAPSE_GET(x)      \
        !            73:     (((x) >> 8) & 0x3)                         /* get alapse value */
        !            74: #define MUSYCC_CONF_ALAPSE_SET(x)      \
        !            75:     ((x & 0x3) << 8)                           /* set alapse value */
        !            76: #define MUSYCC_CONF_MPUSEL     0x00000400      /* EBUS mode, 1 = intel style */
        !            77: #define MUSYCC_CONF_ECKEN      0x00000800      /* EBUS clock enable */
        !            78: #define MUSYCC_CONF_BLAPSE_GET(x)      \
        !            79:     (((x) >> 12) & 0x7)                                /* get blapse value */
        !            80: #define MUSYCC_CONF_BLAPSE_SET(x)      \
        !            81:     ((x & 0x7) << 12)                          /* set blapse value */
        !            82:
        !            83: /* Interrupt Descriptor [page 5-41] */
        !            84: #define        MUSYCC_INTD_BLEN        0x00001fff      /* size of data on EOB & EOM */
        !            85: #define        MUSYCC_INTD_ILOST       0x00008000      /* Interrupt Lost */
        !            86: #define        MUSYCC_INTD_DIR         0x80000000      /* transmit specific int */
        !            87: #define        MUSYCC_INTD_GRP(x)      \
        !            88:     ((((x) >> 29) & 0x3) | (((x) >> 12) & 0x4))        /* Group Number [0-7] */
        !            89: #define        MUSYCC_INTD_CHAN(x)     \
        !            90:     (((x) >> 24) & 0x1f)                       /* Channel Number [0-31] */
        !            91: #define        MUSYCC_INTD_EVENT(x)    \
        !            92:     (((x) >> 20) & 0xf)                                /* Event that caused the int */
        !            93: #define        MUSYCC_INTD_ERROR(x)    \
        !            94:     (((x) >> 16) & 0xf)                                /* Error that caused the int */
        !            95:
        !            96: /* possible Interrupt Events */
        !            97: #define        MUSYCC_INTEV_NONE       0               /* No Event to report */
        !            98: #define        MUSYCC_INTEV_SACK       1               /* Service Request Ack */
        !            99: #define MUSYCC_INTEV_EOB       2               /* End of Buffer */
        !           100: #define MUSYCC_INTEV_EOM       3               /* End of Message */
        !           101: #define MUSYCC_INTEV_EOP       4               /* End of Padfill */
        !           102: #define MUSYCC_INTEV_CHABT     5               /* Change to Abort Code */
        !           103: #define MUSYCC_INTEV_CHIC      6               /* Change to Idle Code */
        !           104: #define MUSYCC_INTEV_FREC      7               /* Frame Recovery */
        !           105: #define MUSYCC_INTEV_SINC      8               /* SS7 SUERM Octet Count inc */
        !           106: #define MUSYCC_INTEV_SDEC      9               /* SS7 SUERM Octet Count dec */
        !           107: #define MUSYCC_INTEV_SFILT     10              /* SS7 Filtered Message */
        !           108:
        !           109: /* possible Interrupt Errors */
        !           110: #define        MUSYCC_INTERR_NONE      0               /* No Error to report */
        !           111: #define        MUSYCC_INTERR_BUFF      1               /* Buffer Error */
        !           112: #define        MUSYCC_INTERR_COFA      2               /* Change of Frame Alignment */
        !           113: #define        MUSYCC_INTERR_ONR       3               /* Owner-Bit Error */
        !           114: #define        MUSYCC_INTERR_PROT      4               /* Mem Protection Violation */
        !           115: #define        MUSYCC_INTERR_OOF       8               /* Out of Frame */
        !           116: #define        MUSYCC_INTERR_FCS       9               /* Frame Check Sequence Error */
        !           117: #define        MUSYCC_INTERR_ALIGN     10              /* Octet Alignment Error */
        !           118: #define        MUSYCC_INTERR_ABT       11              /* Abort Termination */
        !           119: #define        MUSYCC_INTERR_LNG       12              /* Long Message */
        !           120: #define        MUSYCC_INTERR_SHT       13              /* Short Message */
        !           121: #define        MUSYCC_INTERR_SUERR     14              /* SS7 Signal Unit Error */
        !           122: #define        MUSYCC_INTERR_PERR      15              /* PCI Bus Parity Error */
        !           123:
        !           124: /* Service Request Descriptor [page 5-14] */
        !           125: #define MUSYCC_SREQ_MASK       0x001f          /* Generic SREQ/Channel Mask */
        !           126: #define MUSYCC_SREQ_CHSET(x)           \
        !           127:     ((x) & MUSYCC_SREQ_MASK)                   /* shortcut */
        !           128: #define MUSYCC_SREQ_TXDIR      0x0020          /* Transmit Direction */
        !           129: #define MUSYCC_SREQ_SET(x)             \
        !           130:     (((x) & MUSYCC_SREQ_MASK) << 8)            /* Service Request */
        !           131:
        !           132: #define MUSYCC_SREQ_RX         0x1             /* Receive Request */
        !           133: #define MUSYCC_SREQ_TX         0x2             /* Transmit Request */
        !           134: #define MUSYCC_SREQ_BOTH       0x3             /* both directions */
        !           135: #define MUSYCC_SREQ_NOWAIT     0x8
        !           136: #define MUSYCC_SREQ_NONE       0xffffffff
        !           137:
        !           138: /* Group Configuration Descriptor [page 5-16] */
        !           139: #define MUSYCC_GRCFG_RXENBL    0x0001          /* Receiver Enabled */
        !           140: #define MUSYCC_GRCFG_TXENBL    0x0002          /* Transmitter Enabled */
        !           141: #define MUSYCC_GRCFG_SUBDSBL   0x0004          /* Subchanneling Disabled */
        !           142: #define MUSYCC_GRCFG_OOFABT    0x0008          /* OOF Message Processing */
        !           143: #define MUSYCC_GRCFG_MSKOOF    0x0010          /* OOF Interrupt Disabled */
        !           144: #define MUSYCC_GRCFG_MSKCOFA   0x0020          /* COFA Interrupt Disabled */
        !           145: #define MUSYCC_GRCFG_MCENBL    0x0040          /* Msg Config Bits Copy */
        !           146: #define MUSYCC_GRCFG_INHRBSD   0x0100          /* Inihibit RX Buf Stat Desc */
        !           147: #define MUSYCC_GRCFG_INHTBSD   0x0200          /* Inihibit TX Buf Stat Desc */
        !           148: #define MUSYCC_GRCFG_POLL16    0x0400          /* Poll at all 16 frame sync */
        !           149: #define MUSYCC_GRCFG_POLL32    0x0800          /* Poll at all 32 frame sync */
        !           150: #define MUSYCC_GRCFG_POLL64    0x0C00          /* Poll at all 64 frame sync */
        !           151: #define MUSYCC_GRCFG_SFALIGN   0x8000          /* Super Frame Alignment */
        !           152: #define MUSYCC_GRCFG_SUETMASK  0x3f0000        /* SS7 SUERR Threshold */
        !           153:
        !           154: /* Port Configuration Descriptor [page 5-19] */
        !           155: #define MUSYCC_PORT_MODEMASK   0x007           /* Port Mode Mask */
        !           156: #define MUSYCC_PORT_MODE_T1    0               /* T1 - 24 time slots */
        !           157: #define MUSYCC_PORT_MODE_E1    1               /* E1 - 32 time slots */
        !           158: #define MUSYCC_PORT_MODE_2E1   2               /* 2*E1 - 64 time slots */
        !           159: #define MUSYCC_PORT_MODE_4E1   3               /* 4*E1 - 128 time slots */
        !           160: #define MUSYCC_PORT_MODE_N64   4               /* N*64 mode */
        !           161: #define MUSYCC_PORT_TDAT_EDGE  0x010           /* TX Data on rising Edge */
        !           162: #define MUSYCC_PORT_TSYNC_EDGE 0x020           /* TX Frame Sync on rising E */
        !           163: #define MUSYCC_PORT_RDAT_EDGE  0x040           /* RX Data on rising Edge */
        !           164: #define MUSYCC_PORT_RSYNC_EDGE 0x080           /* RX Frame Sync on rising E */
        !           165: #define MUSYCC_PORT_ROOF_EDGE  0x100           /* RX OOF on rising Edge */
        !           166: #define MUSYCC_PORT_TRITX      0x200           /* TX Three-state disabled */
        !           167:
        !           168: /* Message Length Descriptor [page 5-20] */
        !           169: #define MUSYCC_MAXFRM_MAX      4094            /* maximum message length */
        !           170: #define MUSYCC_MAXFRM_MASK     0x0fff
        !           171: #define MUSYCC_MAXFRM2_SHIFT   16
        !           172:
        !           173: /* Time Slot Descriptor [page 5-23] */
        !           174: #define MUSYCC_TSLOT_ENABLED   0x80            /* timeslot enabled */
        !           175: #define MUSYCC_TSLOT_56K       0x20            /* 56kbps timeslots */
        !           176: #define MUSYCC_TSLOT_SUB       0x40            /* subchannel timeslots */
        !           177: #define MUSYCC_TSLOT_MASK      0x1f            /* channel number mask */
        !           178: #define MUSYCC_TSLOT_CHAN(x)           \
        !           179:     ((x) & MUSYCC_TSLOT_MASK)                  /* masked channel number */
        !           180:
        !           181: /* Channel Configuration Descriptor [page 5-27] */
        !           182: #define MUSYCC_CHAN_MSKBUFF    0x00000002      /* BUFF & ONR Intr disabled */
        !           183: #define MUSYCC_CHAN_MSKEOM     0x00000004      /* EOM Interrupt disabled */
        !           184: #define MUSYCC_CHAN_MSKMSG     0x00000008      /* LNG, FCS, ALIGN, ABT mask */
        !           185: #define MUSYCC_CHAN_MSKIDLE    0x00000010      /* CHABT, CHIC, SHT Intr mask */
        !           186: #define MUSYCC_CHAN_MSKSFILT   0x00000020      /* SS7 SFILT Interrupt mask */
        !           187: #define MUSYCC_CHAN_MSKSDEC    0x00000040      /* SS7 SDEC Interrupt mask */
        !           188: #define MUSYCC_CHAN_MSKSINC    0x00000080      /* SS7 SINC Interrupt mask */
        !           189: #define MUSYCC_CHAN_MSKSUERR   0x00000100      /* SS7 SUERR Interrupt mask */
        !           190: #define MUSYCC_CHAN_FCS                0x00000200      /* FCS checksum disable */
        !           191: #define MUSYCC_CHAN_MAXLEN1    0x00000400      /* Msg Len Max via MAXFRM1 */
        !           192: #define MUSYCC_CHAN_MAXLEN2    0x00000800      /* Msg Len Max via MAXFRM1 */
        !           193: #define MUSYCC_CHAN_EOPI       0x00008000      /* End of Padfill Int enable */
        !           194: #define MUSYCC_CHAN_INV                0x00800000      /* Data Inversion */
        !           195: #define MUSYCC_CHAN_PADJ       0x80000000      /* Pad Count Adjust enabled */
        !           196:
        !           197: #define MUSYCC_CHAN_PROTO_GET(x)       \
        !           198:     (((x) >> 12) & 0x7)                                /* get line protocol */
        !           199: #define MUSYCC_CHAN_PROTO_SET(x)       \
        !           200:     ((x & 0x7) << 12)                          /* set line protocol */
        !           201: #define MUSYCC_PROTO_TRANSPARENT       0       /* raw stream */
        !           202: #define MUSYCC_PROTO_SS7HDLC           1       /* SS7 HDLC messages */
        !           203: #define MUSYCC_PROTO_HDLC16            2       /* basic HDLC with 16 bit FCS */
        !           204: #define MUSYCC_PROTO_HDLC32            3       /* basic HDLC with 32 bit FCS */
        !           205:
        !           206: #define MUSYCC_CHAN_BUFLEN_GET(x)      \
        !           207:     (((x) >> 16) & 0x3f)                       /* get FIFO Buffer Length */
        !           208: #define MUSYCC_CHAN_BUFLEN_SET(x)      \
        !           209:     (((x) & 0x3F) << 16)                       /* set FIFO Buffer Length */
        !           210: #define MUSYCC_CHAN_BUFIDX_GET(x)      \
        !           211:     (((x) >> 24) & 0x3f)                       /* get FIFO Buffer Index */
        !           212: #define MUSYCC_CHAN_BUFIDX_SET(x)      \
        !           213:     (((x) & 0x3F) << 24)                       /* set FIFO Buffer Index */
        !           214:
        !           215:
        !           216: /* Tx / Rx Buffer Descriptor [page 5-33] */
        !           217: #define MUSYCC_STATUS_LEN(x)           \
        !           218:     ((x) & 0x3fff)                             /* length of dma buffer */
        !           219: #define MUSYCC_STATUS_REPEAT   0x00008000      /* repeat buffer */
        !           220: #define MUSYCC_STATUS_ERROR    0x000f0000
        !           221: #define MUSYCC_STATUS_EOBI     0x10000000      /* end of buffer interrupt */
        !           222: #define MUSYCC_STATUS_EOM      0x20000000      /* end of message */
        !           223: #define MUSYCC_STATUS_NOPOLL   0x40000000      /* don't poll for new descr */
        !           224: #define MUSYCC_STATUS_OWNER    0x80000000
        !           225:
        !           226:
        !           227: /*
        !           228:  * ROM data structures
        !           229:  */
        !           230:
        !           231: struct musycc_rom {
        !           232:        u_int16_t       magic;
        !           233: #define MUSYCC_ROM_MAGIC       (htons(0xacc0))
        !           234:        u_int8_t        rev;                    /* rev. of the card */
        !           235:        u_int8_t        vers;                   /* version of the rom */
        !           236:        char            product[64];
        !           237:        u_int8_t        portmap;                /* portmap config */
        !           238:        u_int8_t        portmode;               /* port mode e.g. 2*E1 */
        !           239:        u_int8_t        numframer;              /* # of sub-configs */
        !           240:        u_int8_t        ledmask;                /* mask for led register */
        !           241:        u_int32_t       ledbase;                /* base of the led register */
        !           242:        u_int32_t       rfu[2];                 /* RFU */
        !           243: };
        !           244:
        !           245: struct musycc_rom_framer {
        !           246:        u_int32_t       type;
        !           247:        u_int32_t       base;
        !           248:        u_int32_t       size;
        !           249:        u_int8_t        gnum;
        !           250:        u_int8_t        port;
        !           251:        char            slot;
        !           252:        u_int8_t        flags;
        !           253:        u_int32_t       rfu[2];                 /* RFU */
        !           254: };
        !           255: #endif

CVSweb