halmac_fw_offload_h2c_nic.h 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. ******************************************************************************/
  15. #ifndef _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_NIC_H_
  16. #define _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_NIC_H_
  17. #define CMD_ID_FW_OFFLOAD_H2C 0XFF
  18. #define CMD_ID_FW_ACCESS_TEST 0XFF
  19. #define CMD_ID_CH_SWITCH 0XFF
  20. #define CMD_ID_DUMP_PHYSICAL_EFUSE 0XFF
  21. #define CMD_ID_UPDATE_BEACON_PARSING_INFO 0XFF
  22. #define CMD_ID_CFG_PARAM 0XFF
  23. #define CMD_ID_UPDATE_DATAPACK 0XFF
  24. #define CMD_ID_RUN_DATAPACK 0XFF
  25. #define CMD_ID_DOWNLOAD_FLASH 0XFF
  26. #define CMD_ID_UPDATE_PKT 0XFF
  27. #define CMD_ID_GENERAL_INFO 0XFF
  28. #define CMD_ID_IQK 0XFF
  29. #define CMD_ID_PWR_TRK 0XFF
  30. #define CMD_ID_PSD 0XFF
  31. #define CMD_ID_PHYDM_INFO 0XFF
  32. #define CMD_ID_FW_SNDING 0XFF
  33. #define CMD_ID_FW_FWCTRL 0XFF
  34. #define CMD_ID_H2C_LOOPBACK 0XFF
  35. #define CMD_ID_FWCMD_LOOPBACK 0XFF
  36. #define CMD_ID_P2PPS 0XFF
  37. #define CMD_ID_BT_COEX 0XFF
  38. #define CMD_ID_NAN_CTRL 0XFF
  39. #define CMD_ID_NAN_CHANNEL_PLAN_0 0XFF
  40. #define CMD_ID_NAN_CHANNEL_PLAN_1 0XFF
  41. #define CATEGORY_H2C_CMD_HEADER 0X00
  42. #define CATEGORY_FW_OFFLOAD_H2C 0X01
  43. #define CATEGORY_FW_ACCESS_TEST 0X01
  44. #define CATEGORY_CH_SWITCH 0X01
  45. #define CATEGORY_DUMP_PHYSICAL_EFUSE 0X01
  46. #define CATEGORY_UPDATE_BEACON_PARSING_INFO 0X01
  47. #define CATEGORY_CFG_PARAM 0X01
  48. #define CATEGORY_UPDATE_DATAPACK 0X01
  49. #define CATEGORY_RUN_DATAPACK 0X01
  50. #define CATEGORY_DOWNLOAD_FLASH 0X01
  51. #define CATEGORY_UPDATE_PKT 0X01
  52. #define CATEGORY_GENERAL_INFO 0X01
  53. #define CATEGORY_IQK 0X01
  54. #define CATEGORY_PWR_TRK 0X01
  55. #define CATEGORY_PSD 0X01
  56. #define CATEGORY_PHYDM_INFO 0X01
  57. #define CATEGORY_FW_SNDING 0X01
  58. #define CATEGORY_FW_FWCTRL 0X01
  59. #define CATEGORY_H2C_LOOPBACK 0X01
  60. #define CATEGORY_FWCMD_LOOPBACK 0X01
  61. #define CATEGORY_P2PPS 0X01
  62. #define CATEGORY_BT_COEX 0X01
  63. #define CATEGORY_NAN_CTRL 0X01
  64. #define CATEGORY_NAN_CHANNEL_PLAN_0 0X01
  65. #define CATEGORY_NAN_CHANNEL_PLAN_1 0X01
  66. #define SUB_CMD_ID_FW_ACCESS_TEST 0X00
  67. #define SUB_CMD_ID_CH_SWITCH 0X02
  68. #define SUB_CMD_ID_DUMP_PHYSICAL_EFUSE 0X03
  69. #define SUB_CMD_ID_UPDATE_BEACON_PARSING_INFO 0X05
  70. #define SUB_CMD_ID_CFG_PARAM 0X08
  71. #define SUB_CMD_ID_UPDATE_DATAPACK 0X09
  72. #define SUB_CMD_ID_RUN_DATAPACK 0X0A
  73. #define SUB_CMD_ID_DOWNLOAD_FLASH 0X0B
  74. #define SUB_CMD_ID_UPDATE_PKT 0X0C
  75. #define SUB_CMD_ID_GENERAL_INFO 0X0D
  76. #define SUB_CMD_ID_IQK 0X0E
  77. #define SUB_CMD_ID_PWR_TRK 0X0F
  78. #define SUB_CMD_ID_PSD 0X10
  79. #define SUB_CMD_ID_PHYDM_INFO 0X11
  80. #define SUB_CMD_ID_FW_SNDING 0X12
  81. #define SUB_CMD_ID_FW_FWCTRL 0X13
  82. #define SUB_CMD_ID_H2C_LOOPBACK 0X14
  83. #define SUB_CMD_ID_FWCMD_LOOPBACK 0X15
  84. #define SUB_CMD_ID_P2PPS 0X24
  85. #define SUB_CMD_ID_BT_COEX 0X60
  86. #define SUB_CMD_ID_NAN_CTRL 0XB2
  87. #define SUB_CMD_ID_NAN_CHANNEL_PLAN_0 0XB4
  88. #define SUB_CMD_ID_NAN_CHANNEL_PLAN_1 0XB5
  89. #define H2C_CMD_HEADER_GET_CATEGORY(h2c_pkt) \
  90. LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 0, 7)
  91. #define H2C_CMD_HEADER_SET_CATEGORY(h2c_pkt, value) \
  92. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 0, 7, value)
  93. #define H2C_CMD_HEADER_GET_ACK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 7, 1)
  94. #define H2C_CMD_HEADER_SET_ACK(h2c_pkt, value) \
  95. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 7, 1, value)
  96. #define H2C_CMD_HEADER_GET_TOTAL_LEN(h2c_pkt) \
  97. LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 0, 16)
  98. #define H2C_CMD_HEADER_SET_TOTAL_LEN(h2c_pkt, value) \
  99. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 0, 16, value)
  100. #define H2C_CMD_HEADER_GET_SEQ_NUM(h2c_pkt) \
  101. LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 16, 16)
  102. #define H2C_CMD_HEADER_SET_SEQ_NUM(h2c_pkt, value) \
  103. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 16, 16, value)
  104. #define FW_OFFLOAD_H2C_GET_CATEGORY(h2c_pkt) \
  105. LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 0, 7)
  106. #define FW_OFFLOAD_H2C_SET_CATEGORY(h2c_pkt, value) \
  107. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 0, 7, value)
  108. #define FW_OFFLOAD_H2C_GET_ACK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 7, 1)
  109. #define FW_OFFLOAD_H2C_SET_ACK(h2c_pkt, value) \
  110. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 7, 1, value)
  111. #define FW_OFFLOAD_H2C_GET_CMD_ID(h2c_pkt) \
  112. LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 8, 8)
  113. #define FW_OFFLOAD_H2C_SET_CMD_ID(h2c_pkt, value) \
  114. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 8, 8, value)
  115. #define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(h2c_pkt) \
  116. LE_BITS_TO_4BYTE(h2c_pkt + 0X00, 16, 16)
  117. #define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(h2c_pkt, value) \
  118. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X00, 16, 16, value)
  119. #define FW_OFFLOAD_H2C_GET_TOTAL_LEN(h2c_pkt) \
  120. LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 0, 16)
  121. #define FW_OFFLOAD_H2C_SET_TOTAL_LEN(h2c_pkt, value) \
  122. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 0, 16, value)
  123. #define FW_OFFLOAD_H2C_GET_SEQ_NUM(h2c_pkt) \
  124. LE_BITS_TO_4BYTE(h2c_pkt + 0X04, 16, 16)
  125. #define FW_OFFLOAD_H2C_SET_SEQ_NUM(h2c_pkt, value) \
  126. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X04, 16, 16, value)
  127. #define FW_ACCESS_TEST_GET_ACCESS_TXFF(h2c_pkt) \
  128. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  129. #define FW_ACCESS_TEST_SET_ACCESS_TXFF(h2c_pkt, value) \
  130. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  131. #define FW_ACCESS_TEST_GET_ACCESS_RXFF(h2c_pkt) \
  132. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  133. #define FW_ACCESS_TEST_SET_ACCESS_RXFF(h2c_pkt, value) \
  134. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  135. #define FW_ACCESS_TEST_GET_ACCESS_FWFF(h2c_pkt) \
  136. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  137. #define FW_ACCESS_TEST_SET_ACCESS_FWFF(h2c_pkt, value) \
  138. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  139. #define FW_ACCESS_TEST_GET_ACCESS_PHYFF(h2c_pkt) \
  140. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
  141. #define FW_ACCESS_TEST_SET_ACCESS_PHYFF(h2c_pkt, value) \
  142. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
  143. #define FW_ACCESS_TEST_GET_ACCESS_RPT_BUF(h2c_pkt) \
  144. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 1)
  145. #define FW_ACCESS_TEST_SET_ACCESS_RPT_BUF(h2c_pkt, value) \
  146. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 1, value)
  147. #define FW_ACCESS_TEST_GET_ACCESS_CAM(h2c_pkt) \
  148. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 5, 1)
  149. #define FW_ACCESS_TEST_SET_ACCESS_CAM(h2c_pkt, value) \
  150. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 5, 1, value)
  151. #define FW_ACCESS_TEST_GET_ACCESS_WOW_CAM(h2c_pkt) \
  152. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 6, 1)
  153. #define FW_ACCESS_TEST_SET_ACCESS_WOW_CAM(h2c_pkt, value) \
  154. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 6, 1, value)
  155. #define FW_ACCESS_TEST_GET_ACCESS_RX_CAM(h2c_pkt) \
  156. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 7, 1)
  157. #define FW_ACCESS_TEST_SET_ACCESS_RX_CAM(h2c_pkt, value) \
  158. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 7, 1, value)
  159. #define FW_ACCESS_TEST_GET_ACCESS_BA_CAM(h2c_pkt) \
  160. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 1)
  161. #define FW_ACCESS_TEST_SET_ACCESS_BA_CAM(h2c_pkt, value) \
  162. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 1, value)
  163. #define FW_ACCESS_TEST_GET_ACCESS_MBSSID_CAM(h2c_pkt) \
  164. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 9, 1)
  165. #define FW_ACCESS_TEST_SET_ACCESS_MBSSID_CAM(h2c_pkt, value) \
  166. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 9, 1, value)
  167. #define FW_ACCESS_TEST_GET_ACCESS_PAGE0(h2c_pkt) \
  168. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 1)
  169. #define FW_ACCESS_TEST_SET_ACCESS_PAGE0(h2c_pkt, value) \
  170. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 1, value)
  171. #define FW_ACCESS_TEST_GET_ACCESS_PAGE1(h2c_pkt) \
  172. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 17, 1)
  173. #define FW_ACCESS_TEST_SET_ACCESS_PAGE1(h2c_pkt, value) \
  174. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 17, 1, value)
  175. #define FW_ACCESS_TEST_GET_ACCESS_PAGE2(h2c_pkt) \
  176. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 18, 1)
  177. #define FW_ACCESS_TEST_SET_ACCESS_PAGE2(h2c_pkt, value) \
  178. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 18, 1, value)
  179. #define FW_ACCESS_TEST_GET_ACCESS_PAGE3(h2c_pkt) \
  180. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 19, 1)
  181. #define FW_ACCESS_TEST_SET_ACCESS_PAGE3(h2c_pkt, value) \
  182. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 19, 1, value)
  183. #define FW_ACCESS_TEST_GET_ACCESS_PAGE4(h2c_pkt) \
  184. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 20, 1)
  185. #define FW_ACCESS_TEST_SET_ACCESS_PAGE4(h2c_pkt, value) \
  186. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 20, 1, value)
  187. #define FW_ACCESS_TEST_GET_ACCESS_PAGE5(h2c_pkt) \
  188. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 21, 1)
  189. #define FW_ACCESS_TEST_SET_ACCESS_PAGE5(h2c_pkt, value) \
  190. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 21, 1, value)
  191. #define FW_ACCESS_TEST_GET_ACCESS_PAGE6(h2c_pkt) \
  192. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 22, 1)
  193. #define FW_ACCESS_TEST_SET_ACCESS_PAGE6(h2c_pkt, value) \
  194. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 22, 1, value)
  195. #define FW_ACCESS_TEST_GET_ACCESS_PAGE7(h2c_pkt) \
  196. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 23, 1)
  197. #define FW_ACCESS_TEST_SET_ACCESS_PAGE7(h2c_pkt, value) \
  198. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 23, 1, value)
  199. #define CH_SWITCH_GET_START(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  200. #define CH_SWITCH_SET_START(h2c_pkt, value) \
  201. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  202. #define CH_SWITCH_GET_DEST_CH_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  203. #define CH_SWITCH_SET_DEST_CH_EN(h2c_pkt, value) \
  204. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  205. #define CH_SWITCH_GET_ABSOLUTE_TIME(h2c_pkt) \
  206. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  207. #define CH_SWITCH_SET_ABSOLUTE_TIME(h2c_pkt, value) \
  208. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  209. #define CH_SWITCH_GET_PERIODIC_OPT(h2c_pkt) \
  210. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 2)
  211. #define CH_SWITCH_SET_PERIODIC_OPT(h2c_pkt, value) \
  212. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 2, value)
  213. #define CH_SWITCH_GET_INFO_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  214. #define CH_SWITCH_SET_INFO_LOC(h2c_pkt, value) \
  215. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  216. #define CH_SWITCH_GET_CH_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  217. #define CH_SWITCH_SET_CH_NUM(h2c_pkt, value) \
  218. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  219. #define CH_SWITCH_GET_PRI_CH_IDX(h2c_pkt) \
  220. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 4)
  221. #define CH_SWITCH_SET_PRI_CH_IDX(h2c_pkt, value) \
  222. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 4, value)
  223. #define CH_SWITCH_GET_DEST_BW(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 28, 4)
  224. #define CH_SWITCH_SET_DEST_BW(h2c_pkt, value) \
  225. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 28, 4, value)
  226. #define CH_SWITCH_GET_DEST_CH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
  227. #define CH_SWITCH_SET_DEST_CH(h2c_pkt, value) \
  228. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
  229. #define CH_SWITCH_GET_NORMAL_PERIOD(h2c_pkt) \
  230. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 6)
  231. #define CH_SWITCH_SET_NORMAL_PERIOD(h2c_pkt, value) \
  232. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 6, value)
  233. #define CH_SWITCH_GET_NORMAL_PERIOD_SEL(h2c_pkt) \
  234. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 14, 2)
  235. #define CH_SWITCH_SET_NORMAL_PERIOD_SEL(h2c_pkt, value) \
  236. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 14, 2, value)
  237. #define CH_SWITCH_GET_SLOW_PERIOD(h2c_pkt) \
  238. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 6)
  239. #define CH_SWITCH_SET_SLOW_PERIOD(h2c_pkt, value) \
  240. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 6, value)
  241. #define CH_SWITCH_GET_SLOW_PERIOD_SEL(h2c_pkt) \
  242. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 22, 2)
  243. #define CH_SWITCH_SET_SLOW_PERIOD_SEL(h2c_pkt, value) \
  244. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 22, 2, value)
  245. #define CH_SWITCH_GET_NORMAL_CYCLE(h2c_pkt) \
  246. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 24, 8)
  247. #define CH_SWITCH_SET_NORMAL_CYCLE(h2c_pkt, value) \
  248. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 24, 8, value)
  249. #define CH_SWITCH_GET_TSF_HIGH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
  250. #define CH_SWITCH_SET_TSF_HIGH(h2c_pkt, value) \
  251. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
  252. #define CH_SWITCH_GET_TSF_LOW(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
  253. #define CH_SWITCH_SET_TSF_LOW(h2c_pkt, value) \
  254. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
  255. #define CH_SWITCH_GET_INFO_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 16)
  256. #define CH_SWITCH_SET_INFO_SIZE(h2c_pkt, value) \
  257. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 16, value)
  258. #define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(h2c_pkt) \
  259. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  260. #define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(h2c_pkt, value) \
  261. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  262. #define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(h2c_pkt) \
  263. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 4)
  264. #define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(h2c_pkt, value) \
  265. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 4, value)
  266. #define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(h2c_pkt) \
  267. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 12, 4)
  268. #define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(h2c_pkt, value) \
  269. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 12, 4, value)
  270. #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(h2c_pkt) \
  271. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
  272. #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(h2c_pkt, value) \
  273. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
  274. #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(h2c_pkt) \
  275. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
  276. #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(h2c_pkt, value) \
  277. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
  278. #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(h2c_pkt) \
  279. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
  280. #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(h2c_pkt, value) \
  281. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
  282. #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(h2c_pkt) \
  283. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 32)
  284. #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(h2c_pkt, value) \
  285. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 32, value)
  286. #define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(h2c_pkt) \
  287. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 32)
  288. #define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(h2c_pkt, value) \
  289. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 32, value)
  290. #define CFG_PARAM_GET_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
  291. #define CFG_PARAM_SET_NUM(h2c_pkt, value) \
  292. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
  293. #define CFG_PARAM_GET_INIT_CASE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 1)
  294. #define CFG_PARAM_SET_INIT_CASE(h2c_pkt, value) \
  295. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 1, value)
  296. #define CFG_PARAM_GET_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  297. #define CFG_PARAM_SET_LOC(h2c_pkt, value) \
  298. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  299. #define UPDATE_DATAPACK_GET_SIZE(h2c_pkt) \
  300. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
  301. #define UPDATE_DATAPACK_SET_SIZE(h2c_pkt, value) \
  302. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
  303. #define UPDATE_DATAPACK_GET_DATAPACK_ID(h2c_pkt) \
  304. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  305. #define UPDATE_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value) \
  306. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  307. #define UPDATE_DATAPACK_GET_DATAPACK_LOC(h2c_pkt) \
  308. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  309. #define UPDATE_DATAPACK_SET_DATAPACK_LOC(h2c_pkt, value) \
  310. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  311. #define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(h2c_pkt) \
  312. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
  313. #define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(h2c_pkt, value) \
  314. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
  315. #define UPDATE_DATAPACK_GET_END_SEGMENT(h2c_pkt) \
  316. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 1)
  317. #define UPDATE_DATAPACK_SET_END_SEGMENT(h2c_pkt, value) \
  318. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 1, value)
  319. #define RUN_DATAPACK_GET_DATAPACK_ID(h2c_pkt) \
  320. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  321. #define RUN_DATAPACK_SET_DATAPACK_ID(h2c_pkt, value) \
  322. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  323. #define DOWNLOAD_FLASH_GET_SPI_CMD(h2c_pkt) \
  324. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  325. #define DOWNLOAD_FLASH_SET_SPI_CMD(h2c_pkt, value) \
  326. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  327. #define DOWNLOAD_FLASH_GET_LOCATION(h2c_pkt) \
  328. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 16)
  329. #define DOWNLOAD_FLASH_SET_LOCATION(h2c_pkt, value) \
  330. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 16, value)
  331. #define DOWNLOAD_FLASH_GET_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
  332. #define DOWNLOAD_FLASH_SET_SIZE(h2c_pkt, value) \
  333. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
  334. #define DOWNLOAD_FLASH_GET_START_ADDR(h2c_pkt) \
  335. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
  336. #define DOWNLOAD_FLASH_SET_START_ADDR(h2c_pkt, value) \
  337. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
  338. #define UPDATE_PKT_GET_SIZE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
  339. #define UPDATE_PKT_SET_SIZE(h2c_pkt, value) \
  340. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
  341. #define UPDATE_PKT_GET_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  342. #define UPDATE_PKT_SET_ID(h2c_pkt, value) \
  343. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  344. #define UPDATE_PKT_GET_LOC(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  345. #define UPDATE_PKT_SET_LOC(h2c_pkt, value) \
  346. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  347. #define GENERAL_INFO_GET_FW_TX_BOUNDARY(h2c_pkt) \
  348. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  349. #define GENERAL_INFO_SET_FW_TX_BOUNDARY(h2c_pkt, value) \
  350. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  351. #define IQK_GET_CLEAR(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  352. #define IQK_SET_CLEAR(h2c_pkt, value) \
  353. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  354. #define IQK_GET_SEGMENT_IQK(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  355. #define IQK_SET_SEGMENT_IQK(h2c_pkt, value) \
  356. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  357. #define PWR_TRK_GET_ENABLE_A(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  358. #define PWR_TRK_SET_ENABLE_A(h2c_pkt, value) \
  359. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  360. #define PWR_TRK_GET_ENABLE_B(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  361. #define PWR_TRK_SET_ENABLE_B(h2c_pkt, value) \
  362. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  363. #define PWR_TRK_GET_ENABLE_C(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  364. #define PWR_TRK_SET_ENABLE_C(h2c_pkt, value) \
  365. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  366. #define PWR_TRK_GET_ENABLE_D(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
  367. #define PWR_TRK_SET_ENABLE_D(h2c_pkt, value) \
  368. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
  369. #define PWR_TRK_GET_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 3)
  370. #define PWR_TRK_SET_TYPE(h2c_pkt, value) \
  371. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 3, value)
  372. #define PWR_TRK_GET_BBSWING_INDEX(h2c_pkt) \
  373. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  374. #define PWR_TRK_SET_BBSWING_INDEX(h2c_pkt, value) \
  375. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  376. #define PWR_TRK_GET_TX_PWR_INDEX_A(h2c_pkt) \
  377. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
  378. #define PWR_TRK_SET_TX_PWR_INDEX_A(h2c_pkt, value) \
  379. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
  380. #define PWR_TRK_GET_OFFSET_VALUE_A(h2c_pkt) \
  381. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 8)
  382. #define PWR_TRK_SET_OFFSET_VALUE_A(h2c_pkt, value) \
  383. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 8, value)
  384. #define PWR_TRK_GET_TSSI_VALUE_A(h2c_pkt) \
  385. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 8)
  386. #define PWR_TRK_SET_TSSI_VALUE_A(h2c_pkt, value) \
  387. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 8, value)
  388. #define PWR_TRK_GET_TX_PWR_INDEX_B(h2c_pkt) \
  389. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
  390. #define PWR_TRK_SET_TX_PWR_INDEX_B(h2c_pkt, value) \
  391. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
  392. #define PWR_TRK_GET_OFFSET_VALUE_B(h2c_pkt) \
  393. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
  394. #define PWR_TRK_SET_OFFSET_VALUE_B(h2c_pkt, value) \
  395. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
  396. #define PWR_TRK_GET_TSSI_VALUE_B(h2c_pkt) \
  397. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 16, 8)
  398. #define PWR_TRK_SET_TSSI_VALUE_B(h2c_pkt, value) \
  399. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 16, 8, value)
  400. #define PWR_TRK_GET_TX_PWR_INDEX_C(h2c_pkt) \
  401. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 8)
  402. #define PWR_TRK_SET_TX_PWR_INDEX_C(h2c_pkt, value) \
  403. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 8, value)
  404. #define PWR_TRK_GET_OFFSET_VALUE_C(h2c_pkt) \
  405. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 8, 8)
  406. #define PWR_TRK_SET_OFFSET_VALUE_C(h2c_pkt, value) \
  407. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 8, 8, value)
  408. #define PWR_TRK_GET_TSSI_VALUE_C(h2c_pkt) \
  409. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 8)
  410. #define PWR_TRK_SET_TSSI_VALUE_C(h2c_pkt, value) \
  411. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 8, value)
  412. #define PWR_TRK_GET_TX_PWR_INDEX_D(h2c_pkt) \
  413. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
  414. #define PWR_TRK_SET_TX_PWR_INDEX_D(h2c_pkt, value) \
  415. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
  416. #define PWR_TRK_GET_OFFSET_VALUE_D(h2c_pkt) \
  417. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
  418. #define PWR_TRK_SET_OFFSET_VALUE_D(h2c_pkt, value) \
  419. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
  420. #define PWR_TRK_GET_TSSI_VALUE_D(h2c_pkt) \
  421. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 16, 8)
  422. #define PWR_TRK_SET_TSSI_VALUE_D(h2c_pkt, value) \
  423. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 16, 8, value)
  424. #define PSD_GET_START_PSD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 16)
  425. #define PSD_SET_START_PSD(h2c_pkt, value) \
  426. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 16, value)
  427. #define PSD_GET_END_PSD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 16)
  428. #define PSD_SET_END_PSD(h2c_pkt, value) \
  429. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 16, value)
  430. #define PHYDM_INFO_GET_REF_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  431. #define PHYDM_INFO_SET_REF_TYPE(h2c_pkt, value) \
  432. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  433. #define PHYDM_INFO_GET_RF_TYPE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  434. #define PHYDM_INFO_SET_RF_TYPE(h2c_pkt, value) \
  435. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  436. #define PHYDM_INFO_GET_CUT_VER(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  437. #define PHYDM_INFO_SET_CUT_VER(h2c_pkt, value) \
  438. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  439. #define PHYDM_INFO_GET_RX_ANT_STATUS(h2c_pkt) \
  440. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 4)
  441. #define PHYDM_INFO_SET_RX_ANT_STATUS(h2c_pkt, value) \
  442. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 4, value)
  443. #define PHYDM_INFO_GET_TX_ANT_STATUS(h2c_pkt) \
  444. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 28, 4)
  445. #define PHYDM_INFO_SET_TX_ANT_STATUS(h2c_pkt, value) \
  446. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 28, 4, value)
  447. #define FW_SNDING_GET_SU0(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  448. #define FW_SNDING_SET_SU0(h2c_pkt, value) \
  449. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  450. #define FW_SNDING_GET_SU1(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  451. #define FW_SNDING_SET_SU1(h2c_pkt, value) \
  452. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  453. #define FW_SNDING_GET_MU(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  454. #define FW_SNDING_SET_MU(h2c_pkt, value) \
  455. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  456. #define FW_SNDING_GET_PERIOD(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  457. #define FW_SNDING_SET_PERIOD(h2c_pkt, value) \
  458. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  459. #define FW_SNDING_GET_NDPA0_HEAD_PG(h2c_pkt) \
  460. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  461. #define FW_SNDING_SET_NDPA0_HEAD_PG(h2c_pkt, value) \
  462. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  463. #define FW_SNDING_GET_NDPA1_HEAD_PG(h2c_pkt) \
  464. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  465. #define FW_SNDING_SET_NDPA1_HEAD_PG(h2c_pkt, value) \
  466. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  467. #define FW_SNDING_GET_MU_NDPA_HEAD_PG(h2c_pkt) \
  468. LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 0, 8)
  469. #define FW_SNDING_SET_MU_NDPA_HEAD_PG(h2c_pkt, value) \
  470. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 0, 8, value)
  471. #define FW_SNDING_GET_RPT0_HEAD_PG(h2c_pkt) \
  472. LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 8, 8)
  473. #define FW_SNDING_SET_RPT0_HEAD_PG(h2c_pkt, value) \
  474. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 8, 8, value)
  475. #define FW_SNDING_GET_RPT1_HEAD_PG(h2c_pkt) \
  476. LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 16, 8)
  477. #define FW_SNDING_SET_RPT1_HEAD_PG(h2c_pkt, value) \
  478. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 16, 8, value)
  479. #define FW_SNDING_GET_RPT2_HEAD_PG(h2c_pkt) \
  480. LE_BITS_TO_4BYTE(h2c_pkt + 0XC, 24, 8)
  481. #define FW_SNDING_SET_RPT2_HEAD_PG(h2c_pkt, value) \
  482. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0XC, 24, 8, value)
  483. #define FW_FWCTRL_GET_SEQ_NUM(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  484. #define FW_FWCTRL_SET_SEQ_NUM(h2c_pkt, value) \
  485. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  486. #define FW_FWCTRL_GET_MORE_CONTENT(h2c_pkt) \
  487. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 1)
  488. #define FW_FWCTRL_SET_MORE_CONTENT(h2c_pkt, value) \
  489. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 1, value)
  490. #define FW_FWCTRL_GET_CONTENT_IDX(h2c_pkt) \
  491. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 9, 7)
  492. #define FW_FWCTRL_SET_CONTENT_IDX(h2c_pkt, value) \
  493. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 9, 7, value)
  494. #define FW_FWCTRL_GET_CLASS_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  495. #define FW_FWCTRL_SET_CLASS_ID(h2c_pkt, value) \
  496. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  497. #define FW_FWCTRL_GET_LENGTH(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  498. #define FW_FWCTRL_SET_LENGTH(h2c_pkt, value) \
  499. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  500. #define FW_FWCTRL_GET_CONTENT(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 32)
  501. #define FW_FWCTRL_SET_CONTENT(h2c_pkt, value) \
  502. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 32, value)
  503. #define P2PPS_GET_OFFLOAD_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 1)
  504. #define P2PPS_SET_OFFLOAD_EN(h2c_pkt, value) \
  505. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 1, value)
  506. #define P2PPS_GET_ROLE(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 1, 1)
  507. #define P2PPS_SET_ROLE(h2c_pkt, value) \
  508. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 1, 1, value)
  509. #define P2PPS_GET_CTWINDOW_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  510. #define P2PPS_SET_CTWINDOW_EN(h2c_pkt, value) \
  511. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  512. #define P2PPS_GET_NOA_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 3, 1)
  513. #define P2PPS_SET_NOA_EN(h2c_pkt, value) \
  514. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 3, 1, value)
  515. #define P2PPS_GET_NOA_SEL(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 4, 1)
  516. #define P2PPS_SET_NOA_SEL(h2c_pkt, value) \
  517. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 4, 1, value)
  518. #define P2PPS_GET_ALLSTASLEEP(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 5, 1)
  519. #define P2PPS_SET_ALLSTASLEEP(h2c_pkt, value) \
  520. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 5, 1, value)
  521. #define P2PPS_GET_DISCOVERY(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 6, 1)
  522. #define P2PPS_SET_DISCOVERY(h2c_pkt, value) \
  523. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 6, 1, value)
  524. #define P2PPS_GET_DISABLE_CLOSERF(h2c_pkt) \
  525. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 7, 1)
  526. #define P2PPS_SET_DISABLE_CLOSERF(h2c_pkt, value) \
  527. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 7, 1, value)
  528. #define P2PPS_GET_P2P_PORT_ID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  529. #define P2PPS_SET_P2P_PORT_ID(h2c_pkt, value) \
  530. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  531. #define P2PPS_GET_P2P_GROUP(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  532. #define P2PPS_SET_P2P_GROUP(h2c_pkt, value) \
  533. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  534. #define P2PPS_GET_P2P_MACID(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  535. #define P2PPS_SET_P2P_MACID(h2c_pkt, value) \
  536. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  537. #define P2PPS_GET_CTWINDOW_LENGTH(h2c_pkt) \
  538. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
  539. #define P2PPS_SET_CTWINDOW_LENGTH(h2c_pkt, value) \
  540. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
  541. #define P2PPS_GET_NOA_DURATION_PARA(h2c_pkt) \
  542. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 32)
  543. #define P2PPS_SET_NOA_DURATION_PARA(h2c_pkt, value) \
  544. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 32, value)
  545. #define P2PPS_GET_NOA_INTERVAL_PARA(h2c_pkt) \
  546. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 32)
  547. #define P2PPS_SET_NOA_INTERVAL_PARA(h2c_pkt, value) \
  548. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 32, value)
  549. #define P2PPS_GET_NOA_START_TIME_PARA(h2c_pkt) \
  550. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 32)
  551. #define P2PPS_SET_NOA_START_TIME_PARA(h2c_pkt, value) \
  552. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 32, value)
  553. #define P2PPS_GET_NOA_COUNT_PARA(h2c_pkt) \
  554. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 32)
  555. #define P2PPS_SET_NOA_COUNT_PARA(h2c_pkt, value) \
  556. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 32, value)
  557. #define BT_COEX_GET_DATA_START(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  558. #define BT_COEX_SET_DATA_START(h2c_pkt, value) \
  559. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  560. #define NAN_CTRL_GET_NAN_EN(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 2)
  561. #define NAN_CTRL_SET_NAN_EN(h2c_pkt, value) \
  562. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 2, value)
  563. #define NAN_CTRL_GET_WARMUP_TIMER_FLAG(h2c_pkt) \
  564. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 2, 1)
  565. #define NAN_CTRL_SET_WARMUP_TIMER_FLAG(h2c_pkt, value) \
  566. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 2, 1, value)
  567. #define NAN_CTRL_GET_SUPPORT_BAND(h2c_pkt) \
  568. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 2)
  569. #define NAN_CTRL_SET_SUPPORT_BAND(h2c_pkt, value) \
  570. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 2, value)
  571. #define NAN_CTRL_GET_DISABLE_2G_DISC_BCN(h2c_pkt) \
  572. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 10, 1)
  573. #define NAN_CTRL_SET_DISABLE_2G_DISC_BCN(h2c_pkt, value) \
  574. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 10, 1, value)
  575. #define NAN_CTRL_GET_DISABLE_5G_DISC_BCN(h2c_pkt) \
  576. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 11, 1)
  577. #define NAN_CTRL_SET_DISABLE_5G_DISC_BCN(h2c_pkt, value) \
  578. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 11, 1, value)
  579. #define NAN_CTRL_GET_BCN_RSVD_PAGE_OFFSET(h2c_pkt) \
  580. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 16, 8)
  581. #define NAN_CTRL_SET_BCN_RSVD_PAGE_OFFSET(h2c_pkt, value) \
  582. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 16, 8, value)
  583. #define NAN_CTRL_GET_CHANNEL_2G(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 24, 8)
  584. #define NAN_CTRL_SET_CHANNEL_2G(h2c_pkt, value) \
  585. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 24, 8, value)
  586. #define NAN_CTRL_GET_CHANNEL_5G(h2c_pkt) LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 8)
  587. #define NAN_CTRL_SET_CHANNEL_5G(h2c_pkt, value) \
  588. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 8, value)
  589. #define NAN_CTRL_GET_MASTERPREFERENCE_VALUE(h2c_pkt) \
  590. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 8, 8)
  591. #define NAN_CTRL_SET_MASTERPREFERENCE_VALUE(h2c_pkt, value) \
  592. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 8, 8, value)
  593. #define NAN_CTRL_GET_RANDOMFACTOR_VALUE(h2c_pkt) \
  594. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 8)
  595. #define NAN_CTRL_SET_RANDOMFACTOR_VALUE(h2c_pkt, value) \
  596. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 8, value)
  597. #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_0(h2c_pkt) \
  598. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  599. #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_0(h2c_pkt, value) \
  600. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  601. #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_0(h2c_pkt) \
  602. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  603. #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_0(h2c_pkt, value) \
  604. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  605. #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_0(h2c_pkt) \
  606. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 16)
  607. #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_0(h2c_pkt, value) \
  608. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 16, value)
  609. #define NAN_CHANNEL_PLAN_0_GET_DURATION_0(h2c_pkt) \
  610. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 16)
  611. #define NAN_CHANNEL_PLAN_0_SET_DURATION_0(h2c_pkt, value) \
  612. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 16, value)
  613. #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_1(h2c_pkt) \
  614. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
  615. #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_1(h2c_pkt, value) \
  616. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
  617. #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_1(h2c_pkt) \
  618. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
  619. #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_1(h2c_pkt, value) \
  620. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
  621. #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_1(h2c_pkt) \
  622. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 16)
  623. #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_1(h2c_pkt, value) \
  624. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 16, value)
  625. #define NAN_CHANNEL_PLAN_0_GET_DURATION_1(h2c_pkt) \
  626. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 16)
  627. #define NAN_CHANNEL_PLAN_0_SET_DURATION_1(h2c_pkt, value) \
  628. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 16, value)
  629. #define NAN_CHANNEL_PLAN_0_GET_CHANNEL_NUMBER_2(h2c_pkt) \
  630. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
  631. #define NAN_CHANNEL_PLAN_0_SET_CHANNEL_NUMBER_2(h2c_pkt, value) \
  632. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
  633. #define NAN_CHANNEL_PLAN_0_GET_UNPAUSE_MACID_2(h2c_pkt) \
  634. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
  635. #define NAN_CHANNEL_PLAN_0_SET_UNPAUSE_MACID_2(h2c_pkt, value) \
  636. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
  637. #define NAN_CHANNEL_PLAN_0_GET_START_TIME_SLOT_2(h2c_pkt) \
  638. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 16)
  639. #define NAN_CHANNEL_PLAN_0_SET_START_TIME_SLOT_2(h2c_pkt, value) \
  640. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 16, value)
  641. #define NAN_CHANNEL_PLAN_0_GET_DURATION_2(h2c_pkt) \
  642. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 16, 16)
  643. #define NAN_CHANNEL_PLAN_0_SET_DURATION_2(h2c_pkt, value) \
  644. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 16, 16, value)
  645. #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_3(h2c_pkt) \
  646. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 0, 8)
  647. #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_3(h2c_pkt, value) \
  648. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 0, 8, value)
  649. #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_3(h2c_pkt) \
  650. LE_BITS_TO_4BYTE(h2c_pkt + 0X08, 8, 8)
  651. #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_3(h2c_pkt, value) \
  652. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X08, 8, 8, value)
  653. #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_3(h2c_pkt) \
  654. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 0, 16)
  655. #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_3(h2c_pkt, value) \
  656. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 0, 16, value)
  657. #define NAN_CHANNEL_PLAN_1_GET_DURATION_3(h2c_pkt) \
  658. LE_BITS_TO_4BYTE(h2c_pkt + 0X0C, 16, 16)
  659. #define NAN_CHANNEL_PLAN_1_SET_DURATION_3(h2c_pkt, value) \
  660. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X0C, 16, 16, value)
  661. #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_4(h2c_pkt) \
  662. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 0, 8)
  663. #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_4(h2c_pkt, value) \
  664. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 0, 8, value)
  665. #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_4(h2c_pkt) \
  666. LE_BITS_TO_4BYTE(h2c_pkt + 0X10, 8, 8)
  667. #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_4(h2c_pkt, value) \
  668. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X10, 8, 8, value)
  669. #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_4(h2c_pkt) \
  670. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 0, 16)
  671. #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_4(h2c_pkt, value) \
  672. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 0, 16, value)
  673. #define NAN_CHANNEL_PLAN_1_GET_DURATION_4(h2c_pkt) \
  674. LE_BITS_TO_4BYTE(h2c_pkt + 0X14, 16, 16)
  675. #define NAN_CHANNEL_PLAN_1_SET_DURATION_4(h2c_pkt, value) \
  676. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X14, 16, 16, value)
  677. #define NAN_CHANNEL_PLAN_1_GET_CHANNEL_NUMBER_5(h2c_pkt) \
  678. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 0, 8)
  679. #define NAN_CHANNEL_PLAN_1_SET_CHANNEL_NUMBER_5(h2c_pkt, value) \
  680. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 0, 8, value)
  681. #define NAN_CHANNEL_PLAN_1_GET_UNPAUSE_MACID_5(h2c_pkt) \
  682. LE_BITS_TO_4BYTE(h2c_pkt + 0X18, 8, 8)
  683. #define NAN_CHANNEL_PLAN_1_SET_UNPAUSE_MACID_5(h2c_pkt, value) \
  684. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X18, 8, 8, value)
  685. #define NAN_CHANNEL_PLAN_1_GET_START_TIME_SLOT_5(h2c_pkt) \
  686. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 0, 16)
  687. #define NAN_CHANNEL_PLAN_1_SET_START_TIME_SLOT_5(h2c_pkt, value) \
  688. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 0, 16, value)
  689. #define NAN_CHANNEL_PLAN_1_GET_DURATION_5(h2c_pkt) \
  690. LE_BITS_TO_4BYTE(h2c_pkt + 0X1C, 16, 16)
  691. #define NAN_CHANNEL_PLAN_1_SET_DURATION_5(h2c_pkt, value) \
  692. SET_BITS_TO_LE_4BYTE(h2c_pkt + 0X1C, 16, 16, value)
  693. #endif