Fix common misspellings
[linux-2.6-block.git] / drivers / staging / ath6kl / include / common / wmix.h
CommitLineData
30295c89
VM
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
40extern "C" {
41#endif
42
43#ifndef ATH_TARGET
44#include "athstartpack.h"
45#endif
46
47#include "dbglog.h"
48
49/*
50 * Extended WMI commands are those that are needed during wireless
51 * operation, but which are not really wireless commands. This allows,
52 * for instance, platform-specific commands. Extended WMI commands are
53 * embedded in a WMI command message with WMI_COMMAND_ID=WMI_EXTENSION_CMDID.
54 * Extended WMI events are similarly embedded in a WMI event message with
55 * WMI_EVENT_ID=WMI_EXTENSION_EVENTID.
56 */
57typedef PREPACK struct {
e1ce2a3a 58 u32 commandId;
30295c89
VM
59} POSTPACK WMIX_CMD_HDR;
60
61typedef enum {
62 WMIX_DSETOPEN_REPLY_CMDID = 0x2001,
63 WMIX_DSETDATA_REPLY_CMDID,
64 WMIX_GPIO_OUTPUT_SET_CMDID,
65 WMIX_GPIO_INPUT_GET_CMDID,
66 WMIX_GPIO_REGISTER_SET_CMDID,
67 WMIX_GPIO_REGISTER_GET_CMDID,
68 WMIX_GPIO_INTR_ACK_CMDID,
69 WMIX_HB_CHALLENGE_RESP_CMDID,
70 WMIX_DBGLOG_CFG_MODULE_CMDID,
71 WMIX_PROF_CFG_CMDID, /* 0x200a */
72 WMIX_PROF_ADDR_SET_CMDID,
73 WMIX_PROF_START_CMDID,
74 WMIX_PROF_STOP_CMDID,
75 WMIX_PROF_COUNT_GET_CMDID,
76} WMIX_COMMAND_ID;
77
78typedef enum {
79 WMIX_DSETOPENREQ_EVENTID = 0x3001,
80 WMIX_DSETCLOSE_EVENTID,
81 WMIX_DSETDATAREQ_EVENTID,
82 WMIX_GPIO_INTR_EVENTID,
83 WMIX_GPIO_DATA_EVENTID,
84 WMIX_GPIO_ACK_EVENTID,
85 WMIX_HB_CHALLENGE_RESP_EVENTID,
86 WMIX_DBGLOG_EVENTID,
87 WMIX_PROF_COUNT_EVENTID,
88} WMIX_EVENT_ID;
89
90/*
91 * =============DataSet support=================
92 */
93
94/*
95 * WMIX_DSETOPENREQ_EVENTID
96 * DataSet Open Request Event
97 */
98typedef PREPACK struct {
e1ce2a3a
JP
99 u32 dset_id;
100 u32 targ_dset_handle; /* echo'ed, not used by Host, */
101 u32 targ_reply_fn; /* echo'ed, not used by Host, */
102 u32 targ_reply_arg; /* echo'ed, not used by Host, */
30295c89
VM
103} POSTPACK WMIX_DSETOPENREQ_EVENT;
104
105/*
106 * WMIX_DSETCLOSE_EVENTID
107 * DataSet Close Event
108 */
109typedef PREPACK struct {
e1ce2a3a 110 u32 access_cookie;
30295c89
VM
111} POSTPACK WMIX_DSETCLOSE_EVENT;
112
113/*
114 * WMIX_DSETDATAREQ_EVENTID
115 * DataSet Data Request Event
116 */
117typedef PREPACK struct {
e1ce2a3a
JP
118 u32 access_cookie;
119 u32 offset;
120 u32 length;
121 u32 targ_buf; /* echo'ed, not used by Host, */
122 u32 targ_reply_fn; /* echo'ed, not used by Host, */
123 u32 targ_reply_arg; /* echo'ed, not used by Host, */
30295c89
VM
124} POSTPACK WMIX_DSETDATAREQ_EVENT;
125
126typedef PREPACK struct {
e1ce2a3a
JP
127 u32 status;
128 u32 targ_dset_handle;
129 u32 targ_reply_fn;
130 u32 targ_reply_arg;
131 u32 access_cookie;
132 u32 size;
133 u32 version;
30295c89
VM
134} POSTPACK WMIX_DSETOPEN_REPLY_CMD;
135
136typedef PREPACK struct {
e1ce2a3a
JP
137 u32 status;
138 u32 targ_buf;
139 u32 targ_reply_fn;
140 u32 targ_reply_arg;
141 u32 length;
ab3655da 142 u8 buf[1];
30295c89
VM
143} POSTPACK WMIX_DSETDATA_REPLY_CMD;
144
145
146/*
147 * =============GPIO support=================
148 * All masks are 18-bit masks with bit N operating on GPIO pin N.
149 */
150
151#include "gpio.h"
152
153/*
154 * Set GPIO pin output state.
155 * In order for output to be driven, a pin must be enabled for output.
156 * This can be done during initialization through the GPIO Configuration
157 * DataSet, or during operation with the enable_mask.
158 *
159 * If a request is made to simultaneously set/clear or set/disable or
160 * clear/disable or disable/enable, results are undefined.
161 */
162typedef PREPACK struct {
e1ce2a3a
JP
163 u32 set_mask; /* pins to set */
164 u32 clear_mask; /* pins to clear */
165 u32 enable_mask; /* pins to enable for output */
166 u32 disable_mask; /* pins to disable/tristate */
30295c89
VM
167} POSTPACK WMIX_GPIO_OUTPUT_SET_CMD;
168
169/*
170 * Set a GPIO register. For debug/exceptional cases.
171 * Values for gpioreg_id are GPIO_REGISTER_IDs, defined in a
172 * platform-dependent header.
173 */
174typedef PREPACK struct {
e1ce2a3a
JP
175 u32 gpioreg_id; /* GPIO register ID */
176 u32 value; /* value to write */
30295c89
VM
177} POSTPACK WMIX_GPIO_REGISTER_SET_CMD;
178
179/* Get a GPIO register. For debug/exceptional cases. */
180typedef PREPACK struct {
e1ce2a3a 181 u32 gpioreg_id; /* GPIO register to read */
30295c89
VM
182} POSTPACK WMIX_GPIO_REGISTER_GET_CMD;
183
184/*
185 * Host acknowledges and re-arms GPIO interrupts. A single
186 * message should be used to acknowledge all interrupts that
187 * were delivered in an earlier WMIX_GPIO_INTR_EVENT message.
188 */
189typedef PREPACK struct {
e1ce2a3a 190 u32 ack_mask; /* interrupts to acknowledge */
30295c89
VM
191} POSTPACK WMIX_GPIO_INTR_ACK_CMD;
192
193/*
25985edc 194 * Target informs Host of GPIO interrupts that have occurred since the
30295c89
VM
195 * last WMIX_GIPO_INTR_ACK_CMD was received. Additional information --
196 * the current GPIO input values is provided -- in order to support
197 * use of a GPIO interrupt as a Data Valid signal for other GPIO pins.
198 */
199typedef PREPACK struct {
e1ce2a3a
JP
200 u32 intr_mask; /* pending GPIO interrupts */
201 u32 input_values; /* recent GPIO input values */
30295c89
VM
202} POSTPACK WMIX_GPIO_INTR_EVENT;
203
204/*
205 * Target responds to Host's earlier WMIX_GPIO_INPUT_GET_CMDID request
206 * using a GPIO_DATA_EVENT with
207 * value set to the mask of GPIO pin inputs and
208 * reg_id set to GPIO_ID_NONE
209 *
210 *
211 * Target responds to Hosts's earlier WMIX_GPIO_REGISTER_GET_CMDID request
212 * using a GPIO_DATA_EVENT with
213 * value set to the value of the requested register and
214 * reg_id identifying the register (reflects the original request)
215 * NB: reg_id supports the future possibility of unsolicited
216 * WMIX_GPIO_DATA_EVENTs (for polling GPIO input), and it may
217 * simplify Host GPIO support.
218 */
219typedef PREPACK struct {
e1ce2a3a
JP
220 u32 value;
221 u32 reg_id;
30295c89
VM
222} POSTPACK WMIX_GPIO_DATA_EVENT;
223
224/*
225 * =============Error Detection support=================
226 */
227
228/*
229 * WMIX_HB_CHALLENGE_RESP_CMDID
230 * Heartbeat Challenge Response command
231 */
232typedef PREPACK struct {
e1ce2a3a
JP
233 u32 cookie;
234 u32 source;
30295c89
VM
235} POSTPACK WMIX_HB_CHALLENGE_RESP_CMD;
236
237/*
238 * WMIX_HB_CHALLENGE_RESP_EVENTID
239 * Heartbeat Challenge Response Event
240 */
241#define WMIX_HB_CHALLENGE_RESP_EVENT WMIX_HB_CHALLENGE_RESP_CMD
242
243typedef PREPACK struct {
244 struct dbglog_config_s config;
245} POSTPACK WMIX_DBGLOG_CFG_MODULE_CMD;
246
247/*
248 * =============Target Profiling support=================
249 */
250
251typedef PREPACK struct {
e1ce2a3a
JP
252 u32 period; /* Time (in 30.5us ticks) between samples */
253 u32 nbins;
30295c89
VM
254} POSTPACK WMIX_PROF_CFG_CMD;
255
256typedef PREPACK struct {
e1ce2a3a 257 u32 addr;
30295c89
VM
258} POSTPACK WMIX_PROF_ADDR_SET_CMD;
259
260/*
261 * Target responds to Hosts's earlier WMIX_PROF_COUNT_GET_CMDID request
262 * using a WMIX_PROF_COUNT_EVENT with
263 * addr set to the next address
264 * count set to the corresponding count
265 */
266typedef PREPACK struct {
e1ce2a3a
JP
267 u32 addr;
268 u32 count;
30295c89
VM
269} POSTPACK WMIX_PROF_COUNT_EVENT;
270
271#ifndef ATH_TARGET
272#include "athendpack.h"
273#endif
274
275#ifdef __cplusplus
276}
277#endif
278
279#endif /* _WMIX_H_ */