PageRenderTime 12ms CodeModel.GetById 4ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/drivers/staging/ath6kl/include/common/wmix.h

https://bitbucket.org/wisechild/galaxy-nexus
C++ Header | 271 lines | 117 code | 33 blank | 121 comment | 0 complexity | c186c1e6faf7ef0e041012c84bb34533 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  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#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 */
 53typedef PREPACK struct {
 54    u32 commandId;
 55} POSTPACK WMIX_CMD_HDR;
 56
 57typedef 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
 74typedef 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 */
 94typedef 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 */
105typedef PREPACK struct {
106    u32 access_cookie;
107} POSTPACK WMIX_DSETCLOSE_EVENT;
108
109/*
110 * WMIX_DSETDATAREQ_EVENTID
111 * DataSet Data Request Event
112 */
113typedef 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
122typedef 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
132typedef 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 */
157typedef 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 */
169typedef 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. */
175typedef 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 */
184typedef 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 */
194typedef 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 */
214typedef 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 */
227typedef 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
238typedef PREPACK struct {
239    struct dbglog_config_s config;
240} POSTPACK WMIX_DBGLOG_CFG_MODULE_CMD;
241
242/*
243 * =============Target Profiling support=================
244 */
245
246typedef PREPACK struct {
247    u32 period; /* Time (in 30.5us ticks) between samples */
248    u32 nbins;
249} POSTPACK WMIX_PROF_CFG_CMD;
250
251typedef 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 */
261typedef 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_ */