diff options
Diffstat (limited to 'drivers/staging/ath6kl/include/common/wmix.h')
-rw-r--r-- | drivers/staging/ath6kl/include/common/wmix.h | 271 |
1 files changed, 271 insertions, 0 deletions
diff --git a/drivers/staging/ath6kl/include/common/wmix.h b/drivers/staging/ath6kl/include/common/wmix.h new file mode 100644 index 00000000000..9435eab1b7f --- /dev/null +++ b/drivers/staging/ath6kl/include/common/wmix.h | |||
@@ -0,0 +1,271 @@ | |||
1 | //------------------------------------------------------------------------------ | ||
2 | // <copyright file="wmix.h" company="Atheros"> | ||
3 | // Copyright (c) 2004-2010 Atheros Corporation. All rights reserved. | ||
4 | // | ||
5 | // | ||
6 | // Permission to use, copy, modify, and/or distribute this software for any | ||
7 | // purpose with or without fee is hereby granted, provided that the above | ||
8 | // copyright notice and this permission notice appear in all copies. | ||
9 | // | ||
10 | // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
11 | // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
12 | // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
13 | // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
14 | // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
15 | // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
16 | // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
17 | // | ||
18 | // | ||
19 | //------------------------------------------------------------------------------ | ||
20 | //============================================================================== | ||
21 | // Author(s): ="Atheros" | ||
22 | //============================================================================== | ||
23 | |||
24 | /* | ||
25 | * This file contains extensions of the WMI protocol specified in the | ||
26 | * Wireless Module Interface (WMI). It includes definitions of all | ||
27 | * extended commands and events. Extensions include useful commands | ||
28 | * that are not directly related to wireless activities. They may | ||
29 | * be hardware-specific, and they might not be supported on all | ||
30 | * implementations. | ||
31 | * | ||
32 | * Extended WMIX commands are encapsulated in a WMI message with | ||
33 | * cmd=WMI_EXTENSION_CMD. | ||
34 | */ | ||
35 | |||
36 | #ifndef _WMIX_H_ | ||
37 | #define _WMIX_H_ | ||
38 | |||
39 | #ifdef __cplusplus | ||
40 | extern "C" { | ||
41 | #endif | ||
42 | |||
43 | #include "dbglog.h" | ||
44 | |||
45 | /* | ||
46 | * Extended WMI commands are those that are needed during wireless | ||
47 | * operation, but which are not really wireless commands. This allows, | ||
48 | * for instance, platform-specific commands. Extended WMI commands are | ||
49 | * embedded in a WMI command message with WMI_COMMAND_ID=WMI_EXTENSION_CMDID. | ||
50 | * Extended WMI events are similarly embedded in a WMI event message with | ||
51 | * WMI_EVENT_ID=WMI_EXTENSION_EVENTID. | ||
52 | */ | ||
53 | typedef PREPACK struct { | ||
54 | u32 commandId; | ||
55 | } POSTPACK WMIX_CMD_HDR; | ||
56 | |||
57 | typedef enum { | ||
58 | WMIX_DSETOPEN_REPLY_CMDID = 0x2001, | ||
59 | WMIX_DSETDATA_REPLY_CMDID, | ||
60 | WMIX_GPIO_OUTPUT_SET_CMDID, | ||
61 | WMIX_GPIO_INPUT_GET_CMDID, | ||
62 | WMIX_GPIO_REGISTER_SET_CMDID, | ||
63 | WMIX_GPIO_REGISTER_GET_CMDID, | ||
64 | WMIX_GPIO_INTR_ACK_CMDID, | ||
65 | WMIX_HB_CHALLENGE_RESP_CMDID, | ||
66 | WMIX_DBGLOG_CFG_MODULE_CMDID, | ||
67 | WMIX_PROF_CFG_CMDID, /* 0x200a */ | ||
68 | WMIX_PROF_ADDR_SET_CMDID, | ||
69 | WMIX_PROF_START_CMDID, | ||
70 | WMIX_PROF_STOP_CMDID, | ||
71 | WMIX_PROF_COUNT_GET_CMDID, | ||
72 | } WMIX_COMMAND_ID; | ||
73 | |||
74 | typedef enum { | ||
75 | WMIX_DSETOPENREQ_EVENTID = 0x3001, | ||
76 | WMIX_DSETCLOSE_EVENTID, | ||
77 | WMIX_DSETDATAREQ_EVENTID, | ||
78 | WMIX_GPIO_INTR_EVENTID, | ||
79 | WMIX_GPIO_DATA_EVENTID, | ||
80 | WMIX_GPIO_ACK_EVENTID, | ||
81 | WMIX_HB_CHALLENGE_RESP_EVENTID, | ||
82 | WMIX_DBGLOG_EVENTID, | ||
83 | WMIX_PROF_COUNT_EVENTID, | ||
84 | } WMIX_EVENT_ID; | ||
85 | |||
86 | /* | ||
87 | * =============DataSet support================= | ||
88 | */ | ||
89 | |||
90 | /* | ||
91 | * WMIX_DSETOPENREQ_EVENTID | ||
92 | * DataSet Open Request Event | ||
93 | */ | ||
94 | typedef PREPACK struct { | ||
95 | u32 dset_id; | ||
96 | u32 targ_dset_handle; /* echo'ed, not used by Host, */ | ||
97 | u32 targ_reply_fn; /* echo'ed, not used by Host, */ | ||
98 | u32 targ_reply_arg; /* echo'ed, not used by Host, */ | ||
99 | } POSTPACK WMIX_DSETOPENREQ_EVENT; | ||
100 | |||
101 | /* | ||
102 | * WMIX_DSETCLOSE_EVENTID | ||
103 | * DataSet Close Event | ||
104 | */ | ||
105 | typedef PREPACK struct { | ||
106 | u32 access_cookie; | ||
107 | } POSTPACK WMIX_DSETCLOSE_EVENT; | ||
108 | |||
109 | /* | ||
110 | * WMIX_DSETDATAREQ_EVENTID | ||
111 | * DataSet Data Request Event | ||
112 | */ | ||
113 | typedef PREPACK struct { | ||
114 | u32 access_cookie; | ||
115 | u32 offset; | ||
116 | u32 length; | ||
117 | u32 targ_buf; /* echo'ed, not used by Host, */ | ||
118 | u32 targ_reply_fn; /* echo'ed, not used by Host, */ | ||
119 | u32 targ_reply_arg; /* echo'ed, not used by Host, */ | ||
120 | } POSTPACK WMIX_DSETDATAREQ_EVENT; | ||
121 | |||
122 | typedef PREPACK struct { | ||
123 | u32 status; | ||
124 | u32 targ_dset_handle; | ||
125 | u32 targ_reply_fn; | ||
126 | u32 targ_reply_arg; | ||
127 | u32 access_cookie; | ||
128 | u32 size; | ||
129 | u32 version; | ||
130 | } POSTPACK WMIX_DSETOPEN_REPLY_CMD; | ||
131 | |||
132 | typedef PREPACK struct { | ||
133 | u32 status; | ||
134 | u32 targ_buf; | ||
135 | u32 targ_reply_fn; | ||
136 | u32 targ_reply_arg; | ||
137 | u32 length; | ||
138 | u8 buf[1]; | ||
139 | } POSTPACK WMIX_DSETDATA_REPLY_CMD; | ||
140 | |||
141 | |||
142 | /* | ||
143 | * =============GPIO support================= | ||
144 | * All masks are 18-bit masks with bit N operating on GPIO pin N. | ||
145 | */ | ||
146 | |||
147 | |||
148 | /* | ||
149 | * Set GPIO pin output state. | ||
150 | * In order for output to be driven, a pin must be enabled for output. | ||
151 | * This can be done during initialization through the GPIO Configuration | ||
152 | * DataSet, or during operation with the enable_mask. | ||
153 | * | ||
154 | * If a request is made to simultaneously set/clear or set/disable or | ||
155 | * clear/disable or disable/enable, results are undefined. | ||
156 | */ | ||
157 | typedef PREPACK struct { | ||
158 | u32 set_mask; /* pins to set */ | ||
159 | u32 clear_mask; /* pins to clear */ | ||
160 | u32 enable_mask; /* pins to enable for output */ | ||
161 | u32 disable_mask; /* pins to disable/tristate */ | ||
162 | } POSTPACK WMIX_GPIO_OUTPUT_SET_CMD; | ||
163 | |||
164 | /* | ||
165 | * Set a GPIO register. For debug/exceptional cases. | ||
166 | * Values for gpioreg_id are GPIO_REGISTER_IDs, defined in a | ||
167 | * platform-dependent header. | ||
168 | */ | ||
169 | typedef PREPACK struct { | ||
170 | u32 gpioreg_id; /* GPIO register ID */ | ||
171 | u32 value; /* value to write */ | ||
172 | } POSTPACK WMIX_GPIO_REGISTER_SET_CMD; | ||
173 | |||
174 | /* Get a GPIO register. For debug/exceptional cases. */ | ||
175 | typedef PREPACK struct { | ||
176 | u32 gpioreg_id; /* GPIO register to read */ | ||
177 | } POSTPACK WMIX_GPIO_REGISTER_GET_CMD; | ||
178 | |||
179 | /* | ||
180 | * Host acknowledges and re-arms GPIO interrupts. A single | ||
181 | * message should be used to acknowledge all interrupts that | ||
182 | * were delivered in an earlier WMIX_GPIO_INTR_EVENT message. | ||
183 | */ | ||
184 | typedef PREPACK struct { | ||
185 | u32 ack_mask; /* interrupts to acknowledge */ | ||
186 | } POSTPACK WMIX_GPIO_INTR_ACK_CMD; | ||
187 | |||
188 | /* | ||
189 | * Target informs Host of GPIO interrupts that have occurred since the | ||
190 | * last WMIX_GIPO_INTR_ACK_CMD was received. Additional information -- | ||
191 | * the current GPIO input values is provided -- in order to support | ||
192 | * use of a GPIO interrupt as a Data Valid signal for other GPIO pins. | ||
193 | */ | ||
194 | typedef PREPACK struct { | ||
195 | u32 intr_mask; /* pending GPIO interrupts */ | ||
196 | u32 input_values; /* recent GPIO input values */ | ||
197 | } POSTPACK WMIX_GPIO_INTR_EVENT; | ||
198 | |||
199 | /* | ||
200 | * Target responds to Host's earlier WMIX_GPIO_INPUT_GET_CMDID request | ||
201 | * using a GPIO_DATA_EVENT with | ||
202 | * value set to the mask of GPIO pin inputs and | ||
203 | * reg_id set to GPIO_ID_NONE | ||
204 | * | ||
205 | * | ||
206 | * Target responds to Hosts's earlier WMIX_GPIO_REGISTER_GET_CMDID request | ||
207 | * using a GPIO_DATA_EVENT with | ||
208 | * value set to the value of the requested register and | ||
209 | * reg_id identifying the register (reflects the original request) | ||
210 | * NB: reg_id supports the future possibility of unsolicited | ||
211 | * WMIX_GPIO_DATA_EVENTs (for polling GPIO input), and it may | ||
212 | * simplify Host GPIO support. | ||
213 | */ | ||
214 | typedef PREPACK struct { | ||
215 | u32 value; | ||
216 | u32 reg_id; | ||
217 | } POSTPACK WMIX_GPIO_DATA_EVENT; | ||
218 | |||
219 | /* | ||
220 | * =============Error Detection support================= | ||
221 | */ | ||
222 | |||
223 | /* | ||
224 | * WMIX_HB_CHALLENGE_RESP_CMDID | ||
225 | * Heartbeat Challenge Response command | ||
226 | */ | ||
227 | typedef PREPACK struct { | ||
228 | u32 cookie; | ||
229 | u32 source; | ||
230 | } POSTPACK WMIX_HB_CHALLENGE_RESP_CMD; | ||
231 | |||
232 | /* | ||
233 | * WMIX_HB_CHALLENGE_RESP_EVENTID | ||
234 | * Heartbeat Challenge Response Event | ||
235 | */ | ||
236 | #define WMIX_HB_CHALLENGE_RESP_EVENT WMIX_HB_CHALLENGE_RESP_CMD | ||
237 | |||
238 | typedef PREPACK struct { | ||
239 | struct dbglog_config_s config; | ||
240 | } POSTPACK WMIX_DBGLOG_CFG_MODULE_CMD; | ||
241 | |||
242 | /* | ||
243 | * =============Target Profiling support================= | ||
244 | */ | ||
245 | |||
246 | typedef PREPACK struct { | ||
247 | u32 period; /* Time (in 30.5us ticks) between samples */ | ||
248 | u32 nbins; | ||
249 | } POSTPACK WMIX_PROF_CFG_CMD; | ||
250 | |||
251 | typedef PREPACK struct { | ||
252 | u32 addr; | ||
253 | } POSTPACK WMIX_PROF_ADDR_SET_CMD; | ||
254 | |||
255 | /* | ||
256 | * Target responds to Hosts's earlier WMIX_PROF_COUNT_GET_CMDID request | ||
257 | * using a WMIX_PROF_COUNT_EVENT with | ||
258 | * addr set to the next address | ||
259 | * count set to the corresponding count | ||
260 | */ | ||
261 | typedef PREPACK struct { | ||
262 | u32 addr; | ||
263 | u32 count; | ||
264 | } POSTPACK WMIX_PROF_COUNT_EVENT; | ||
265 | |||
266 | |||
267 | #ifdef __cplusplus | ||
268 | } | ||
269 | #endif | ||
270 | |||
271 | #endif /* _WMIX_H_ */ | ||