halmac_fw_offload_c2h_nic.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  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_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_
  16. #define _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_
  17. #define C2H_SUB_CMD_ID_C2H_DBG 0X00
  18. #define C2H_SUB_CMD_ID_BT_COEX_INFO 0X02
  19. #define C2H_SUB_CMD_ID_SCAN_STATUS_RPT 0X03
  20. #define C2H_SUB_CMD_ID_H2C_ACK_HDR 0X01
  21. #define C2H_SUB_CMD_ID_CFG_PARAM_ACK 0X01
  22. #define C2H_SUB_CMD_ID_BT_COEX_ACK 0X01
  23. #define C2H_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0X01
  24. #define C2H_SUB_CMD_ID_UPDATE_PKT_ACK 0X01
  25. #define C2H_SUB_CMD_ID_UPDATE_DATAPACK_ACK 0X01
  26. #define C2H_SUB_CMD_ID_RUN_DATAPACK_ACK 0X01
  27. #define C2H_SUB_CMD_ID_CH_SWITCH_ACK 0X01
  28. #define C2H_SUB_CMD_ID_IQK_ACK 0X01
  29. #define C2H_SUB_CMD_ID_PWR_TRK_ACK 0X01
  30. #define C2H_SUB_CMD_ID_PSD_ACK 0X01
  31. #define C2H_SUB_CMD_ID_FW_MEM_DUMP_ACK 0X01
  32. #define C2H_SUB_CMD_ID_PSD_DATA 0X04
  33. #define C2H_SUB_CMD_ID_EFUSE_DATA 0X05
  34. #define C2H_SUB_CMD_ID_IQK_DATA 0X06
  35. #define C2H_SUB_CMD_ID_C2H_PKT_FTM_DBG 0X07
  36. #define C2H_SUB_CMD_ID_C2H_PKT_FTM_2_DBG 0X08
  37. #define C2H_SUB_CMD_ID_C2H_PKT_FTM_3_DBG 0X09
  38. #define C2H_SUB_CMD_ID_C2H_PKT_FTM_4_DBG 0X0A
  39. #define C2H_SUB_CMD_ID_FTMACKRPT_HDL_DBG 0X0B
  40. #define C2H_SUB_CMD_ID_FTMC2H_RPT 0X0C
  41. #define C2H_SUB_CMD_ID_DRVFTMC2H_RPT 0X0D
  42. #define C2H_SUB_CMD_ID_C2H_PKT_FTM_5_DBG 0X0E
  43. #define C2H_SUB_CMD_ID_CCX_RPT 0X0F
  44. #define C2H_SUB_CMD_ID_C2H_PKT_NAN_RPT 0X10
  45. #define C2H_SUB_CMD_ID_C2H_PKT_ATM_RPT 0X11
  46. #define C2H_SUB_CMD_ID_C2H_PKT_FTMSESSION_END 0X1C
  47. #define C2H_SUB_CMD_ID_C2H_PKT_DETECT_THERMAL 0X1D
  48. #define C2H_SUB_CMD_ID_FW_DBG_MSG 0XFF
  49. #define C2H_SUB_CMD_ID_FW_SNDING_ACK 0X01
  50. #define C2H_SUB_CMD_ID_FW_FWCTRL_RPT 0X1F
  51. #define C2H_SUB_CMD_ID_H2C_LOOPBACK_ACK 0X20
  52. #define C2H_SUB_CMD_ID_FWCMD_LOOPBACK_ACK 0X21
  53. #define C2H_SUB_CMD_ID_FW_TBTT_RPT 0X23
  54. #define H2C_SUB_CMD_ID_CFG_PARAM_ACK SUB_CMD_ID_CFG_PARAM
  55. #define H2C_SUB_CMD_ID_BT_COEX_ACK SUB_CMD_ID_BT_COEX
  56. #define H2C_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK SUB_CMD_ID_DUMP_PHYSICAL_EFUSE
  57. #define H2C_SUB_CMD_ID_UPDATE_PKT_ACK SUB_CMD_ID_UPDATE_PKT
  58. #define H2C_SUB_CMD_ID_UPDATE_DATAPACK_ACK SUB_CMD_ID_UPDATE_DATAPACK
  59. #define H2C_SUB_CMD_ID_RUN_DATAPACK_ACK SUB_CMD_ID_RUN_DATAPACK
  60. #define H2C_SUB_CMD_ID_CH_SWITCH_ACK SUB_CMD_ID_CH_SWITCH
  61. #define H2C_SUB_CMD_ID_IQK_ACK SUB_CMD_ID_IQK
  62. #define H2C_SUB_CMD_ID_PWR_TRK_ACK SUB_CMD_ID_PWR_TRK
  63. #define H2C_SUB_CMD_ID_PSD_ACK SUB_CMD_ID_PSD
  64. #define H2C_SUB_CMD_ID_FW_MEM_DUMP_ACK SUB_CMD_ID_FW_MEM_DUMP
  65. #define H2C_SUB_CMD_ID_CCX_RPT SUB_CMD_ID_CCX_RPT
  66. #define H2C_SUB_CMD_ID_FW_DBG_MSG SUB_CMD_ID_FW_DBG_MSG
  67. #define H2C_SUB_CMD_ID_FW_SNDING_ACK SUB_CMD_ID_FW_SNDING
  68. #define H2C_SUB_CMD_ID_FW_FWCTRL_RPT SUB_CMD_ID_FW_FWCTRL_RPT
  69. #define H2C_SUB_CMD_ID_H2C_LOOPBACK_ACK SUB_CMD_ID_H2C_LOOPBACK
  70. #define H2C_SUB_CMD_ID_FWCMD_LOOPBACK_ACK SUB_CMD_ID_FWCMD_LOOPBACK
  71. #define H2C_CMD_ID_CFG_PARAM_ACK 0XFF
  72. #define H2C_CMD_ID_BT_COEX_ACK 0XFF
  73. #define H2C_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0XFF
  74. #define H2C_CMD_ID_UPDATE_PKT_ACK 0XFF
  75. #define H2C_CMD_ID_UPDATE_DATAPACK_ACK 0XFF
  76. #define H2C_CMD_ID_RUN_DATAPACK_ACK 0XFF
  77. #define H2C_CMD_ID_CH_SWITCH_ACK 0XFF
  78. #define H2C_CMD_ID_IQK_ACK 0XFF
  79. #define H2C_CMD_ID_PWR_TRK_ACK 0XFF
  80. #define H2C_CMD_ID_PSD_ACK 0XFF
  81. #define H2C_CMD_ID_FW_MEM_DUMP_ACK 0XFF
  82. #define H2C_CMD_ID_CCX_RPT 0XFF
  83. #define H2C_CMD_ID_FW_DBG_MSG 0XFF
  84. #define H2C_CMD_ID_FW_SNDING_ACK 0XFF
  85. #define H2C_CMD_ID_FW_FWCTRL_RPT 0XFF
  86. #define H2C_CMD_ID_H2C_LOOPBACK_ACK 0XFF
  87. #define H2C_CMD_ID_FWCMD_LOOPBACK_ACK 0XFF
  88. #define C2H_HDR_GET_CMD_ID(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 0, 8)
  89. #define C2H_HDR_SET_CMD_ID(c2h_pkt, value) \
  90. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 0, 8, value)
  91. #define C2H_HDR_GET_SEQ(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 8, 8)
  92. #define C2H_HDR_SET_SEQ(c2h_pkt, value) \
  93. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 8, 8, value)
  94. #define C2H_HDR_GET_C2H_SUB_CMD_ID(c2h_pkt) \
  95. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 16, 8)
  96. #define C2H_HDR_SET_C2H_SUB_CMD_ID(c2h_pkt, value) \
  97. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 16, 8, value)
  98. #define C2H_HDR_GET_LEN(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 24, 8)
  99. #define C2H_HDR_SET_LEN(c2h_pkt, value) \
  100. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 24, 8, value)
  101. #define C2H_DBG_GET_DBG_MSG(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  102. #define C2H_DBG_SET_DBG_MSG(c2h_pkt, value) \
  103. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  104. #define BT_COEX_INFO_GET_DATA_START(c2h_pkt) \
  105. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  106. #define BT_COEX_INFO_SET_DATA_START(c2h_pkt, value) \
  107. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  108. #define SCAN_STATUS_RPT_GET_H2C_RETURN_CODE(c2h_pkt) \
  109. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  110. #define SCAN_STATUS_RPT_SET_H2C_RETURN_CODE(c2h_pkt, value) \
  111. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  112. #define SCAN_STATUS_RPT_GET_H2C_SEQ(c2h_pkt) \
  113. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  114. #define SCAN_STATUS_RPT_SET_H2C_SEQ(c2h_pkt, value) \
  115. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  116. #define H2C_ACK_HDR_GET_H2C_RETURN_CODE(c2h_pkt) \
  117. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  118. #define H2C_ACK_HDR_SET_H2C_RETURN_CODE(c2h_pkt, value) \
  119. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  120. #define H2C_ACK_HDR_GET_H2C_CMD_ID(c2h_pkt) \
  121. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  122. #define H2C_ACK_HDR_SET_H2C_CMD_ID(c2h_pkt, value) \
  123. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  124. #define H2C_ACK_HDR_GET_H2C_SUB_CMD_ID(c2h_pkt) \
  125. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  126. #define H2C_ACK_HDR_SET_H2C_SUB_CMD_ID(c2h_pkt, value) \
  127. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  128. #define H2C_ACK_HDR_GET_H2C_SEQ(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X08, 0, 16)
  129. #define H2C_ACK_HDR_SET_H2C_SEQ(c2h_pkt, value) \
  130. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X08, 0, 16, value)
  131. #define CFG_PARAM_ACK_GET_OFFSET_ACCUMULATION(c2h_pkt) \
  132. LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 0, 32)
  133. #define CFG_PARAM_ACK_SET_OFFSET_ACCUMULATION(c2h_pkt, value) \
  134. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 0, 32, value)
  135. #define CFG_PARAM_ACK_GET_VALUE_ACCUMULATION(c2h_pkt) \
  136. LE_BITS_TO_4BYTE(c2h_pkt + 0X10, 0, 32)
  137. #define CFG_PARAM_ACK_SET_VALUE_ACCUMULATION(c2h_pkt, value) \
  138. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X10, 0, 32, value)
  139. #define BT_COEX_ACK_GET_DATA_START(c2h_pkt) \
  140. LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 0, 8)
  141. #define BT_COEX_ACK_SET_DATA_START(c2h_pkt, value) \
  142. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 0, 8, value)
  143. #define PSD_DATA_GET_SEGMENT_ID(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 7)
  144. #define PSD_DATA_SET_SEGMENT_ID(c2h_pkt, value) \
  145. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 7, value)
  146. #define PSD_DATA_GET_END_SEGMENT(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 7, 1)
  147. #define PSD_DATA_SET_END_SEGMENT(c2h_pkt, value) \
  148. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 7, 1, value)
  149. #define PSD_DATA_GET_SEGMENT_SIZE(c2h_pkt) \
  150. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  151. #define PSD_DATA_SET_SEGMENT_SIZE(c2h_pkt, value) \
  152. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  153. #define PSD_DATA_GET_TOTAL_SIZE(c2h_pkt) \
  154. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  155. #define PSD_DATA_SET_TOTAL_SIZE(c2h_pkt, value) \
  156. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  157. #define PSD_DATA_GET_H2C_SEQ(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 16)
  158. #define PSD_DATA_SET_H2C_SEQ(c2h_pkt, value) \
  159. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 16, value)
  160. #define PSD_DATA_GET_DATA_START(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  161. #define PSD_DATA_SET_DATA_START(c2h_pkt, value) \
  162. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  163. #define EFUSE_DATA_GET_SEGMENT_ID(c2h_pkt) \
  164. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 7)
  165. #define EFUSE_DATA_SET_SEGMENT_ID(c2h_pkt, value) \
  166. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 7, value)
  167. #define EFUSE_DATA_GET_END_SEGMENT(c2h_pkt) \
  168. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 7, 1)
  169. #define EFUSE_DATA_SET_END_SEGMENT(c2h_pkt, value) \
  170. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 7, 1, value)
  171. #define EFUSE_DATA_GET_SEGMENT_SIZE(c2h_pkt) \
  172. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  173. #define EFUSE_DATA_SET_SEGMENT_SIZE(c2h_pkt, value) \
  174. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  175. #define EFUSE_DATA_GET_TOTAL_SIZE(c2h_pkt) \
  176. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  177. #define EFUSE_DATA_SET_TOTAL_SIZE(c2h_pkt, value) \
  178. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  179. #define EFUSE_DATA_GET_H2C_SEQ(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 16)
  180. #define EFUSE_DATA_SET_H2C_SEQ(c2h_pkt, value) \
  181. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 16, value)
  182. #define EFUSE_DATA_GET_DATA_START(c2h_pkt) \
  183. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  184. #define EFUSE_DATA_SET_DATA_START(c2h_pkt, value) \
  185. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  186. #define IQK_DATA_GET_SEGMENT_ID(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 7)
  187. #define IQK_DATA_SET_SEGMENT_ID(c2h_pkt, value) \
  188. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 7, value)
  189. #define IQK_DATA_GET_END_SEGMENT(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 7, 1)
  190. #define IQK_DATA_SET_END_SEGMENT(c2h_pkt, value) \
  191. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 7, 1, value)
  192. #define IQK_DATA_GET_SEGMENT_SIZE(c2h_pkt) \
  193. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  194. #define IQK_DATA_SET_SEGMENT_SIZE(c2h_pkt, value) \
  195. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  196. #define IQK_DATA_GET_TOTAL_SIZE(c2h_pkt) \
  197. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  198. #define IQK_DATA_SET_TOTAL_SIZE(c2h_pkt, value) \
  199. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  200. #define IQK_DATA_GET_H2C_SEQ(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 16)
  201. #define IQK_DATA_SET_H2C_SEQ(c2h_pkt, value) \
  202. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 16, value)
  203. #define IQK_DATA_GET_DATA_START(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  204. #define IQK_DATA_SET_DATA_START(c2h_pkt, value) \
  205. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  206. #define CCX_RPT_GET_POLLUTED(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 0, 1)
  207. #define CCX_RPT_SET_POLLUTED(c2h_pkt, value) \
  208. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 0, 1, value)
  209. #define CCX_RPT_GET_RPT_SEL(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 5, 3)
  210. #define CCX_RPT_SET_RPT_SEL(c2h_pkt, value) \
  211. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 5, 3, value)
  212. #define CCX_RPT_GET_QSEL(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 8, 5)
  213. #define CCX_RPT_SET_QSEL(c2h_pkt, value) \
  214. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 8, 5, value)
  215. #define CCX_RPT_GET_MISSED_RPT_NUM(c2h_pkt) \
  216. LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 13, 3)
  217. #define CCX_RPT_SET_MISSED_RPT_NUM(c2h_pkt, value) \
  218. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 13, 3, value)
  219. #define CCX_RPT_GET_MACID(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 16, 7)
  220. #define CCX_RPT_SET_MACID(c2h_pkt, value) \
  221. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 16, 7, value)
  222. #define CCX_RPT_GET_INITIAL_DATA_RATE(c2h_pkt) \
  223. LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 24, 7)
  224. #define CCX_RPT_SET_INITIAL_DATA_RATE(c2h_pkt, value) \
  225. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 24, 7, value)
  226. #define CCX_RPT_GET_INITIAL_SGI(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X4, 31, 1)
  227. #define CCX_RPT_SET_INITIAL_SGI(c2h_pkt, value) \
  228. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X4, 31, 1, value)
  229. #define CCX_RPT_GET_QUEUE_TIME(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 16)
  230. #define CCX_RPT_SET_QUEUE_TIME(c2h_pkt, value) \
  231. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 16, value)
  232. #define CCX_RPT_GET_SW_DEFINE_BYTE0(c2h_pkt) \
  233. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  234. #define CCX_RPT_SET_SW_DEFINE_BYTE0(c2h_pkt, value) \
  235. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  236. #define CCX_RPT_GET_RTS_RETRY_COUNT(c2h_pkt) \
  237. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 24, 4)
  238. #define CCX_RPT_SET_RTS_RETRY_COUNT(c2h_pkt, value) \
  239. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 24, 4, value)
  240. #define CCX_RPT_GET_BMC(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 29, 1)
  241. #define CCX_RPT_SET_BMC(c2h_pkt, value) \
  242. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 29, 1, value)
  243. #define CCX_RPT_GET_TX_STATE(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 30, 2)
  244. #define CCX_RPT_SET_TX_STATE(c2h_pkt, value) \
  245. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 30, 2, value)
  246. #define CCX_RPT_GET_DATA_RETRY_COUNT(c2h_pkt) \
  247. LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 0, 6)
  248. #define CCX_RPT_SET_DATA_RETRY_COUNT(c2h_pkt, value) \
  249. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 0, 6, value)
  250. #define CCX_RPT_GET_FINAL_DATA_RATE(c2h_pkt) \
  251. LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 8, 7)
  252. #define CCX_RPT_SET_FINAL_DATA_RATE(c2h_pkt, value) \
  253. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 8, 7, value)
  254. #define CCX_RPT_GET_FINAL_SGI(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 15, 1)
  255. #define CCX_RPT_SET_FINAL_SGI(c2h_pkt, value) \
  256. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 15, 1, value)
  257. #define CCX_RPT_GET_RF_CH_NUM(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 16, 10)
  258. #define CCX_RPT_SET_RF_CH_NUM(c2h_pkt, value) \
  259. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 16, 10, value)
  260. #define CCX_RPT_GET_SC(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 26, 4)
  261. #define CCX_RPT_SET_SC(c2h_pkt, value) \
  262. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 26, 4, value)
  263. #define CCX_RPT_GET_BW(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0XC, 30, 2)
  264. #define CCX_RPT_SET_BW(c2h_pkt, value) \
  265. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0XC, 30, 2, value)
  266. #define FW_DBG_MSG_GET_CMD_ID(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 0, 8)
  267. #define FW_DBG_MSG_SET_CMD_ID(c2h_pkt, value) \
  268. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 0, 8, value)
  269. #define FW_DBG_MSG_GET_C2H_SUB_CMD_ID(c2h_pkt) \
  270. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 16, 8)
  271. #define FW_DBG_MSG_SET_C2H_SUB_CMD_ID(c2h_pkt, value) \
  272. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 16, 8, value)
  273. #define FW_DBG_MSG_GET_FULL(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 24, 1)
  274. #define FW_DBG_MSG_SET_FULL(c2h_pkt, value) \
  275. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 24, 1, value)
  276. #define FW_DBG_MSG_GET_OWN(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 31, 1)
  277. #define FW_DBG_MSG_SET_OWN(c2h_pkt, value) \
  278. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 31, 1, value)
  279. #define FW_FWCTRL_RPT_GET_EVT_TYPE(c2h_pkt) \
  280. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 0, 8)
  281. #define FW_FWCTRL_RPT_SET_EVT_TYPE(c2h_pkt, value) \
  282. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 0, 8, value)
  283. #define FW_FWCTRL_RPT_GET_LENGTH(c2h_pkt) LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 8, 8)
  284. #define FW_FWCTRL_RPT_SET_LENGTH(c2h_pkt, value) \
  285. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 8, 8, value)
  286. #define FW_FWCTRL_RPT_GET_SEQ_NUM(c2h_pkt) \
  287. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 16, 8)
  288. #define FW_FWCTRL_RPT_SET_SEQ_NUM(c2h_pkt, value) \
  289. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 16, 8, value)
  290. #define FW_FWCTRL_RPT_GET_IS_ACK(c2h_pkt) \
  291. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 24, 1)
  292. #define FW_FWCTRL_RPT_SET_IS_ACK(c2h_pkt, value) \
  293. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 24, 1, value)
  294. #define FW_FWCTRL_RPT_GET_MORE_CONTENT(c2h_pkt) \
  295. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 25, 1)
  296. #define FW_FWCTRL_RPT_SET_MORE_CONTENT(c2h_pkt, value) \
  297. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 25, 1, value)
  298. #define FW_FWCTRL_RPT_GET_CONTENT_IDX(c2h_pkt) \
  299. LE_BITS_TO_4BYTE(c2h_pkt + 0X00, 26, 6)
  300. #define FW_FWCTRL_RPT_SET_CONTENT_IDX(c2h_pkt, value) \
  301. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X00, 26, 6, value)
  302. #define FW_FWCTRL_RPT_GET_CLASS_ID(c2h_pkt) \
  303. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  304. #define FW_FWCTRL_RPT_SET_CLASS_ID(c2h_pkt, value) \
  305. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  306. #define FW_FWCTRL_RPT_GET_CONTENT(c2h_pkt) \
  307. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 16)
  308. #define FW_FWCTRL_RPT_SET_CONTENT(c2h_pkt, value) \
  309. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 16, value)
  310. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_0(c2h_pkt) \
  311. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  312. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_0(c2h_pkt, value) \
  313. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  314. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_1(c2h_pkt) \
  315. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  316. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_1(c2h_pkt, value) \
  317. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  318. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_2(c2h_pkt) \
  319. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 8)
  320. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_2(c2h_pkt, value) \
  321. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 8, value)
  322. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_3(c2h_pkt) \
  323. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 24, 8)
  324. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_3(c2h_pkt, value) \
  325. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 24, 8, value)
  326. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_4(c2h_pkt) \
  327. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 8)
  328. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_4(c2h_pkt, value) \
  329. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 8, value)
  330. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_5(c2h_pkt) \
  331. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 8, 8)
  332. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_5(c2h_pkt, value) \
  333. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 8, 8, value)
  334. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_6(c2h_pkt) \
  335. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  336. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_6(c2h_pkt, value) \
  337. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  338. #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_7(c2h_pkt) \
  339. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 24, 8)
  340. #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_7(c2h_pkt, value) \
  341. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 24, 8, value)
  342. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_0(c2h_pkt) \
  343. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  344. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_0(c2h_pkt, value) \
  345. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  346. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_1(c2h_pkt) \
  347. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 8, 8)
  348. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_1(c2h_pkt, value) \
  349. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 8, 8, value)
  350. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_2(c2h_pkt) \
  351. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 16, 8)
  352. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_2(c2h_pkt, value) \
  353. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 16, 8, value)
  354. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_3(c2h_pkt) \
  355. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 24, 8)
  356. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_3(c2h_pkt, value) \
  357. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 24, 8, value)
  358. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_4(c2h_pkt) \
  359. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 0, 8)
  360. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_4(c2h_pkt, value) \
  361. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 0, 8, value)
  362. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_5(c2h_pkt) \
  363. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 8, 8)
  364. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_5(c2h_pkt, value) \
  365. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 8, 8, value)
  366. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_6(c2h_pkt) \
  367. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 16, 8)
  368. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_6(c2h_pkt, value) \
  369. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 16, 8, value)
  370. #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_7(c2h_pkt) \
  371. LE_BITS_TO_4BYTE(c2h_pkt + 0X8, 24, 8)
  372. #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_7(c2h_pkt, value) \
  373. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X8, 24, 8, value)
  374. #define FW_TBTT_RPT_GET_PORT_NUMBER(c2h_pkt) \
  375. LE_BITS_TO_4BYTE(c2h_pkt + 0X04, 0, 8)
  376. #define FW_TBTT_RPT_SET_PORT_NUMBER(c2h_pkt, value) \
  377. SET_BITS_TO_LE_4BYTE(c2h_pkt + 0X04, 0, 8, value)
  378. #endif