[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

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