root/dev/pci/if_san_front_end.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. FE_RX_DISC_TX_IDLE_STRUCT
  2. FRONT_END_REG_STRUCT
  3. FE_STATISTICS_STRUCT
  4. ADAPTER_CONFIGURATION_STRUCT
  5. sdla_fe_iface_t

    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

/* [<][>][^][v][top][bottom][index][help] */