1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2016 Realtek Corporation. 5 * 6 * Contact Information: 7 * wlanfae <wlanfae@realtek.com> 8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 9 * Hsinchu 300, Taiwan. 10 * 11 * Larry Finger <Larry.Finger@lwfinger.net> 12 * 13 *****************************************************************************/ 14 #ifndef _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_NIC_H_ 15 #define _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_NIC_H_ 16 #define CMD_ID_FW_OFFLOAD_H2C 0XFF 17 #define CMD_ID_CHANNEL_SWITCH 0XFF 18 #define CMD_ID_DUMP_PHYSICAL_EFUSE 0XFF 19 #define CMD_ID_UPDATE_BEACON_PARSING_INFO 0XFF 20 #define CMD_ID_CFG_PARAMETER 0XFF 21 #define CMD_ID_UPDATE_DATAPACK 0XFF 22 #define CMD_ID_RUN_DATAPACK 0XFF 23 #define CMD_ID_DOWNLOAD_FLASH 0XFF 24 #define CMD_ID_UPDATE_PACKET 0XFF 25 #define CMD_ID_GENERAL_INFO 0XFF 26 #define CMD_ID_IQK 0XFF 27 #define CMD_ID_POWER_TRACKING 0XFF 28 #define CMD_ID_PSD 0XFF 29 #define CMD_ID_P2PPS 0XFF 30 #define CMD_ID_BT_COEX 0XFF 31 #define CMD_ID_NAN_CTRL 0XFF 32 #define CMD_ID_NAN_CHANNEL_PLAN_0 0XFF 33 #define CMD_ID_NAN_CHANNEL_PLAN_1 0XFF 34 #define CATEGORY_H2C_CMD_HEADER 0X00 35 #define CATEGORY_FW_OFFLOAD_H2C 0X01 36 #define CATEGORY_CHANNEL_SWITCH 0X01 37 #define CATEGORY_DUMP_PHYSICAL_EFUSE 0X01 38 #define CATEGORY_UPDATE_BEACON_PARSING_INFO 0X01 39 #define CATEGORY_CFG_PARAMETER 0X01 40 #define CATEGORY_UPDATE_DATAPACK 0X01 41 #define CATEGORY_RUN_DATAPACK 0X01 42 #define CATEGORY_DOWNLOAD_FLASH 0X01 43 #define CATEGORY_UPDATE_PACKET 0X01 44 #define CATEGORY_GENERAL_INFO 0X01 45 #define CATEGORY_IQK 0X01 46 #define CATEGORY_POWER_TRACKING 0X01 47 #define CATEGORY_PSD 0X01 48 #define CATEGORY_P2PPS 0X01 49 #define CATEGORY_BT_COEX 0X01 50 #define CATEGORY_NAN_CTRL 0X01 51 #define CATEGORY_NAN_CHANNEL_PLAN_0 0X01 52 #define CATEGORY_NAN_CHANNEL_PLAN_1 0X01 53 #define SUB_CMD_ID_CHANNEL_SWITCH 0X02 54 #define SUB_CMD_ID_DUMP_PHYSICAL_EFUSE 0X03 55 #define SUB_CMD_ID_UPDATE_BEACON_PARSING_INFO 0X05 56 #define SUB_CMD_ID_CFG_PARAMETER 0X08 57 #define SUB_CMD_ID_UPDATE_DATAPACK 0X09 58 #define SUB_CMD_ID_RUN_DATAPACK 0X0A 59 #define SUB_CMD_ID_DOWNLOAD_FLASH 0X0B 60 #define SUB_CMD_ID_UPDATE_PACKET 0X0C 61 #define SUB_CMD_ID_GENERAL_INFO 0X0D 62 #define SUB_CMD_ID_IQK 0X0E 63 #define SUB_CMD_ID_POWER_TRACKING 0X0F 64 #define SUB_CMD_ID_PSD 0X10 65 #define SUB_CMD_ID_P2PPS 0X24 66 #define SUB_CMD_ID_BT_COEX 0X60 67 #define SUB_CMD_ID_NAN_CTRL 0XB2 68 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_0 0XB4 69 #define SUB_CMD_ID_NAN_CHANNEL_PLAN_1 0XB5 70 #define H2C_CMD_HEADER_GET_CATEGORY(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X00, 0, 7) 71 #define H2C_CMD_HEADER_SET_CATEGORY(__h2c, __value) \ 72 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 0, 7, __value) 73 #define H2C_CMD_HEADER_GET_ACK(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X00, 7, 1) 74 #define H2C_CMD_HEADER_SET_ACK(__h2c, __value) \ 75 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 7, 1, __value) 76 #define H2C_CMD_HEADER_GET_TOTAL_LEN(__h2c) \ 77 LE_BITS_TO_4BYTE(__h2c + 0X04, 0, 16) 78 #define H2C_CMD_HEADER_SET_TOTAL_LEN(__h2c, __value) \ 79 SET_BITS_TO_LE_4BYTE(__h2c + 0X04, 0, 16, __value) 80 #define H2C_CMD_HEADER_GET_SEQ_NUM(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X04, 16, 16) 81 #define H2C_CMD_HEADER_SET_SEQ_NUM(__h2c, __value) \ 82 SET_BITS_TO_LE_4BYTE(__h2c + 0X04, 16, 16, __value) 83 #define FW_OFFLOAD_H2C_GET_CATEGORY(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X00, 0, 7) 84 #define FW_OFFLOAD_H2C_SET_CATEGORY(__h2c, __value) \ 85 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 0, 7, __value) 86 #define FW_OFFLOAD_H2C_GET_ACK(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X00, 7, 1) 87 #define FW_OFFLOAD_H2C_SET_ACK(__h2c, __value) \ 88 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 7, 1, __value) 89 #define FW_OFFLOAD_H2C_GET_CMD_ID(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X00, 8, 8) 90 #define FW_OFFLOAD_H2C_SET_CMD_ID(__h2c, __value) \ 91 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 8, 8, __value) 92 #define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(__h2c) \ 93 LE_BITS_TO_4BYTE(__h2c + 0X00, 16, 16) 94 #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(__h2c, __value) \ 95 SET_BITS_TO_LE_4BYTE(__h2c + 0X00, 16, 16, __value) 96 #define FW_OFFLOAD_H2C_GET_TOTAL_LEN(__h2c) \ 97 LE_BITS_TO_4BYTE(__h2c + 0X04, 0, 16) 98 #define FW_OFFLOAD_H2C_SET_TOTAL_LEN(__h2c, __value) \ 99 SET_BITS_TO_LE_4BYTE(__h2c + 0X04, 0, 16, __value) 100 #define FW_OFFLOAD_H2C_GET_SEQ_NUM(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X04, 16, 16) 101 #define FW_OFFLOAD_H2C_SET_SEQ_NUM(__h2c, __value) \ 102 SET_BITS_TO_LE_4BYTE(__h2c + 0X04, 16, 16, __value) 103 #define CHANNEL_SWITCH_GET_SWITCH_START(__h2c) \ 104 LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 1) 105 #define CHANNEL_SWITCH_SET_SWITCH_START(__h2c, __value) \ 106 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 1, __value) 107 #define CHANNEL_SWITCH_GET_DEST_CH_EN(__h2c) \ 108 LE_BITS_TO_4BYTE(__h2c + 0X08, 1, 1) 109 #define CHANNEL_SWITCH_SET_DEST_CH_EN(__h2c, __value) \ 110 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 1, 1, __value) 111 #define CHANNEL_SWITCH_GET_ABSOLUTE_TIME(__h2c) \ 112 LE_BITS_TO_4BYTE(__h2c + 0X08, 2, 1) 113 #define CHANNEL_SWITCH_SET_ABSOLUTE_TIME(__h2c, __value) \ 114 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 2, 1, __value) 115 #define CHANNEL_SWITCH_GET_PERIODIC_OPTION(__h2c) \ 116 LE_BITS_TO_4BYTE(__h2c + 0X08, 3, 2) 117 #define CHANNEL_SWITCH_SET_PERIODIC_OPTION(__h2c, __value) \ 118 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 3, 2, __value) 119 #define CHANNEL_SWITCH_GET_CHANNEL_INFO_LOC(__h2c) \ 120 LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 8) 121 #define CHANNEL_SWITCH_SET_CHANNEL_INFO_LOC(__h2c, __value) \ 122 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 8, __value) 123 #define CHANNEL_SWITCH_GET_CHANNEL_NUM(__h2c) \ 124 LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 125 #define CHANNEL_SWITCH_SET_CHANNEL_NUM(__h2c, __value) \ 126 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 127 #define CHANNEL_SWITCH_GET_PRI_CH_IDX(__h2c) \ 128 LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 4) 129 #define CHANNEL_SWITCH_SET_PRI_CH_IDX(__h2c, __value) \ 130 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 4, __value) 131 #define CHANNEL_SWITCH_GET_DEST_BW(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 28, 4) 132 #define CHANNEL_SWITCH_SET_DEST_BW(__h2c, __value) \ 133 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 28, 4, __value) 134 #define CHANNEL_SWITCH_GET_DEST_CH(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 8) 135 #define CHANNEL_SWITCH_SET_DEST_CH(__h2c, __value) \ 136 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 8, __value) 137 #define CHANNEL_SWITCH_GET_NORMAL_PERIOD(__h2c) \ 138 LE_BITS_TO_4BYTE(__h2c + 0X0C, 8, 8) 139 #define CHANNEL_SWITCH_SET_NORMAL_PERIOD(__h2c, __value) \ 140 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 8, 8, __value) 141 #define CHANNEL_SWITCH_GET_SLOW_PERIOD(__h2c) \ 142 LE_BITS_TO_4BYTE(__h2c + 0X0C, 16, 8) 143 #define CHANNEL_SWITCH_SET_SLOW_PERIOD(__h2c, __value) \ 144 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 16, 8, __value) 145 #define CHANNEL_SWITCH_GET_NORMAL_CYCLE(__h2c) \ 146 LE_BITS_TO_4BYTE(__h2c + 0X0C, 24, 8) 147 #define CHANNEL_SWITCH_SET_NORMAL_CYCLE(__h2c, __value) \ 148 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 24, 8, __value) 149 #define CHANNEL_SWITCH_GET_TSF_HIGH(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 32) 150 #define CHANNEL_SWITCH_SET_TSF_HIGH(__h2c, __value) \ 151 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 32, __value) 152 #define CHANNEL_SWITCH_GET_TSF_LOW(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 32) 153 #define CHANNEL_SWITCH_SET_TSF_LOW(__h2c, __value) \ 154 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 32, __value) 155 #define CHANNEL_SWITCH_GET_CHANNEL_INFO_SIZE(__h2c) \ 156 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 16) 157 #define CHANNEL_SWITCH_SET_CHANNEL_INFO_SIZE(__h2c, __value) \ 158 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 16, __value) 159 #define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(__h2c) \ 160 LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 1) 161 #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(__h2c, __value) \ 162 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 1, __value) 163 #define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(__h2c) \ 164 LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 4) 165 #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(__h2c, __value) \ 166 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 4, __value) 167 #define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(__h2c) \ 168 LE_BITS_TO_4BYTE(__h2c + 0X08, 12, 4) 169 #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(__h2c, __value) \ 170 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 12, 4, __value) 171 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(__h2c) \ 172 LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 32) 173 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(__h2c, __value) \ 174 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 32, __value) 175 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(__h2c) \ 176 LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 32) 177 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(__h2c, __value) \ 178 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 32, __value) 179 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(__h2c) \ 180 LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 32) 181 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(__h2c, __value) \ 182 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 32, __value) 183 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(__h2c) \ 184 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 32) 185 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(__h2c, __value) \ 186 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 32, __value) 187 #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(__h2c) \ 188 LE_BITS_TO_4BYTE(__h2c + 0X1C, 0, 32) 189 #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(__h2c, __value) \ 190 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 0, 32, __value) 191 #define CFG_PARAMETER_GET_NUM(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 16) 192 #define CFG_PARAMETER_SET_NUM(__h2c, __value) \ 193 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 16, __value) 194 #define CFG_PARAMETER_GET_INIT_CASE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 1) 195 #define CFG_PARAMETER_SET_INIT_CASE(__h2c, __value) \ 196 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 1, __value) 197 #define CFG_PARAMETER_GET_PHY_PARAMETER_LOC(__h2c) \ 198 LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 8) 199 #define CFG_PARAMETER_SET_PHY_PARAMETER_LOC(__h2c, __value) \ 200 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 8, __value) 201 #define UPDATE_DATAPACK_GET_SIZE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 16) 202 #define UPDATE_DATAPACK_SET_SIZE(__h2c, __value) \ 203 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 16, __value) 204 #define UPDATE_DATAPACK_GET_DATAPACK_ID(__h2c) \ 205 LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 206 #define UPDATE_DATAPACK_SET_DATAPACK_ID(__h2c, __value) \ 207 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 208 #define UPDATE_DATAPACK_GET_DATAPACK_LOC(__h2c) \ 209 LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 8) 210 #define UPDATE_DATAPACK_SET_DATAPACK_LOC(__h2c, __value) \ 211 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 8, __value) 212 #define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(__h2c) \ 213 LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 8) 214 #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(__h2c, __value) \ 215 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 8, __value) 216 #define UPDATE_DATAPACK_GET_END_SEGMENT(__h2c) \ 217 LE_BITS_TO_4BYTE(__h2c + 0X0C, 8, 1) 218 #define UPDATE_DATAPACK_SET_END_SEGMENT(__h2c, __value) \ 219 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 8, 1, __value) 220 #define RUN_DATAPACK_GET_DATAPACK_ID(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 221 #define RUN_DATAPACK_SET_DATAPACK_ID(__h2c, __value) \ 222 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 223 #define DOWNLOAD_FLASH_GET_SPI_CMD(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 224 #define DOWNLOAD_FLASH_SET_SPI_CMD(__h2c, __value) \ 225 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 226 #define DOWNLOAD_FLASH_GET_LOCATION(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 16) 227 #define DOWNLOAD_FLASH_SET_LOCATION(__h2c, __value) \ 228 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 16, __value) 229 #define DOWNLOAD_FLASH_GET_SIZE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 32) 230 #define DOWNLOAD_FLASH_SET_SIZE(__h2c, __value) \ 231 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 32, __value) 232 #define DOWNLOAD_FLASH_GET_START_ADDR(__h2c) \ 233 LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 32) 234 #define DOWNLOAD_FLASH_SET_START_ADDR(__h2c, __value) \ 235 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 32, __value) 236 #define UPDATE_PACKET_GET_SIZE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 16) 237 #define UPDATE_PACKET_SET_SIZE(__h2c, __value) \ 238 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 16, __value) 239 #define UPDATE_PACKET_GET_PACKET_ID(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 240 #define UPDATE_PACKET_SET_PACKET_ID(__h2c, __value) \ 241 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 242 #define UPDATE_PACKET_GET_PACKET_LOC(__h2c) \ 243 LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 8) 244 #define UPDATE_PACKET_SET_PACKET_LOC(__h2c, __value) \ 245 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 8, __value) 246 #define GENERAL_INFO_GET_REF_TYPE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 247 #define GENERAL_INFO_SET_REF_TYPE(__h2c, __value) \ 248 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 249 #define GENERAL_INFO_GET_RF_TYPE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 9) 250 #define GENERAL_INFO_SET_RF_TYPE(__h2c, __value) \ 251 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 9, __value) 252 #define GENERAL_INFO_GET_FW_TX_BOUNDARY(__h2c) \ 253 LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 254 #define GENERAL_INFO_SET_FW_TX_BOUNDARY(__h2c, __value) \ 255 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 256 #define IQK_GET_CLEAR(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 1) 257 #define IQK_SET_CLEAR(__h2c, __value) \ 258 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 1, __value) 259 #define IQK_GET_SEGMENT_IQK(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 1, 1) 260 #define IQK_SET_SEGMENT_IQK(__h2c, __value) \ 261 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 1, 1, __value) 262 #define POWER_TRACKING_GET_ENABLE_A(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 1) 263 #define POWER_TRACKING_SET_ENABLE_A(__h2c, __value) \ 264 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 1, __value) 265 #define POWER_TRACKING_GET_ENABLE_B(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 1, 1) 266 #define POWER_TRACKING_SET_ENABLE_B(__h2c, __value) \ 267 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 1, 1, __value) 268 #define POWER_TRACKING_GET_ENABLE_C(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 2, 1) 269 #define POWER_TRACKING_SET_ENABLE_C(__h2c, __value) \ 270 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 2, 1, __value) 271 #define POWER_TRACKING_GET_ENABLE_D(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 3, 1) 272 #define POWER_TRACKING_SET_ENABLE_D(__h2c, __value) \ 273 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 3, 1, __value) 274 #define POWER_TRACKING_GET_TYPE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 4, 3) 275 #define POWER_TRACKING_SET_TYPE(__h2c, __value) \ 276 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 4, 3, __value) 277 #define POWER_TRACKING_GET_BBSWING_INDEX(__h2c) \ 278 LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 8) 279 #define POWER_TRACKING_SET_BBSWING_INDEX(__h2c, __value) \ 280 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 8, __value) 281 #define POWER_TRACKING_GET_TX_PWR_INDEX_A(__h2c) \ 282 LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 8) 283 #define POWER_TRACKING_SET_TX_PWR_INDEX_A(__h2c, __value) \ 284 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 8, __value) 285 #define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_A(__h2c) \ 286 LE_BITS_TO_4BYTE(__h2c + 0X0C, 8, 8) 287 #define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_A(__h2c, __value) \ 288 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 8, 8, __value) 289 #define POWER_TRACKING_GET_TSSI_VALUE_A(__h2c) \ 290 LE_BITS_TO_4BYTE(__h2c + 0X0C, 16, 8) 291 #define POWER_TRACKING_SET_TSSI_VALUE_A(__h2c, __value) \ 292 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 16, 8, __value) 293 #define POWER_TRACKING_GET_TX_PWR_INDEX_B(__h2c) \ 294 LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 8) 295 #define POWER_TRACKING_SET_TX_PWR_INDEX_B(__h2c, __value) \ 296 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 8, __value) 297 #define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_B(__h2c) \ 298 LE_BITS_TO_4BYTE(__h2c + 0X10, 8, 8) 299 #define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_B(__h2c, __value) \ 300 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 8, 8, __value) 301 #define POWER_TRACKING_GET_TSSI_VALUE_B(__h2c) \ 302 LE_BITS_TO_4BYTE(__h2c + 0X10, 16, 8) 303 #define POWER_TRACKING_SET_TSSI_VALUE_B(__h2c, __value) \ 304 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 16, 8, __value) 305 #define POWER_TRACKING_GET_TX_PWR_INDEX_C(__h2c) \ 306 LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 8) 307 #define POWER_TRACKING_SET_TX_PWR_INDEX_C(__h2c, __value) \ 308 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 8, __value) 309 #define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_C(__h2c) \ 310 LE_BITS_TO_4BYTE(__h2c + 0X14, 8, 8) 311 #define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_C(__h2c, __value) \ 312 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 8, 8, __value) 313 #define POWER_TRACKING_GET_TSSI_VALUE_C(__h2c) \ 314 LE_BITS_TO_4BYTE(__h2c + 0X14, 16, 8) 315 #define POWER_TRACKING_SET_TSSI_VALUE_C(__h2c, __value) \ 316 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 16, 8, __value) 317 #define POWER_TRACKING_GET_TX_PWR_INDEX_D(__h2c) \ 318 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 8) 319 #define POWER_TRACKING_SET_TX_PWR_INDEX_D(__h2c, __value) \ 320 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 8, __value) 321 #define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_D(__h2c) \ 322 LE_BITS_TO_4BYTE(__h2c + 0X18, 8, 8) 323 #define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_D(__h2c, __value) \ 324 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 8, 8, __value) 325 #define POWER_TRACKING_GET_TSSI_VALUE_D(__h2c) \ 326 LE_BITS_TO_4BYTE(__h2c + 0X18, 16, 8) 327 #define POWER_TRACKING_SET_TSSI_VALUE_D(__h2c, __value) \ 328 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 16, 8, __value) 329 #define PSD_GET_START_PSD(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 16) 330 #define PSD_SET_START_PSD(__h2c, __value) \ 331 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 16, __value) 332 #define PSD_GET_END_PSD(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 16) 333 #define PSD_SET_END_PSD(__h2c, __value) \ 334 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 16, __value) 335 #define P2PPS_GET_OFFLOAD_EN(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 1) 336 #define P2PPS_SET_OFFLOAD_EN(__h2c, __value) \ 337 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 1, __value) 338 #define P2PPS_GET_ROLE(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 1, 1) 339 #define P2PPS_SET_ROLE(__h2c, __value) \ 340 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 1, 1, __value) 341 #define P2PPS_GET_CTWINDOW_EN(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 2, 1) 342 #define P2PPS_SET_CTWINDOW_EN(__h2c, __value) \ 343 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 2, 1, __value) 344 #define P2PPS_GET_NOA_EN(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 3, 1) 345 #define P2PPS_SET_NOA_EN(__h2c, __value) \ 346 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 3, 1, __value) 347 #define P2PPS_GET_NOA_SEL(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 4, 1) 348 #define P2PPS_SET_NOA_SEL(__h2c, __value) \ 349 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 4, 1, __value) 350 #define P2PPS_GET_ALLSTASLEEP(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 5, 1) 351 #define P2PPS_SET_ALLSTASLEEP(__h2c, __value) \ 352 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 5, 1, __value) 353 #define P2PPS_GET_DISCOVERY(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 6, 1) 354 #define P2PPS_SET_DISCOVERY(__h2c, __value) \ 355 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 6, 1, __value) 356 #define P2PPS_GET_P2P_PORT_ID(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 8) 357 #define P2PPS_SET_P2P_PORT_ID(__h2c, __value) \ 358 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 8, __value) 359 #define P2PPS_GET_P2P_GROUP(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 360 #define P2PPS_SET_P2P_GROUP(__h2c, __value) \ 361 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 362 #define P2PPS_GET_P2P_MACID(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 8) 363 #define P2PPS_SET_P2P_MACID(__h2c, __value) \ 364 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 8, __value) 365 #define P2PPS_GET_CTWINDOW_LENGTH(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 8) 366 #define P2PPS_SET_CTWINDOW_LENGTH(__h2c, __value) \ 367 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 8, __value) 368 #define P2PPS_GET_NOA_DURATION_PARA(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 32) 369 #define P2PPS_SET_NOA_DURATION_PARA(__h2c, __value) \ 370 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 32, __value) 371 #define P2PPS_GET_NOA_INTERVAL_PARA(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 32) 372 #define P2PPS_SET_NOA_INTERVAL_PARA(__h2c, __value) \ 373 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 32, __value) 374 #define P2PPS_GET_NOA_START_TIME_PARA(__h2c) \ 375 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 32) 376 #define P2PPS_SET_NOA_START_TIME_PARA(__h2c, __value) \ 377 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 32, __value) 378 #define P2PPS_GET_NOA_COUNT_PARA(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X1C, 0, 32) 379 #define P2PPS_SET_NOA_COUNT_PARA(__h2c, __value) \ 380 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 0, 32, __value) 381 #define BT_COEX_GET_DATA_START(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 382 #define BT_COEX_SET_DATA_START(__h2c, __value) \ 383 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 384 #define NAN_CTRL_GET_NAN_EN(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 2) 385 #define NAN_CTRL_SET_NAN_EN(__h2c, __value) \ 386 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 2, __value) 387 #define NAN_CTRL_GET_SUPPORT_BAND(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 2) 388 #define NAN_CTRL_SET_SUPPORT_BAND(__h2c, __value) \ 389 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 2, __value) 390 #define NAN_CTRL_GET_DISABLE_2G_DISC_BCN(__h2c) \ 391 LE_BITS_TO_4BYTE(__h2c + 0X08, 10, 1) 392 #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN(__h2c, __value) \ 393 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 10, 1, __value) 394 #define NAN_CTRL_GET_DISABLE_5G_DISC_BCN(__h2c) \ 395 LE_BITS_TO_4BYTE(__h2c + 0X08, 11, 1) 396 #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN(__h2c, __value) \ 397 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 11, 1, __value) 398 #define NAN_CTRL_GET_BCN_RSVD_PAGE_OFFSET(__h2c) \ 399 LE_BITS_TO_4BYTE(__h2c + 0X08, 16, 8) 400 #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET(__h2c, __value) \ 401 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 16, 8, __value) 402 #define NAN_CTRL_GET_CHANNEL_2G(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X08, 24, 8) 403 #define NAN_CTRL_SET_CHANNEL_2G(__h2c, __value) \ 404 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 24, 8, __value) 405 #define NAN_CTRL_GET_CHANNEL_5G(__h2c) LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 8) 406 #define NAN_CTRL_SET_CHANNEL_5G(__h2c, __value) \ 407 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 8, __value) 408 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_0(__h2c) \ 409 LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 410 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0(__h2c, __value) \ 411 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 412 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_0(__h2c) \ 413 LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 8) 414 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0(__h2c, __value) \ 415 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 8, __value) 416 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_0(__h2c) \ 417 LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 16) 418 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0(__h2c, __value) \ 419 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 16, __value) 420 #define NAN_CHANNEL_PLAN_0_GET_DURATION_0(__h2c) \ 421 LE_BITS_TO_4BYTE(__h2c + 0X0C, 16, 16) 422 #define NAN_CHANNEL_PLAN_0_SET_DURATION_0(__h2c, __value) \ 423 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 16, 16, __value) 424 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_1(__h2c) \ 425 LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 8) 426 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1(__h2c, __value) \ 427 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 8, __value) 428 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_1(__h2c) \ 429 LE_BITS_TO_4BYTE(__h2c + 0X10, 8, 8) 430 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1(__h2c, __value) \ 431 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 8, 8, __value) 432 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_1(__h2c) \ 433 LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 16) 434 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1(__h2c, __value) \ 435 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 16, __value) 436 #define NAN_CHANNEL_PLAN_0_GET_DURATION_1(__h2c) \ 437 LE_BITS_TO_4BYTE(__h2c + 0X14, 16, 16) 438 #define NAN_CHANNEL_PLAN_0_SET_DURATION_1(__h2c, __value) \ 439 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 16, 16, __value) 440 #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_2(__h2c) \ 441 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 8) 442 #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2(__h2c, __value) \ 443 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 8, __value) 444 #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_2(__h2c) \ 445 LE_BITS_TO_4BYTE(__h2c + 0X18, 8, 8) 446 #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2(__h2c, __value) \ 447 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 8, 8, __value) 448 #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_2(__h2c) \ 449 LE_BITS_TO_4BYTE(__h2c + 0X1C, 0, 16) 450 #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2(__h2c, __value) \ 451 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 0, 16, __value) 452 #define NAN_CHANNEL_PLAN_0_GET_DURATION_2(__h2c) \ 453 LE_BITS_TO_4BYTE(__h2c + 0X1C, 16, 16) 454 #define NAN_CHANNEL_PLAN_0_SET_DURATION_2(__h2c, __value) \ 455 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 16, 16, __value) 456 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_3(__h2c) \ 457 LE_BITS_TO_4BYTE(__h2c + 0X08, 0, 8) 458 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3(__h2c, __value) \ 459 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 0, 8, __value) 460 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_3(__h2c) \ 461 LE_BITS_TO_4BYTE(__h2c + 0X08, 8, 8) 462 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3(__h2c, __value) \ 463 SET_BITS_TO_LE_4BYTE(__h2c + 0X08, 8, 8, __value) 464 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_3(__h2c) \ 465 LE_BITS_TO_4BYTE(__h2c + 0X0C, 0, 16) 466 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3(__h2c, __value) \ 467 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 0, 16, __value) 468 #define NAN_CHANNEL_PLAN_1_GET_DURATION_3(__h2c) \ 469 LE_BITS_TO_4BYTE(__h2c + 0X0C, 16, 16) 470 #define NAN_CHANNEL_PLAN_1_SET_DURATION_3(__h2c, __value) \ 471 SET_BITS_TO_LE_4BYTE(__h2c + 0X0C, 16, 16, __value) 472 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_4(__h2c) \ 473 LE_BITS_TO_4BYTE(__h2c + 0X10, 0, 8) 474 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4(__h2c, __value) \ 475 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 0, 8, __value) 476 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_4(__h2c) \ 477 LE_BITS_TO_4BYTE(__h2c + 0X10, 8, 8) 478 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4(__h2c, __value) \ 479 SET_BITS_TO_LE_4BYTE(__h2c + 0X10, 8, 8, __value) 480 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_4(__h2c) \ 481 LE_BITS_TO_4BYTE(__h2c + 0X14, 0, 16) 482 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4(__h2c, __value) \ 483 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 0, 16, __value) 484 #define NAN_CHANNEL_PLAN_1_GET_DURATION_4(__h2c) \ 485 LE_BITS_TO_4BYTE(__h2c + 0X14, 16, 16) 486 #define NAN_CHANNEL_PLAN_1_SET_DURATION_4(__h2c, __value) \ 487 SET_BITS_TO_LE_4BYTE(__h2c + 0X14, 16, 16, __value) 488 #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_5(__h2c) \ 489 LE_BITS_TO_4BYTE(__h2c + 0X18, 0, 8) 490 #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5(__h2c, __value) \ 491 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 0, 8, __value) 492 #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_5(__h2c) \ 493 LE_BITS_TO_4BYTE(__h2c + 0X18, 8, 8) 494 #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5(__h2c, __value) \ 495 SET_BITS_TO_LE_4BYTE(__h2c + 0X18, 8, 8, __value) 496 #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_5(__h2c) \ 497 LE_BITS_TO_4BYTE(__h2c + 0X1C, 0, 16) 498 #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5(__h2c, __value) \ 499 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 0, 16, __value) 500 #define NAN_CHANNEL_PLAN_1_GET_DURATION_5(__h2c) \ 501 LE_BITS_TO_4BYTE(__h2c + 0X1C, 16, 16) 502 #define NAN_CHANNEL_PLAN_1_SET_DURATION_5(__h2c, __value) \ 503 SET_BITS_TO_LE_4BYTE(__h2c + 0X1C, 16, 16, __value) 504 #endif 505