This source file includes following definitions.
- wan_cmd_t
- wan_mbox_t
- sfm_info_t
- sfm_t
- sdla_hw_type_cnt_t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #ifndef __IF_SANDRV_H
36 # define __IF_SANDRV_H
37
38 #ifdef __SDLADRV__
39 # define EXTERN
40 #else
41 # define EXTERN extern
42 #endif
43
44
45
46 #define WAN_MAILBOX_SIZE 16
47 #define WAN_MAX_DATA_SIZE 2032
48 #pragma pack(1)
49 typedef struct {
50 union {
51 struct {
52 unsigned char opp_flag;
53 unsigned char command;
54 unsigned short data_len;
55 unsigned char return_code;
56 } wan_p_cmd;
57 unsigned char mbox[WAN_MAILBOX_SIZE];
58 } wan_cmd_u;
59 #define wan_cmd_opp_flag wan_cmd_u.wan_p_cmd.opp_flag
60 #define wan_cmd_command wan_cmd_u.wan_p_cmd.command
61 #define wan_cmd_data_len wan_cmd_u.wan_p_cmd.data_len
62 #define wan_cmd_return_code wan_cmd_u.wan_p_cmd.return_code
63 } wan_cmd_t;
64 #pragma pack()
65
66
67
68
69 #pragma pack(1)
70 typedef struct {
71 wan_cmd_t wan_cmd;
72 unsigned char wan_data[WAN_MAX_DATA_SIZE];
73 #define wan_opp_flag wan_cmd.wan_cmd_opp_flag
74 #define wan_command wan_cmd.wan_cmd_command
75 #define wan_data_len wan_cmd.wan_cmd_data_len
76 #define wan_return_code wan_cmd.wan_cmd_return_code
77 } wan_mbox_t;
78 #pragma pack()
79 #define WAN_MBOX_INIT(mbox) memset(mbox, 0, sizeof(wan_cmd_t));
80
81
82 #if defined(_KERNEL)
83
84
85
86
87
88
89 #define SDLADRV_MAJOR_VER 2
90 #define SDLADRV_MINOR_VER 1
91 #define SDLA_WINDOWSIZE 0x2000
92
93
94 #define SDLA_S508 5080
95 #define SDLA_S514 5140
96 #define SDLA_ADSL 6000
97 #define SDLA_AFT 7000
98
99 #define SDLA_PRI_PORT 1
100 #define SDLA_SEC_PORT 2
101
102
103 #define SFM_VERSION 2
104 #define SFM_SIGNATURE "SFM - Sangoma SDLA Firmware Module"
105
106
107 #define SFM_IMAGE_SIZE 0x8000
108 #define SFM_DESCR_LEN 256
109 #define SFM_MAX_SDLA 16
110
111
112
113
114
115
116
117
118
119
120
121
122 #define SFID_HDLC502 4200
123 #define SFID_HDLC508 4800
124 #define SFID_CHDLC508 8800
125 #define SFID_CHDLC514 8140
126 #define SFID_AFT 30000
127
128
129 #define SDLA_MEMBASE 0x01
130 #define SDLA_MEMEND 0x02
131 #define SDLA_MEMSIZE 0x03
132 #define SDLA_MEMORY 0x05
133 #define SDLA_BASEADDR 0x06
134 #define SDLA_DMATAG 0x04
135 #define SDLA_IRQ 0x07
136 #define SDLA_BUS 0x08
137 #define SDLA_CPU 0x0A
138 #define SDLA_SLOT 0x0B
139 #define SDLA_ADAPTERTYPE 0x0C
140 #define SDLA_CARDTYPE 0x0D
141 #define SDLA_PCIEXTRAVER 0x0E
142
143
144 #define SDLA_MAX_CPUS 2
145 #define S514_CPU_A 'A'
146 #define S514_CPU_B 'B'
147 #define SDLA_CPU_A 1
148 #define SDLA_CPU_B 2
149 #define SDLA_GET_CPU(cpu_no) (cpu_no==SDLA_CPU_A)?S514_CPU_A:S514_CPU_B
150
151 #define AFT_CORE_ID_MASK 0x00FF
152 #define AFT_CORE_REV_MASK 0xFF00
153 #define AFT_HDLC_CORE_ID 0x00
154 #define AFT_ATM_CORE_ID 0x01
155 #define AFT_SS7_CORE_ID 0x02
156
157 #define XILINX_PCI_MEM_SIZE 0x2FF
158 #define XILINX_PCI_LATENCY 0x0000FF00
159
160 #define XILINX_PCI_CMD_REG 0x04
161 #define XILINX_PCI_LATENCY_REG 0x0C
162
163
164 #if 0
165 #define PCI_VENDOR_ID_WORD 0x00
166 #define PCI_DEVICE_ID_WORD 0x02
167 #define PCI_SUBCLASS_ID_BYTE 0x0a
168 #endif
169 #define PCI_IO_BASE_DWORD 0x10
170 #define PCI_MEM_BASE0_DWORD 0x14
171 #define PCI_MEM_BASE1_DWORD 0x18
172 #if 0
173 #define PCI_SUBSYS_VENDOR_WORD 0x2C
174 #define PCI_SUBSYS_ID_WORD 0x2E
175 #define PCI_INT_LINE_BYTE 0x3C
176 #define PCI_INT_PIN_BYTE 0x3D
177 #endif
178 #define PCI_MAP0_DWORD 0x40
179 #define PCI_MAP1_DWORD 0x44
180 #define PCI_INT_STATUS 0x48
181 #define PCI_INT_CONFIG 0x4C
182
183 #define PCI_DEV_SLOT_MASK 0x1F
184 #define PCI_IRQ_NOT_ALLOCATED 0xFF
185
186 #define PCI_MEMORY_ENABLE 0x00000003
187 #define PCI_CPU_A_MEM_DISABLE 0x00000002
188 #define PCI_CPU_B_MEM_DISABLE 0x00100002
189 #define PCI_ENABLE_IRQ_CPU_A 0x005A0004
190 #define PCI_ENABLE_IRQ_CPU_B 0x005A0008
191 #define PCI_ENABLE_IRQ_DMA0 0x01000000
192 #define PCI_ENABLE_IRQ_DMA1 0x02000000
193 #define PCI_DISABLE_IRQ_CPU_A 0x00000004
194 #define PCI_DISABLE_IRQ_CPU_B 0x00000008
195 #define PCI_DISABLE_IRQ_DMA0 0x01000000
196 #define PCI_DISABLE_IRQ_DMA1 0x02000000
197
198
199 #define IRQ_DMA0 0x01000000
200 #define IRQ_DMA1 0x02000000
201 #define IRQ_LOCAL_CPU_A 0x00000004
202 #define IRQ_LOCAL_CPU_B 0x00000008
203 #define IRQ_CPU_A 0x04
204 #define IRQ_CPU_B 0x08
205
206
207 #define MAX_SIZEOF_S514_MEMORY (256 * 1024)
208
209
210 #define S514_CTRL_REG_BYTE 0x80000
211
212
213 #define S514_CPU_HALT 0x00
214 #define S514_CPU_START 0x01
215
216
217 #define MAX_S514_CARDS 20
218
219 #define WAN_CMD_OK 0
220 #define WAN_CMD_TIMEOUT 0xFF
221
222
223 #define SDLAHW_MAGIC 0x414C4453L
224
225
226
227
228
229
230 #define AFT_CORE_ID_DECODE(core_id) \
231 (core_id == AFT_HDLC_CORE_ID) ? "HDLC" : \
232 (core_id == AFT_ATM_CORE_ID) ? "ATM" : \
233 (core_id == AFT_SS7_CORE_ID) ? "SS7" : \
234 "Unknown"
235 #define WAN_ASSERT(val) \
236 if (val){ \
237 log(LOG_INFO, "********** ASSERT FAILED **********\n"); \
238 log(LOG_INFO, "%s:%d - Critical error\n", \
239 __FILE__,__LINE__); \
240 return -EINVAL; \
241 }
242
243 #define WAN_ASSERT1(val) \
244 if (val){ \
245 log(LOG_INFO, "********** ASSERT FAILED **********\n"); \
246 log(LOG_INFO, "%s:%d - Critical error\n", \
247 __FILE__,__LINE__); \
248 return; \
249 }
250
251 #define WAN_ASSERT2(val, ret) \
252 if (val){ \
253 log(LOG_INFO, "********** ASSERT FAILED **********\n"); \
254 log(LOG_INFO, "%s:%d - Critical error\n", \
255 __FILE__,__LINE__); \
256 return ret; \
257 }
258
259 #define SDLA_MAGIC(hw) WAN_ASSERT((hw)->magic != SDLAHW_MAGIC)
260
261
262
263
264
265
266 typedef struct sfm_info
267 {
268 unsigned short codeid;
269 unsigned short version;
270 unsigned short adapter[SFM_MAX_SDLA];
271 unsigned long memsize;
272 unsigned short reserved[2];
273 unsigned short startoffs;
274 unsigned short winoffs;
275 unsigned short codeoffs;
276 unsigned short codesize;
277 unsigned short dataoffs;
278 unsigned short datasize;
279 } sfm_info_t;
280
281 typedef struct sfm
282 {
283 char signature[80];
284 unsigned short version;
285 unsigned short checksum;
286 unsigned short reserved[6];
287 char descr[SFM_DESCR_LEN];
288 sfm_info_t info;
289 unsigned char image[1];
290 } sfm_t;
291
292
293 typedef struct sdla_hw_type_cnt
294 {
295 unsigned char AFT_adapters;
296 }sdla_hw_type_cnt_t;
297
298
299 extern int san_dev_attach(void*, u_int8_t*, int);
300
301
302 extern int sdladrv_init(void);
303 extern int sdladrv_exit(void);
304 extern int sdla_get_hw_devices(void);
305 extern void *sdla_get_hw_adptr_cnt(void);
306
307 extern int sdla_setup (void*);
308 extern int sdla_down (void*);
309 extern int sdla_read_int_stat (void*, u_int32_t*);
310 extern int sdla_check_mismatch(void*, unsigned char);
311 extern int sdla_cmd (void*, unsigned long, wan_mbox_t*);
312 extern int sdla_getcfg(void*, int, void*);
313 extern int sdla_bus_write_1(void*, unsigned int, u_int8_t);
314 extern int sdla_bus_write_2(void*, unsigned int, u_int16_t);
315 extern int sdla_bus_write_4(void*, unsigned int, u_int32_t);
316 extern int sdla_bus_read_1(void*, unsigned int, u_int8_t*);
317 extern int sdla_bus_read_2(void*, unsigned int, u_int16_t*);
318 extern int sdla_bus_read_4(void*, unsigned int, u_int32_t*);
319 extern int sdla_peek (void*, unsigned long, void*, unsigned);
320 extern int sdla_poke (void*, unsigned long, void*, unsigned);
321 extern int sdla_poke_byte (void*, unsigned long, u_int8_t);
322 extern int sdla_set_bit (void*, unsigned long, u_int8_t);
323 extern int sdla_clear_bit (void*, unsigned long, u_int8_t);
324 extern int sdla_intr_establish(void*, int(*intr_func)(void*), void*);
325 extern int sdla_intr_disestablish(void*);
326 extern int sdla_get_hwprobe(void*, void**);
327 extern int sdla_get_hwcard(void*, void**);
328 extern int sdla_is_te1(void*);
329
330 #endif
331
332 #undef EXTERN
333 #endif