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