diff options
Diffstat (limited to 'drivers/isdn/sc/message.h')
-rw-r--r-- | drivers/isdn/sc/message.h | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/drivers/isdn/sc/message.h b/drivers/isdn/sc/message.h new file mode 100644 index 000000000000..8eb15e7306b2 --- /dev/null +++ b/drivers/isdn/sc/message.h | |||
@@ -0,0 +1,245 @@ | |||
1 | /* $Id: message.h,v 1.1.10.1 2001/09/23 22:24:59 kai Exp $ | ||
2 | * | ||
3 | * Copyright (C) 1996 SpellCaster Telecommunications Inc. | ||
4 | * | ||
5 | * structures, macros and defines useful for sending | ||
6 | * messages to the adapter | ||
7 | * | ||
8 | * This software may be used and distributed according to the terms | ||
9 | * of the GNU General Public License, incorporated herein by reference. | ||
10 | * | ||
11 | * For more information, please contact gpl-info@spellcast.com or write: | ||
12 | * | ||
13 | * SpellCaster Telecommunications Inc. | ||
14 | * 5621 Finch Avenue East, Unit #3 | ||
15 | * Scarborough, Ontario Canada | ||
16 | * M1B 2T9 | ||
17 | * +1 (416) 297-8565 | ||
18 | * +1 (416) 297-6433 Facsimile | ||
19 | */ | ||
20 | |||
21 | /* | ||
22 | * Board message macros, defines and structures | ||
23 | */ | ||
24 | |||
25 | #ifndef MESSAGE_H | ||
26 | #define MESSAGE_H | ||
27 | |||
28 | #define MAX_MESSAGES 32 /* Maximum messages that can be | ||
29 | queued */ | ||
30 | #define MSG_DATA_LEN 48 /* Maximum size of message payload */ | ||
31 | #define MSG_LEN 64 /* Size of a message */ | ||
32 | #define CMPID 0 /* Loader message process ID */ | ||
33 | #define CEPID 64 /* Firmware message process ID */ | ||
34 | |||
35 | /* | ||
36 | * Macro to determine if a message is a loader message | ||
37 | */ | ||
38 | #define IS_CM_MESSAGE(mesg, tx, cx, dx) \ | ||
39 | ((mesg.type == cmRspType##tx) \ | ||
40 | &&(mesg.class == cmRspClass##cx) \ | ||
41 | &&(mesg.code == cmRsp##dx)) | ||
42 | |||
43 | /* | ||
44 | * Macro to determine if a message is a firmware message | ||
45 | */ | ||
46 | #define IS_CE_MESSAGE(mesg, tx, cx, dx) \ | ||
47 | ((mesg.type == ceRspType##tx) \ | ||
48 | &&(mesg.class == ceRspClass##cx) \ | ||
49 | &&(mesg.code == ceRsp##tx##dx)) | ||
50 | |||
51 | /* | ||
52 | * Loader Request and Response Messages | ||
53 | */ | ||
54 | |||
55 | /* message types */ | ||
56 | #define cmReqType1 1 | ||
57 | #define cmReqType2 2 | ||
58 | #define cmRspType0 0 | ||
59 | #define cmRspType1 1 | ||
60 | #define cmRspType2 2 | ||
61 | #define cmRspType5 5 | ||
62 | |||
63 | /* message classes */ | ||
64 | #define cmReqClass0 0 | ||
65 | #define cmRspClass0 0 | ||
66 | |||
67 | /* message codes */ | ||
68 | #define cmReqHWConfig 1 /* 1,0,1 */ | ||
69 | #define cmReqMsgLpbk 2 /* 1,0,2 */ | ||
70 | #define cmReqVersion 3 /* 1,0,3 */ | ||
71 | #define cmReqLoadProc 1 /* 2,0,1 */ | ||
72 | #define cmReqStartProc 2 /* 2,0,2 */ | ||
73 | #define cmReqReadMem 6 /* 2,0,6 */ | ||
74 | #define cmRspHWConfig cmReqHWConfig | ||
75 | #define cmRspMsgLpbk cmReqMsgLpbk | ||
76 | #define cmRspVersion cmReqVersion | ||
77 | #define cmRspLoadProc cmReqLoadProc | ||
78 | #define cmRspStartProc cmReqStartProc | ||
79 | #define cmRspReadMem cmReqReadMem | ||
80 | #define cmRspMiscEngineUp 1 /* 5,0,1 */ | ||
81 | #define cmRspInvalid 0 /* 0,0,0 */ | ||
82 | |||
83 | |||
84 | /* | ||
85 | * Firmware Request and Response Messages | ||
86 | */ | ||
87 | |||
88 | /* message types */ | ||
89 | #define ceReqTypePhy 1 | ||
90 | #define ceReqTypeLnk 2 | ||
91 | #define ceReqTypeCall 3 | ||
92 | #define ceReqTypeStat 1 | ||
93 | #define ceRspTypeErr 0 | ||
94 | #define ceRspTypePhy ceReqTypePhy | ||
95 | #define ceRspTypeLnk ceReqTypeLnk | ||
96 | #define ceRspTypeCall ceReqTypeCall | ||
97 | #define ceRspTypeStat ceReqTypeStat | ||
98 | |||
99 | /* message classes */ | ||
100 | #define ceReqClass0 0 | ||
101 | #define ceReqClass1 1 | ||
102 | #define ceReqClass2 2 | ||
103 | #define ceReqClass3 3 | ||
104 | #define ceRspClass0 ceReqClass0 | ||
105 | #define ceRspClass1 ceReqClass1 | ||
106 | #define ceRspClass2 ceReqClass2 | ||
107 | #define ceRspClass3 ceReqClass3 | ||
108 | |||
109 | /* message codes (B) = BRI only, (P) = PRI only, (V) = POTS only */ | ||
110 | #define ceReqPhyProcInfo 1 /* 1,0,1 */ | ||
111 | #define ceReqPhyConnect 1 /* 1,1,1 */ | ||
112 | #define ceReqPhyDisconnect 2 /* 1,1,2 */ | ||
113 | #define ceReqPhySetParams 3 /* 1,1,3 (P) */ | ||
114 | #define ceReqPhyGetParams 4 /* 1,1,4 (P) */ | ||
115 | #define ceReqPhyStatus 1 /* 1,2,1 */ | ||
116 | #define ceReqPhyAcfaStatus 2 /* 1,2,2 (P) */ | ||
117 | #define ceReqPhyChCallState 3 /* 1,2,3 (P) */ | ||
118 | #define ceReqPhyChServState 4 /* 1,2,4 (P) */ | ||
119 | #define ceReqPhyRLoopBack 1 /* 1,3,1 */ | ||
120 | #define ceRspPhyProcInfo ceReqPhyProcInfo | ||
121 | #define ceRspPhyConnect ceReqPhyConnect | ||
122 | #define ceRspPhyDisconnect ceReqPhyDisconnect | ||
123 | #define ceRspPhySetParams ceReqPhySetParams | ||
124 | #define ceRspPhyGetParams ceReqPhyGetParams | ||
125 | #define ceRspPhyStatus ceReqPhyStatus | ||
126 | #define ceRspPhyAcfaStatus ceReqPhyAcfaStatus | ||
127 | #define ceRspPhyChCallState ceReqPhyChCallState | ||
128 | #define ceRspPhyChServState ceReqPhyChServState | ||
129 | #define ceRspPhyRLoopBack ceReqphyRLoopBack | ||
130 | #define ceReqLnkSetParam 1 /* 2,0,1 */ | ||
131 | #define ceReqLnkGetParam 2 /* 2,0,2 */ | ||
132 | #define ceReqLnkGetStats 3 /* 2,0,3 */ | ||
133 | #define ceReqLnkWrite 1 /* 2,1,1 */ | ||
134 | #define ceReqLnkRead 2 /* 2,1,2 */ | ||
135 | #define ceReqLnkFlush 3 /* 2,1,3 */ | ||
136 | #define ceReqLnkWrBufTrc 4 /* 2,1,4 */ | ||
137 | #define ceReqLnkRdBufTrc 5 /* 2,1,5 */ | ||
138 | #define ceRspLnkSetParam ceReqLnkSetParam | ||
139 | #define ceRspLnkGetParam ceReqLnkGetParam | ||
140 | #define ceRspLnkGetStats ceReqLnkGetStats | ||
141 | #define ceRspLnkWrite ceReqLnkWrite | ||
142 | #define ceRspLnkRead ceReqLnkRead | ||
143 | #define ceRspLnkFlush ceReqLnkFlush | ||
144 | #define ceRspLnkWrBufTrc ceReqLnkWrBufTrc | ||
145 | #define ceRspLnkRdBufTrc ceReqLnkRdBufTrc | ||
146 | #define ceReqCallSetSwitchType 1 /* 3,0,1 */ | ||
147 | #define ceReqCallGetSwitchType 2 /* 3,0,2 */ | ||
148 | #define ceReqCallSetFrameFormat 3 /* 3,0,3 */ | ||
149 | #define ceReqCallGetFrameFormat 4 /* 3,0,4 */ | ||
150 | #define ceReqCallSetCallType 5 /* 3,0,5 */ | ||
151 | #define ceReqCallGetCallType 6 /* 3,0,6 */ | ||
152 | #define ceReqCallSetSPID 7 /* 3,0,7 (!P) */ | ||
153 | #define ceReqCallGetSPID 8 /* 3,0,8 (!P) */ | ||
154 | #define ceReqCallSetMyNumber 9 /* 3,0,9 (!P) */ | ||
155 | #define ceReqCallGetMyNumber 10 /* 3,0,10 (!P) */ | ||
156 | #define ceRspCallSetSwitchType ceReqCallSetSwitchType | ||
157 | #define ceRspCallGetSwitchType ceReqCallSetSwitchType | ||
158 | #define ceRspCallSetFrameFormat ceReqCallSetFrameFormat | ||
159 | #define ceRspCallGetFrameFormat ceReqCallGetFrameFormat | ||
160 | #define ceRspCallSetCallType ceReqCallSetCallType | ||
161 | #define ceRspCallGetCallType ceReqCallGetCallType | ||
162 | #define ceRspCallSetSPID ceReqCallSetSPID | ||
163 | #define ceRspCallGetSPID ceReqCallGetSPID | ||
164 | #define ceRspCallSetMyNumber ceReqCallSetMyNumber | ||
165 | #define ceRspCallGetMyNumber ceReqCallGetMyNumber | ||
166 | #define ceRspStatAcfaStatus 2 | ||
167 | #define ceRspStat | ||
168 | #define ceRspErrError 0 /* 0,0,0 */ | ||
169 | |||
170 | /* | ||
171 | * Call Types | ||
172 | */ | ||
173 | #define CALLTYPE_64K 0 | ||
174 | #define CALLTYPE_56K 1 | ||
175 | #define CALLTYPE_SPEECH 2 | ||
176 | #define CALLTYPE_31KHZ 3 | ||
177 | |||
178 | /* | ||
179 | * Link Level data contains a pointer to and the length of | ||
180 | * a buffer in shared RAM. Used by LnkRead and LnkWrite message | ||
181 | * types. Part of RspMsgStruct and ReqMsgStruct. | ||
182 | */ | ||
183 | typedef struct { | ||
184 | unsigned long buff_offset; | ||
185 | unsigned short msg_len; | ||
186 | } LLData; | ||
187 | |||
188 | |||
189 | /* | ||
190 | * Message payload template for an HWConfig message | ||
191 | */ | ||
192 | typedef struct { | ||
193 | char st_u_sense; | ||
194 | char powr_sense; | ||
195 | char sply_sense; | ||
196 | unsigned char asic_id; | ||
197 | long ram_size; | ||
198 | char serial_no[13]; | ||
199 | char part_no[13]; | ||
200 | char rev_no[2]; | ||
201 | } HWConfig_pl; | ||
202 | |||
203 | /* | ||
204 | * A Message | ||
205 | */ | ||
206 | struct message { | ||
207 | unsigned char sequence_no; | ||
208 | unsigned char process_id; | ||
209 | unsigned char time_stamp; | ||
210 | unsigned char cmd_sequence_no; /* Rsp messages only */ | ||
211 | unsigned char reserved1[3]; | ||
212 | unsigned char msg_byte_cnt; | ||
213 | unsigned char type; | ||
214 | unsigned char class; | ||
215 | unsigned char code; | ||
216 | unsigned char phy_link_no; | ||
217 | unsigned char rsp_status; /* Rsp messages only */ | ||
218 | unsigned char reseved2[3]; | ||
219 | union { | ||
220 | unsigned char byte_array[MSG_DATA_LEN]; | ||
221 | LLData response; | ||
222 | HWConfig_pl HWCresponse; | ||
223 | } msg_data; | ||
224 | }; | ||
225 | |||
226 | typedef struct message ReqMessage; /* Request message */ | ||
227 | typedef struct message RspMessage; /* Response message */ | ||
228 | |||
229 | /* | ||
230 | * The first 5010 bytes of shared memory contain the message queues, | ||
231 | * indexes and other data. This structure is its template | ||
232 | */ | ||
233 | typedef struct { | ||
234 | volatile ReqMessage req_queue[MAX_MESSAGES]; | ||
235 | volatile RspMessage rsp_queue[MAX_MESSAGES]; | ||
236 | volatile unsigned char req_head; | ||
237 | volatile unsigned char req_tail; | ||
238 | volatile unsigned char rsp_head; | ||
239 | volatile unsigned char rsp_tail; | ||
240 | volatile unsigned long signature; | ||
241 | volatile unsigned long trace_enable; | ||
242 | volatile unsigned char reserved[4]; | ||
243 | } DualPortMemory; | ||
244 | |||
245 | #endif | ||