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

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

1.1     ! nbrk        1: /*     $OpenBSD: if_san_front_end.h,v 1.4 2004/12/07 06:10:24 mcbride Exp $    */
        !             2:
        !             3: /*-
        !             4:  * Copyright (c) 2001-2004 Sangoma Technologies (SAN)
        !             5:  * All rights reserved.  www.sangoma.com
        !             6:  *
        !             7:  * This code is written by Alex Feldman <al.feldman@sangoma.com> for SAN.
        !             8:  * The code is derived from permitted modifications to software created
        !             9:  * by Nenad Corbic (ncorbic@sangoma.com).
        !            10:  *
        !            11:  * Redistribution and use in source and binary forms, with or without
        !            12:  * modification, are permitted provided that the following conditions
        !            13:  * are met:
        !            14:  * 1. Redistributions of source code must retain the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer.
        !            16:  * 2. Redistributions in binary form must reproduce the above
        !            17:  *    copyright notice, this list of conditions and the following disclaimer
        !            18:  *    in the documentation and/or other materials provided with the
        !            19:  *    distribution.
        !            20:  * 3. Neither the name of Sangoma Technologies nor the names of its
        !            21:  *    contributors may be used to endorse or promote products derived
        !            22:  *    from this software without specific prior written permission.
        !            23:  *
        !            24:  * THIS SOFTWARE IS PROVIDED BY SANGOMA TECHNOLOGIES AND CONTRIBUTORS
        !            25:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            26:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            27:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            28:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            29:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            30:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            31:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            32:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            33:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
        !            34:  * THE POSSIBILITY OF SUCH DAMAGE.
        !            35:  */
        !            36:
        !            37: #ifndef __IF_SAN_FRONT_END_H_
        !            38: #define __IF_SAN_FRONT_END_H_
        !            39:
        !            40: /* The hardware media */
        !            41: #define WAN_MEDIA_NONE       0x00    /* Regular card */
        !            42: #define WAN_MEDIA_T1         0x01    /* T1 connection */
        !            43: #define WAN_MEDIA_E1         0x02    /* E1 connection */
        !            44: #define WAN_MEDIA_56K        0x03    /* 56K connection */
        !            45:
        !            46: /* settings for the 'adapter_type' */
        !            47: #define S508_ADPTR                     0x0001  /* S508 */
        !            48: #define S5141_ADPTR_1_CPU_SERIAL       0x0011  /* S5141, single CPU, serial */
        !            49: #define S5142_ADPTR_2_CPU_SERIAL       0x0012  /* S5142, dual CPU, serial */
        !            50: #define S5143_ADPTR_1_CPU_FT1          0x0013  /* S5143, single CPU, FT1 */
        !            51: #define S5144_ADPTR_1_CPU_T1E1         0x0014  /* S5144, single CPU, T1/E1 */
        !            52: #define S5145_ADPTR_1_CPU_56K          0x0015  /* S5145, single CPU, 56K */
        !            53: #define S5147_ADPTR_2_CPU_T1E1         0x0017  /* S5147, dual CPU, T1/E1 */
        !            54: #define S5148_ADPTR_1_CPU_T1E1         0x0018  /* S5148, single CPU, T1/E1 */
        !            55:
        !            56: #define S518_ADPTR_1_CPU_ADSL          0x0018  /* S518, adsl card */
        !            57:
        !            58: #define A101_ADPTR_T1E1_MASK           0x0040  /* T1/E1 type mask  */
        !            59: #define A101_ADPTR_1TE1                        0x0041  /* 1 Channel T1/E1  */
        !            60: #define A101_ADPTR_2TE1                        0x0042  /* 2 Channels T1/E1 */
        !            61:
        !            62: #define A100_ADPTR_T3E3_MASK           0x0080  /* T3/E3  type mask */
        !            63: #define A100_ADPTR_1_CHN_T3E3          0x0081  /* 1 Channel T3/E3 (Proto.) */
        !            64: #define A105_ADPTR_1_CHN_T3E3          0x0082  /* 1 Channel T3/E3 */
        !            65:
        !            66: #define OPERATE_T1E1_AS_SERIAL         0x8000  /* For bitstreaming only
        !            67:                                                 * Allow the applicatoin to
        !            68:                                                 * E1 front end */
        !            69:
        !            70: #define SDLA_ADPTR_DECODE(adapter_type)                        \
        !            71:                (adapter_type == S5141_ADPTR_1_CPU_SERIAL) ? "S514-1-PCI" : \
        !            72:                (adapter_type == S5142_ADPTR_2_CPU_SERIAL) ? "S514-2-PCI" : \
        !            73:                (adapter_type == S5143_ADPTR_1_CPU_FT1)    ? "S514-3-PCI" : \
        !            74:                (adapter_type == S5144_ADPTR_1_CPU_T1E1)   ? "S514-4-PCI" : \
        !            75:                (adapter_type == S5145_ADPTR_1_CPU_56K)    ? "S514-5-PCI" : \
        !            76:                (adapter_type == S5147_ADPTR_2_CPU_T1E1)   ? "S514-7-PCI" : \
        !            77:                (adapter_type == S518_ADPTR_1_CPU_ADSL)    ? "S518-PCI  " : \
        !            78:                (adapter_type == A101_ADPTR_1TE1)          ? "AFT-A101  " : \
        !            79:                (adapter_type == A101_ADPTR_2TE1)          ? "AFT-A102  " : \
        !            80:                (adapter_type == A105_ADPTR_1_CHN_T3E3)    ? "A105-1-PCI" : \
        !            81:                (adapter_type == A105_ADPTR_1_CHN_T3E3)    ? "A105-2    " : \
        !            82:                                                             "UNKNOWN   "
        !            83:
        !            84: /* front-end UDP command */
        !            85: #define WAN_FE_GET_STAT                        (WAN_FE_UDP_CMD_START + 0)
        !            86: #define WAN_FE_SET_LB_MODE             (WAN_FE_UDP_CMD_START + 1)
        !            87: #define WAN_FE_FLUSH_PMON              (WAN_FE_UDP_CMD_START + 2)
        !            88: #define WAN_FE_GET_CFG                 (WAN_FE_UDP_CMD_START + 3)
        !            89:
        !            90: /* front-end configuration and access interface commands */
        !            91:
        !            92: /* 0x90 read from front-end register */
        !            93: #define READ_FRONT_END_REGISTER                (WAN_FE_CMD_START+0)
        !            94:
        !            95: /* 0x91 write to front-end register */
        !            96: #define WRITE_FRONT_END_REGISTER       (WAN_FE_CMD_START+1)
        !            97:
        !            98: /* 0x92 read the front-end statistics */
        !            99: #define READ_FRONT_END_STATISTICS      (WAN_FE_CMD_START+2)
        !           100:
        !           101: /* 0x93 flush the front-end statistics */
        !           102: #define FLUSH_FRONT_END_STATISTICS     (WAN_FE_CMD_START+3)
        !           103:
        !           104: #ifdef _KERNEL
        !           105:
        !           106: /* adapter configuration interface commands */
        !           107:
        !           108: /* 0xA0 set adapter configuration */
        !           109: #define SET_ADAPTER_CONFIGURATION      (WAN_INTERFACE_CMD_START+0)
        !           110:
        !           111: /* 0xA1 read adapter configuration */
        !           112: #define READ_ADAPTER_CONFIGURATION     (WAN_INTERFACE_CMD_START+1)
        !           113:
        !           114: /* front-end command */
        !           115: #define WAN_FE_GET_STAT                        (WAN_FE_UDP_CMD_START + 0)
        !           116: #define WAN_FE_SET_LB_MODE             (WAN_FE_UDP_CMD_START + 1)
        !           117: #define WAN_FE_FLUSH_PMON              (WAN_FE_UDP_CMD_START + 2)
        !           118: #define WAN_FE_GET_CFG                 (WAN_FE_UDP_CMD_START + 3)
        !           119:
        !           120: /*
        !           121:  * return codes from interface commands
        !           122:  */
        !           123: /* the length of the FE_RX_DISC_TX_IDLE_STRUCT is invalid */
        !           124: #define LGTH_FE_CFG_DATA_INVALID       0x91
        !           125:
        !           126: /* the length of the passed configuration data is invalid */
        !           127: #define LGTH_ADAPTER_CFG_DATA_INVALID  0x91
        !           128:
        !           129: /* the passed SET_FE_RX_DISC_TX_IDLE_CFG data is invalid */
        !           130: #define INVALID_FE_CFG_DATA            0x92
        !           131:
        !           132: /* an invalid adapter operating frequency was selected */
        !           133: #define ADPTR_OPERATING_FREQ_INVALID   0x92
        !           134:
        !           135: /* set the protocol-level configuration before setting the FE configuration */
        !           136: #define PROT_CFG_BEFORE_FE_CFG         0x93
        !           137:
        !           138: /* set the front-end Rx discard/Tx idle configuration */
        !           139: #define SET_FE_RX_DISC_TX_IDLE_CFG      0x98
        !           140:
        !           141: /* read the front-end Rx discard/Tx idle configuration */
        !           142: #define READ_FE_RX_DISC_TX_IDLE_CFG     0x99
        !           143:
        !           144: /* set the T1/E1 signaling configuration */
        !           145: #define SET_TE1_SIGNALING_CFG          0x9A
        !           146:
        !           147: /* read the T1/E1 signaling configuration */
        !           148: #define READ_TE1_SIGNALING_CFG 0x9B
        !           149:
        !           150:
        !           151: /* the command is invalid for the adapter type */
        !           152: #define COMMAND_INVALID_FOR_ADAPTER    0x9F
        !           153:
        !           154:
        !           155: /*
        !           156:  * Constants for the SET_FE_RX_DISC_TX_IDLE_CFG
        !           157:  * and READ_FE_RX_DISC_TX_IDLE_CFG commands
        !           158:  */
        !           159:
        !           160: /* T1 - no active time slots used for reception */
        !           161: #define NO_ACTIVE_RX_TIME_SLOTS_T1   24
        !           162:
        !           163: /* T1 - no active time slots used for transmission */
        !           164: #define NO_ACTIVE_TX_TIME_SLOTS_T1   24
        !           165:
        !           166: /* E1 - no active time slots used for reception */
        !           167: #define NO_ACTIVE_RX_TIME_SLOTS_E1   32
        !           168:
        !           169: /*
        !           170:  * E1 - no active time slots used for transmission
        !           171:  * (channel 0 reserved for framing)
        !           172:  */
        !           173: #define NO_ACTIVE_TX_TIME_SLOTS_E1   31
        !           174:
        !           175: /* Read/Write to front-end register */
        !           176: #define READ_REG(reg)          card->read_front_end_reg(card, reg)
        !           177: #define WRITE_REG(reg, value)  card->write_front_end_reg(card, reg, \
        !           178:                                    (unsigned char)(value))
        !           179:
        !           180: /*
        !           181:  * the structure used for the SET_FE_RX_DISC_TX_IDLE_CFG and
        !           182:  * READ_FE_RX_DISC_TX_IDLE_CFG command
        !           183:  */
        !           184: #pragma pack(1)
        !           185: typedef struct {
        !           186:        /* the length of the Rx discard buffer */
        !           187:        unsigned short lgth_Rx_disc_bfr;
        !           188:
        !           189:        /* the length of the Tx idle buffer */
        !           190:        unsigned short lgth_Tx_idle_bfr;
        !           191:
        !           192:        /* the transmit idle data buffer */
        !           193:        unsigned char Tx_idle_data_bfr[NO_ACTIVE_TX_TIME_SLOTS_E1];
        !           194: } FE_RX_DISC_TX_IDLE_STRUCT;
        !           195: #pragma pack()
        !           196:
        !           197:
        !           198: /*
        !           199:  * Constants for front-end access
        !           200:  */
        !           201:
        !           202: /*
        !           203:  * the structure used for the READ_FRONT_END_REGISTER and
        !           204:  * WRITE_FRONT_END_REGISTER command
        !           205:  */
        !           206: #pragma pack(1)
        !           207: typedef struct {
        !           208:        /* the register number to be read from or written to */
        !           209:        unsigned short register_number;
        !           210:
        !           211:        /* the register value read/written */
        !           212:        unsigned char register_value;
        !           213: } FRONT_END_REG_STRUCT;
        !           214: #pragma pack()
        !           215:
        !           216:
        !           217: /* -----------------------------------------------------------------------------
        !           218:  *            Constants for the READ_FRONT_END_STATISTICS command
        !           219:  * ---------------------------------------------------------------------------*/
        !           220:
        !           221: /* the front-end statistics structure */
        !           222: #pragma pack(1)
        !           223: typedef struct {
        !           224:        /* the number of front-end interrupts generated */
        !           225:        unsigned long FE_interrupt_count;
        !           226:
        !           227:        /* the number of front-end interrupt application timeouts */
        !           228:        unsigned long FE_app_timeout_count;
        !           229: } FE_STATISTICS_STRUCT;
        !           230: #pragma pack()
        !           231:
        !           232:
        !           233:
        !           234: /*
        !           235:  * Constants for the SET_ADAPTER_CONFIGURATION
        !           236:  * and READ_ADAPTER_CONFIGURATION commands
        !           237:  */
        !           238:
        !           239: /* the adapter configuration structure */
        !           240: #pragma pack(1)
        !           241: typedef struct {
        !           242:        unsigned short adapter_type;            /* type of adapter */
        !           243:        unsigned short adapter_config;          /* misc adapter config */
        !           244:        unsigned long operating_frequency;      /* adapter operating freq */
        !           245: } ADAPTER_CONFIGURATION_STRUCT;
        !           246: #pragma pack()
        !           247:
        !           248:
        !           249:
        !           250: typedef unsigned char (WRITE_FRONT_END_REG_T)
        !           251:        (void *, unsigned short, unsigned char);
        !           252: typedef unsigned char (READ_FRONT_END_REG_T)
        !           253:        (void *, unsigned short);
        !           254:
        !           255:
        !           256: enum {
        !           257:        AFT_LED_ON,
        !           258:        AFT_LED_OFF,
        !           259:        AFT_LED_TOGGLE
        !           260: };
        !           261:
        !           262:
        !           263: /*
        !           264:  * Sangoma Front-End interface structure
        !           265:  */
        !           266: typedef struct {
        !           267:        /* In-Service or Not (T1/E1/56K) */
        !           268:        unsigned long   (*get_fe_service_status)(void*);
        !           269:
        !           270:        /* Print Front-End alarm (T1/E1/56K) */
        !           271:        void            (*print_fe_alarm)(void*,unsigned long);
        !           272:
        !           273:        /* Print Front-End alarm (T1/E1/56K) */
        !           274:        char*           (*print_fe_act_channels)(void*);
        !           275:
        !           276:        /* Set Front-End alarm (T1/E1) */
        !           277:        void            (*set_fe_alarm)(void*,unsigned long);
        !           278: } sdla_fe_iface_t;
        !           279:
        !           280:
        !           281: #endif /* _KERNEL */
        !           282:
        !           283: #endif

CVSweb