Merge branch 'for-next'
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / isdn / sc / message.h
blob8eb15e7306b251a5095fe030b164f7e550511056
1 /* $Id: message.h,v 1.1.10.1 2001/09/23 22:24:59 kai Exp $
3 * Copyright (C) 1996 SpellCaster Telecommunications Inc.
5 * structures, macros and defines useful for sending
6 * messages to the adapter
8 * This software may be used and distributed according to the terms
9 * of the GNU General Public License, incorporated herein by reference.
11 * For more information, please contact gpl-info@spellcast.com or write:
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
22 * Board message macros, defines and structures
25 #ifndef MESSAGE_H
26 #define MESSAGE_H
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 */
36 * Macro to determine if a message is a loader message
38 #define IS_CM_MESSAGE(mesg, tx, cx, dx) \
39 ((mesg.type == cmRspType##tx) \
40 &&(mesg.class == cmRspClass##cx) \
41 &&(mesg.code == cmRsp##dx))
44 * Macro to determine if a message is a firmware message
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))
51 /*
52 * Loader Request and Response Messages
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
63 /* message classes */
64 #define cmReqClass0 0
65 #define cmRspClass0 0
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 */
85 * Firmware Request and Response Messages
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
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
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 */
171 * Call Types
173 #define CALLTYPE_64K 0
174 #define CALLTYPE_56K 1
175 #define CALLTYPE_SPEECH 2
176 #define CALLTYPE_31KHZ 3
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.
183 typedef struct {
184 unsigned long buff_offset;
185 unsigned short msg_len;
186 } LLData;
190 * Message payload template for an HWConfig message
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;
204 * A Message
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;
226 typedef struct message ReqMessage; /* Request message */
227 typedef struct message RspMessage; /* Response message */
230 * The first 5010 bytes of shared memory contain the message queues,
231 * indexes and other data. This structure is its template
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;
245 #endif