xref: /wlan-dirver/fw-api/fw/wmix.h (revision 90c68bd30f2fae53619aa702977c85e958cf78b4)
1dea4501bSVishwajith Upendra /*
2*90c68bd3Sqcabuildsw  * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
3dea4501bSVishwajith Upendra  *
4dea4501bSVishwajith Upendra  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5dea4501bSVishwajith Upendra  *
6dea4501bSVishwajith Upendra  *
7dea4501bSVishwajith Upendra  * Permission to use, copy, modify, and/or distribute this software for
8dea4501bSVishwajith Upendra  * any purpose with or without fee is hereby granted, provided that the
9dea4501bSVishwajith Upendra  * above copyright notice and this permission notice appear in all
10dea4501bSVishwajith Upendra  * copies.
11dea4501bSVishwajith Upendra  *
12dea4501bSVishwajith Upendra  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13dea4501bSVishwajith Upendra  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14dea4501bSVishwajith Upendra  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15dea4501bSVishwajith Upendra  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16dea4501bSVishwajith Upendra  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17dea4501bSVishwajith Upendra  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18dea4501bSVishwajith Upendra  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19dea4501bSVishwajith Upendra  * PERFORMANCE OF THIS SOFTWARE.
20dea4501bSVishwajith Upendra  */
21dea4501bSVishwajith Upendra 
22dea4501bSVishwajith Upendra /*
23dea4501bSVishwajith Upendra  * This file was originally distributed by Qualcomm Atheros, Inc.
24dea4501bSVishwajith Upendra  * under proprietary terms before Copyright ownership was assigned
25dea4501bSVishwajith Upendra  * to the Linux Foundation.
26dea4501bSVishwajith Upendra  */
27dea4501bSVishwajith Upendra 
28dea4501bSVishwajith Upendra /*
29dea4501bSVishwajith Upendra  * This file contains extensions of the WMI protocol specified in the
30dea4501bSVishwajith Upendra  * Wireless Module Interface (WMI).  It includes definitions of all
31dea4501bSVishwajith Upendra  * extended commands and events.  Extensions include useful commands
32dea4501bSVishwajith Upendra  * that are not directly related to wireless activities.  They may
33dea4501bSVishwajith Upendra  * be hardware-specific, and they might not be supported on all
34dea4501bSVishwajith Upendra  * implementations.
35dea4501bSVishwajith Upendra  *
36dea4501bSVishwajith Upendra  * Extended WMIX commands are encapsulated in a WMI message with
37dea4501bSVishwajith Upendra  * cmd=WMI_EXTENSION_CMD.
38dea4501bSVishwajith Upendra  */
39dea4501bSVishwajith Upendra 
40dea4501bSVishwajith Upendra #ifndef _WMIX_H_
41dea4501bSVishwajith Upendra #define _WMIX_H_
42dea4501bSVishwajith Upendra 
43dea4501bSVishwajith Upendra #ifdef __cplusplus
44dea4501bSVishwajith Upendra extern "C" {
45dea4501bSVishwajith Upendra #endif
46dea4501bSVishwajith Upendra 
47dea4501bSVishwajith Upendra /*
48dea4501bSVishwajith Upendra  * Extended WMI commands are those that are needed during wireless
49dea4501bSVishwajith Upendra  * operation, but which are not really wireless commands.  This allows,
50dea4501bSVishwajith Upendra  * for instance, platform-specific commands.  Extended WMI commands are
51dea4501bSVishwajith Upendra  * embedded in a WMI command message with WMI_COMMAND_ID=WMI_EXTENSION_CMDID.
52dea4501bSVishwajith Upendra  * Extended WMI events are similarly embedded in a WMI event message with
53dea4501bSVishwajith Upendra  * WMI_EVENT_ID=WMI_EXTENSION_EVENTID.
54dea4501bSVishwajith Upendra  */
55dea4501bSVishwajith Upendra typedef struct {
56dea4501bSVishwajith Upendra     A_UINT32    commandId;
57dea4501bSVishwajith Upendra } POSTPACK WMIX_CMD_HDR;
58dea4501bSVishwajith Upendra 
59dea4501bSVishwajith Upendra typedef enum {
60dea4501bSVishwajith Upendra     WMIX_DSETOPEN_REPLY_CMDID           = 0x2001,
61dea4501bSVishwajith Upendra     WMIX_DSETDATA_REPLY_CMDID,
62dea4501bSVishwajith Upendra     WMIX_HB_CHALLENGE_RESP_CMDID,
63dea4501bSVishwajith Upendra     WMIX_DBGLOG_CFG_MODULE_CMDID,
64dea4501bSVishwajith Upendra     WMIX_PROF_CFG_CMDID,                 /* 0x200a */
65dea4501bSVishwajith Upendra     WMIX_PROF_ADDR_SET_CMDID,
66dea4501bSVishwajith Upendra     WMIX_PROF_START_CMDID,
67dea4501bSVishwajith Upendra     WMIX_PROF_STOP_CMDID,
68dea4501bSVishwajith Upendra     WMIX_PROF_COUNT_GET_CMDID,
69dea4501bSVishwajith Upendra } WMIX_COMMAND_ID;
70dea4501bSVishwajith Upendra 
71dea4501bSVishwajith Upendra typedef enum {
72dea4501bSVishwajith Upendra     WMIX_DSETOPENREQ_EVENTID            = 0x3001,
73dea4501bSVishwajith Upendra     WMIX_DSETCLOSE_EVENTID,
74dea4501bSVishwajith Upendra     WMIX_DSETDATAREQ_EVENTID,
75dea4501bSVishwajith Upendra     WMIX_HB_CHALLENGE_RESP_EVENTID,
76dea4501bSVishwajith Upendra     WMIX_DBGLOG_EVENTID,
77dea4501bSVishwajith Upendra     WMIX_PROF_COUNT_EVENTID,
78dea4501bSVishwajith Upendra     WMIX_PKTLOG_EVENTID,
79dea4501bSVishwajith Upendra } WMIX_EVENT_ID;
80dea4501bSVishwajith Upendra 
81dea4501bSVishwajith Upendra /*
82dea4501bSVishwajith Upendra  * =============DataSet support=================
83dea4501bSVishwajith Upendra  */
84dea4501bSVishwajith Upendra 
85dea4501bSVishwajith Upendra /*
86dea4501bSVishwajith Upendra  * WMIX_DSETOPENREQ_EVENTID
87dea4501bSVishwajith Upendra  * DataSet Open Request Event
88dea4501bSVishwajith Upendra  */
89dea4501bSVishwajith Upendra typedef struct {
90dea4501bSVishwajith Upendra     A_UINT32 dset_id;
91dea4501bSVishwajith Upendra     A_UINT32 targ_dset_handle;  /* echo'ed, not used by Host, */
92dea4501bSVishwajith Upendra     A_UINT32 targ_reply_fn;     /* echo'ed, not used by Host, */
93dea4501bSVishwajith Upendra     A_UINT32 targ_reply_arg;    /* echo'ed, not used by Host, */
94dea4501bSVishwajith Upendra } POSTPACK WMIX_DSETOPENREQ_EVENT;
95dea4501bSVishwajith Upendra 
96dea4501bSVishwajith Upendra /*
97dea4501bSVishwajith Upendra  * WMIX_DSETCLOSE_EVENTID
98dea4501bSVishwajith Upendra  * DataSet Close Event
99dea4501bSVishwajith Upendra  */
100dea4501bSVishwajith Upendra typedef struct {
101dea4501bSVishwajith Upendra     A_UINT32 access_cookie;
102dea4501bSVishwajith Upendra } POSTPACK WMIX_DSETCLOSE_EVENT;
103dea4501bSVishwajith Upendra 
104dea4501bSVishwajith Upendra /*
105dea4501bSVishwajith Upendra  * WMIX_DSETDATAREQ_EVENTID
106dea4501bSVishwajith Upendra  * DataSet Data Request Event
107dea4501bSVishwajith Upendra  */
108dea4501bSVishwajith Upendra typedef struct {
109dea4501bSVishwajith Upendra     A_UINT32 access_cookie;
110dea4501bSVishwajith Upendra     A_UINT32 offset;
111dea4501bSVishwajith Upendra     A_UINT32 length;
112dea4501bSVishwajith Upendra     A_UINT32 targ_buf;         /* echo'ed, not used by Host, */
113dea4501bSVishwajith Upendra     A_UINT32 targ_reply_fn;    /* echo'ed, not used by Host, */
114dea4501bSVishwajith Upendra     A_UINT32 targ_reply_arg;   /* echo'ed, not used by Host, */
115dea4501bSVishwajith Upendra } WMIX_DSETDATAREQ_EVENT;
116dea4501bSVishwajith Upendra 
117dea4501bSVishwajith Upendra typedef struct {
118dea4501bSVishwajith Upendra     A_UINT32              status;
119dea4501bSVishwajith Upendra     A_UINT32              targ_dset_handle;
120dea4501bSVishwajith Upendra     A_UINT32              targ_reply_fn;
121dea4501bSVishwajith Upendra     A_UINT32              targ_reply_arg;
122dea4501bSVishwajith Upendra     A_UINT32              access_cookie;
123dea4501bSVishwajith Upendra     A_UINT32              size;
124dea4501bSVishwajith Upendra     A_UINT32              version;
125dea4501bSVishwajith Upendra }  WMIX_DSETOPEN_REPLY_CMD;
126dea4501bSVishwajith Upendra 
127dea4501bSVishwajith Upendra typedef struct {
128dea4501bSVishwajith Upendra     A_UINT32              status;
129dea4501bSVishwajith Upendra     A_UINT32              targ_buf;
130dea4501bSVishwajith Upendra     A_UINT32              targ_reply_fn;
131dea4501bSVishwajith Upendra     A_UINT32              targ_reply_arg;
132dea4501bSVishwajith Upendra     A_UINT32              length;
133dea4501bSVishwajith Upendra     A_UINT8               buf[1];
134dea4501bSVishwajith Upendra }  WMIX_DSETDATA_REPLY_CMD;
135dea4501bSVishwajith Upendra 
136*90c68bd3Sqcabuildsw 
137dea4501bSVishwajith Upendra /*
138dea4501bSVishwajith Upendra  * =============Error Detection support=================
139dea4501bSVishwajith Upendra  */
140dea4501bSVishwajith Upendra 
141dea4501bSVishwajith Upendra /*
142dea4501bSVishwajith Upendra  * WMIX_HB_CHALLENGE_RESP_CMDID
143dea4501bSVishwajith Upendra  * Heartbeat Challenge Response command
144dea4501bSVishwajith Upendra  */
145dea4501bSVishwajith Upendra typedef struct {
146dea4501bSVishwajith Upendra     A_UINT32              cookie;
147dea4501bSVishwajith Upendra     A_UINT32              source;
148dea4501bSVishwajith Upendra }  WMIX_HB_CHALLENGE_RESP_CMD;
149dea4501bSVishwajith Upendra 
150dea4501bSVishwajith Upendra /*
151dea4501bSVishwajith Upendra  * WMIX_HB_CHALLENGE_RESP_EVENTID
152dea4501bSVishwajith Upendra  * Heartbeat Challenge Response Event
153dea4501bSVishwajith Upendra  */
154dea4501bSVishwajith Upendra #define WMIX_HB_CHALLENGE_RESP_EVENT WMIX_HB_CHALLENGE_RESP_CMD
155dea4501bSVishwajith Upendra 
156dea4501bSVishwajith Upendra /*
157dea4501bSVishwajith Upendra  * =============Target Profiling support=================
158dea4501bSVishwajith Upendra  */
159dea4501bSVishwajith Upendra 
160dea4501bSVishwajith Upendra typedef struct {
161dea4501bSVishwajith Upendra     A_UINT32 period; /* Time (in 30.5us ticks) between samples */
162dea4501bSVishwajith Upendra     A_UINT32 nbins;
163dea4501bSVishwajith Upendra }  WMIX_PROF_CFG_CMD;
164dea4501bSVishwajith Upendra 
165dea4501bSVishwajith Upendra typedef struct {
166dea4501bSVishwajith Upendra     A_UINT32 addr;
167dea4501bSVishwajith Upendra }  WMIX_PROF_ADDR_SET_CMD;
168dea4501bSVishwajith Upendra 
169dea4501bSVishwajith Upendra /*
170dea4501bSVishwajith Upendra  * Target responds to Hosts's earlier WMIX_PROF_COUNT_GET_CMDID request
171dea4501bSVishwajith Upendra  * using a WMIX_PROF_COUNT_EVENT with
172dea4501bSVishwajith Upendra  *   addr set to the next address
173dea4501bSVishwajith Upendra  *   count set to the corresponding count
174dea4501bSVishwajith Upendra  */
175dea4501bSVishwajith Upendra typedef struct {
176dea4501bSVishwajith Upendra     A_UINT32              addr;
177dea4501bSVishwajith Upendra     A_UINT32              count;
178dea4501bSVishwajith Upendra }  WMIX_PROF_COUNT_EVENT;
179dea4501bSVishwajith Upendra 
180*90c68bd3Sqcabuildsw 
181dea4501bSVishwajith Upendra #ifdef __cplusplus
182dea4501bSVishwajith Upendra }
183dea4501bSVishwajith Upendra #endif
184*90c68bd3Sqcabuildsw 
185dea4501bSVishwajith Upendra #endif /* _WMIX_H_ */
186