1/*****************************************************************************
2* sdlasfm.h	WANPIPE(tm) Multiprotocol WAN Link Driver.
3*		Definitions for the SDLA Firmware Module (SFM).
4*
5* Author: 	Gideon Hack
6*
7* Copyright:	(c) 1995-1999 Sangoma Technologies Inc.
8*
9*		This program is free software; you can redistribute it and/or
10*		modify it under the terms of the GNU General Public License
11*		as published by the Free Software Foundation; either version
12*		2 of the License, or (at your option) any later version.
13* ============================================================================
14* Jun 02, 1999  Gideon Hack	Added support for the S514 adapter.
15* Dec 11, 1996	Gene Kozin	Cosmetic changes
16* Apr 16, 1996	Gene Kozin	Changed adapter & firmware IDs. Version 2
17* Dec 15, 1995	Gene Kozin	Structures chaned
18* Nov 09, 1995	Gene Kozin	Initial version.
19*****************************************************************************/
20#ifndef	_SDLASFM_H
21#define	_SDLASFM_H
22
23/****** Defines *************************************************************/
24
25#define	SFM_VERSION	2
26#define	SFM_SIGNATURE	"SFM - Sangoma SDLA Firmware Module"
27
28/* min/max */
29#define	SFM_IMAGE_SIZE	0x8000	/* max size of SDLA code image file */
30#define	SFM_DESCR_LEN	256	/* max length of description string */
31#define	SFM_MAX_SDLA	16	/* max number of compatible adapters */
32
33/* Adapter types */
34#define SDLA_S502A	5020
35#define SDLA_S502E	5021
36#define SDLA_S503	5030
37#define SDLA_S508	5080
38#define SDLA_S507	5070
39#define SDLA_S509	5090
40#define SDLA_S514	5140
41
42/* S514 PCI adapter CPU numbers */
43#define S514_CPU_A	'A'
44#define S514_CPU_B	'B'
45
46
47/* Firmware identification numbers:
48 *    0  ..  999	Test & Diagnostics
49 *  1000 .. 1999	Streaming HDLC
50 *  2000 .. 2999	Bisync
51 *  3000 .. 3999	SDLC
52 *  4000 .. 4999	HDLC
53 *  5000 .. 5999	X.25
54 *  6000 .. 6999	Frame Relay
55 *  7000 .. 7999	PPP
56 *  8000 .. 8999        Cisco HDLC
57 */
58#define	SFID_CALIB502	 200
59#define	SFID_STRM502	1200
60#define	SFID_STRM508	1800
61#define	SFID_BSC502	2200
62#define	SFID_SDLC502	3200
63#define	SFID_HDLC502	4200
64#define	SFID_HDLC508	4800
65#define	SFID_X25_502	5200
66#define	SFID_X25_508	5800
67#define	SFID_FR502	6200
68#define	SFID_FR508	6800
69#define	SFID_PPP502	7200
70#define	SFID_PPP508	7800
71#define SFID_PPP514	7140
72#define	SFID_CHDLC508	8800
73#define SFID_CHDLC514	8140
74
75/****** Data Types **********************************************************/
76
77typedef struct	sfm_info		/* firmware module information */
78{
79	unsigned short	codeid;		/* firmware ID */
80	unsigned short	version;	/* firmaware version number */
81	unsigned short	adapter[SFM_MAX_SDLA]; /* compatible adapter types */
82	unsigned long	memsize;	/* minimum memory size */
83	unsigned short	reserved[2];	/* reserved */
84	unsigned short	startoffs;	/* entry point offset */
85	unsigned short	winoffs;	/* dual-port memory window offset */
86	unsigned short	codeoffs;	/* code load offset */
87	unsigned short	codesize;	/* code size */
88	unsigned short	dataoffs;	/* configuration data load offset */
89	unsigned short	datasize;	/* configuration data size */
90} sfm_info_t;
91
92typedef struct sfm			/* SDLA firmware file structire */
93{
94	char		signature[80];	/* SFM file signature */
95	unsigned short	version;	/* file format version */
96	unsigned short	checksum;	/* info + image */
97	unsigned short	reserved[6];	/* reserved */
98	char		descr[SFM_DESCR_LEN]; /* description string */
99	sfm_info_t	info;		/* firmware module info */
100	unsigned char	image[1];	/* code image (variable size) */
101} sfm_t;
102
103#endif	/* _SDLASFM_H */
104
105