linux/drivers/staging/ath6kl/include/common/wmix.h
<<
>>
Prefs
   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_ */
 272