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