[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

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