1 /* 2 * Copyright (c) 2022,2024 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef _TXMON_TLVS_H_ 20 #define _TXMON_TLVS_H_ 21 22 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M 0x0000ffff 23 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S 0 24 25 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M 0xffff0000 26 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S 16 27 28 #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M 0x000000ff 29 #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S 0 30 31 #define TXMON_FW2SW_MON_FES_SETUP_MHZ_M 0x00ffff00 32 #define TXMON_FW2SW_MON_FES_SETUP_MHZ_S 8 33 34 #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M 0xffffffff 35 #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S 0 36 37 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M 0x000fffff 38 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S 0 39 40 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M 0x000007ff 41 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S 0 42 43 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M 0x00003800 44 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S 11 45 46 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M 0x0007c000 47 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S 14 48 49 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M 0x00080000 50 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S 19 51 52 53 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_GET(_var) \ 54 (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M) >> \ 55 TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S) 56 57 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_SET(_var, _val) \ 58 do { \ 59 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1, _val); \ 60 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S)); \ 61 } while (0) 62 63 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_GET(_var) \ 64 (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M) >> \ 65 TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S) 66 67 #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_SET(_var, _val) \ 68 do { \ 69 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2, _val); \ 70 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S)); \ 71 } while (0) 72 73 #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_GET(_var) \ 74 (((_var) & TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M) >> \ 75 TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S) 76 77 #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_SET(_var, _val) \ 78 do { \ 79 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_PHY_MODE, _val); \ 80 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S)); \ 81 } while (0) 82 83 #define TXMON_FW2SW_MON_FES_SETUP_MHZ_GET(_var) \ 84 (((_var) & TXMON_FW2SW_MON_FES_SETUP_MHZ_M) >> \ 85 TXMON_FW2SW_MON_FES_SETUP_MHZ_S) 86 87 #define TXMON_FW2SW_MON_FES_SETUP_MHZ_SET(_var, _val) \ 88 do { \ 89 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_MHZ, _val); \ 90 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_MHZ_S)); \ 91 } while (0) 92 93 #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_GET(_var) \ 94 (((_var) & TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M) >> \ 95 TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S) 96 97 #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_SET(_var, _val) \ 98 do { \ 99 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID, _val); \ 100 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S)); \ 101 } while (0) 102 103 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_GET(_var) \ 104 (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M) >> \ 105 TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S) 106 107 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SET(_var, _val) \ 108 do { \ 109 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE, _val); \ 110 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S)); \ 111 } while (0) 112 113 114 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_GET(_var) \ 115 (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M) >> \ 116 TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S) 117 118 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_SET(_var, _val) \ 119 do { \ 120 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM, _val); \ 121 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S)); \ 122 } while (0) 123 124 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_GET(_var) \ 125 (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M) >> \ 126 TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S) 127 128 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_SET(_var, _val) \ 129 do { \ 130 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIEHW_LINK_ID, _val); \ 131 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S)); \ 132 } while (0) 133 134 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_GET(_var) \ 135 (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M) >> \ 136 TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S) 137 138 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_SET(_var, _val) \ 139 do { \ 140 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID, _val); \ 141 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S)); \ 142 } while (0) 143 144 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_GET(_var) \ 145 (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M) >> \ 146 TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S) 147 148 #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_SET(_var, _val) \ 149 do { \ 150 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID, _val); \ 151 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S)); \ 152 } while (0) 153 154 155 enum txmon_fw2sw_user_id { 156 TXMON_FW2SW_TYPE_FES_SETUP = 0, /* Placed after FES_SETUP */ 157 TXMON_FW2SW_TYPE_FES_SETUP_USER = 1, /* Placed before FES_SETUP_COMPLETE */ 158 TXMON_FW2SW_TYPE_FES_SETUP_EXT = 2, /* Placed after FES_SETUP_COMPLETE */ 159 TXMON_FW2SW_TYPE_MAX = 4 160 }; 161 162 typedef struct txmon_fw2sw_fes_setup { 163 A_UINT32 band_center_freq1 : 16, 164 band_center_freq2 : 16; 165 A_UINT32 phy_mode : 8, /* this field is filled with WLAN_PHY_MODE enum value */ 166 mhz : 16, 167 reserved : 8; 168 A_UINT32 schedule_id; 169 A_UINT32 fw_cookie : 20, 170 rsvd : 12; 171 } txmon_fw2sw_fes_setup_t; 172 173 typedef struct txmon_fw2sw_fes_setup_ext { 174 A_UINT32 reserved; 175 } txmon_fw2sw_fes_setup_ext_t; 176 177 #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M 0x0000003f 178 #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S 0 179 180 #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_GET(_var) \ 181 (((_var) & TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M) >> \ 182 TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S) 183 184 #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_SET(_var, _val) \ 185 do { \ 186 HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID, _val); \ 187 ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S)); \ 188 } while (0) 189 190 191 typedef struct txmon_fw2sw_fes_setup_user { 192 A_UINT32 user_id : 6, 193 reserved : 24; 194 } txmon_fw2sw_fes_setup_user_t; 195 196 struct txmon_fw2sw_mon_fes_setup_tlv { 197 struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP */ 198 struct txmon_fw2sw_fes_setup setup; 199 }; 200 201 struct txmon_fw2sw_mon_fes_setup_ext_tlv { 202 struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_EXT*/ 203 struct txmon_fw2sw_fes_setup_ext setup_ext; 204 }; 205 206 struct txmon_fw2sw_mon_fes_setup_user_tlv { 207 struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_USER */ 208 struct txmon_fw2sw_fes_setup_user user_setup; 209 }; 210 211 #endif /* _TXMON_TLVS_H_ */ 212