• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * Copyright(c) 2016 - 2019 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 
16 #ifndef _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_AP_H_
17 #define _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_AP_H_
18 #define C2H_SUB_CMD_ID_C2H_DBG 0X00
19 #define C2H_SUB_CMD_ID_BT_COEX_INFO 0X02
20 #define C2H_SUB_CMD_ID_SCAN_STATUS_RPT 0X03
21 #define C2H_SUB_CMD_ID_H2C_ACK_HDR 0X01
22 #define C2H_SUB_CMD_ID_CFG_PARAM_ACK 0X01
23 #define C2H_SUB_CMD_ID_CH_SWITCH_ACK 0X01
24 #define C2H_SUB_CMD_ID_BT_COEX_ACK 0X01
25 #define C2H_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0X01
26 #define C2H_SUB_CMD_ID_UPDATE_PKT_ACK 0X01
27 #define C2H_SUB_CMD_ID_SEND_SCAN_PKT_ACK 0X01
28 #define C2H_SUB_CMD_ID_DROP_SCAN_PKT_ACK 0X01
29 #define C2H_SUB_CMD_ID_UPDATE_DATAPACK_ACK 0X01
30 #define C2H_SUB_CMD_ID_RUN_DATAPACK_ACK 0X01
31 #define C2H_SUB_CMD_ID_IQK_ACK 0X01
32 #define C2H_SUB_CMD_ID_PWR_TRK_ACK 0X01
33 #define C2H_SUB_CMD_ID_PSD_ACK 0X01
34 #define C2H_SUB_CMD_ID_FW_MEM_DUMP_ACK 0X01
35 #define C2H_SUB_CMD_ID_ACT_SCHEDULE_REQ_ACK 0X1
36 #define C2H_SUB_CMD_ID_NAN_FUNC_CTRL_ACK 0X1
37 #define C2H_SUB_CMD_ID_DPK_ACK 0X1
38 #define C2H_SUB_CMD_ID_PSD_DATA 0X04
39 #define C2H_SUB_CMD_ID_EFUSE_DATA 0X05
40 #define C2H_SUB_CMD_ID_IQK_DATA 0X06
41 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_DBG 0X07
42 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_2_DBG 0X08
43 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_3_DBG 0X09
44 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_4_DBG 0X0A
45 #define C2H_SUB_CMD_ID_FTMACKRPT_HDL_DBG 0X0B
46 #define C2H_SUB_CMD_ID_FTMC2H_RPT 0X0C
47 #define C2H_SUB_CMD_ID_DRVFTMC2H_RPT 0X0D
48 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_5_DBG 0X0E
49 #define C2H_SUB_CMD_ID_CCX_RPT 0X0F
50 #define C2H_SUB_CMD_ID_C2H_PKT_NAN_RPT 0X10
51 #define C2H_SUB_CMD_ID_C2H_PKT_ATM_RPT 0X11
52 #define C2H_SUB_CMD_ID_C2H_PKT_SCC_CSA_RPT 0X1A
53 #define C2H_SUB_CMD_ID_C2H_PKT_FW_STATUS_NOTIFY 0X1B
54 #define C2H_SUB_CMD_ID_C2H_PKT_FTMSESSION_END 0X1C
55 #define C2H_SUB_CMD_ID_C2H_PKT_DETECT_THERMAL 0X1D
56 #define C2H_SUB_CMD_ID_FW_DBG_MSG 0XFF
57 #define C2H_SUB_CMD_ID_FW_SNDING_ACK 0X01
58 #define C2H_SUB_CMD_ID_FW_FWCTRL_RPT 0X1F
59 #define C2H_SUB_CMD_ID_H2C_LOOPBACK_ACK 0X20
60 #define C2H_SUB_CMD_ID_FWCMD_LOOPBACK_ACK 0X21
61 #define C2H_SUB_CMD_ID_SCAN_CH_NOTIFY 0X22
62 #define C2H_SUB_CMD_ID_FW_TBTT_RPT 0X23
63 #define C2H_SUB_CMD_ID_BCN_OFFLOAD 0X24
64 #define C2H_SUB_CMD_ID_DPK_DATA 0X25
65 #define H2C_SUB_CMD_ID_CFG_PARAM_ACK SUB_CMD_ID_CFG_PARAM
66 #define H2C_SUB_CMD_ID_CH_SWITCH_ACK SUB_CMD_ID_CH_SWITCH
67 #define H2C_SUB_CMD_ID_BT_COEX_ACK SUB_CMD_ID_BT_COEX
68 #define H2C_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK SUB_CMD_ID_DUMP_PHYSICAL_EFUSE
69 #define H2C_SUB_CMD_ID_UPDATE_PKT_ACK SUB_CMD_ID_UPDATE_PKT
70 #define H2C_SUB_CMD_ID_SEND_SCAN_PKT_ACK SUB_CMD_ID_SEND_SCAN_PKT
71 #define H2C_SUB_CMD_ID_DROP_SCAN_PKT_ACK SUB_CMD_ID_DROP_SCAN_PKT
72 #define H2C_SUB_CMD_ID_UPDATE_DATAPACK_ACK SUB_CMD_ID_UPDATE_DATAPACK
73 #define H2C_SUB_CMD_ID_RUN_DATAPACK_ACK SUB_CMD_ID_RUN_DATAPACK
74 #define H2C_SUB_CMD_ID_IQK_ACK SUB_CMD_ID_IQK
75 #define H2C_SUB_CMD_ID_PWR_TRK_ACK SUB_CMD_ID_PWR_TRK
76 #define H2C_SUB_CMD_ID_PSD_ACK SUB_CMD_ID_PSD
77 #define H2C_SUB_CMD_ID_FW_MEM_DUMP_ACK SUB_CMD_ID_FW_MEM_DUMP
78 #define H2C_SUB_CMD_ID_ACT_SCHEDULE_REQ_ACK SUB_CMD_ID_ACT_SCHEDULE_REQ
79 #define H2C_SUB_CMD_ID_NAN_FUNC_CTRL_ACK SUB_CMD_ID_NAN_FUNC_CTRL
80 #define H2C_SUB_CMD_ID_DPK_ACK SUB_CMD_ID_DPK
81 #define H2C_SUB_CMD_ID_CCX_RPT SUB_CMD_ID_CCX_RPT
82 #define H2C_SUB_CMD_ID_FW_DBG_MSG SUB_CMD_ID_FW_DBG_MSG
83 #define H2C_SUB_CMD_ID_FW_SNDING_ACK SUB_CMD_ID_FW_SNDING
84 #define H2C_SUB_CMD_ID_FW_FWCTRL_RPT SUB_CMD_ID_FW_FWCTRL_RPT
85 #define H2C_SUB_CMD_ID_H2C_LOOPBACK_ACK SUB_CMD_ID_H2C_LOOPBACK
86 #define H2C_SUB_CMD_ID_FWCMD_LOOPBACK_ACK SUB_CMD_ID_FWCMD_LOOPBACK
87 #define H2C_CMD_ID_CFG_PARAM_ACK 0XFF
88 #define H2C_CMD_ID_CH_SWITCH_ACK 0XFF
89 #define H2C_CMD_ID_BT_COEX_ACK 0XFF
90 #define H2C_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0XFF
91 #define H2C_CMD_ID_UPDATE_PKT_ACK 0XFF
92 #define H2C_CMD_ID_SEND_SCAN_PKT_ACK 0XFF
93 #define H2C_CMD_ID_DROP_SCAN_PKT_ACK 0XFF
94 #define H2C_CMD_ID_UPDATE_DATAPACK_ACK 0XFF
95 #define H2C_CMD_ID_RUN_DATAPACK_ACK 0XFF
96 #define H2C_CMD_ID_IQK_ACK 0XFF
97 #define H2C_CMD_ID_PWR_TRK_ACK 0XFF
98 #define H2C_CMD_ID_PSD_ACK 0XFF
99 #define H2C_CMD_ID_FW_MEM_DUMP_ACK 0XFF
100 #define H2C_CMD_ID_ACT_SCHEDULE_REQ_ACK 0XFF
101 #define H2C_CMD_ID_NAN_FUNC_CTRL_ACK 0XFF
102 #define H2C_CMD_ID_DPK_ACK 0XFF
103 #define H2C_CMD_ID_CCX_RPT 0XFF
104 #define H2C_CMD_ID_FW_DBG_MSG 0XFF
105 #define H2C_CMD_ID_FW_SNDING_ACK 0XFF
106 #define H2C_CMD_ID_FW_FWCTRL_RPT 0XFF
107 #define H2C_CMD_ID_H2C_LOOPBACK_ACK 0XFF
108 #define H2C_CMD_ID_FWCMD_LOOPBACK_ACK 0XFF
109 #define C2H_HDR_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
110 #define C2H_HDR_SET_CMD_ID(c2h_pkt, value)                                     \
111 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
112 #define C2H_HDR_SET_CMD_ID_NO_CLR(c2h_pkt, value)                              \
113 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
114 #define C2H_HDR_GET_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
115 #define C2H_HDR_SET_SEQ(c2h_pkt, value)                                        \
116 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
117 #define C2H_HDR_SET_SEQ_NO_CLR(c2h_pkt, value)                                 \
118 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
119 #define C2H_HDR_GET_C2H_SUB_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
120 #define C2H_HDR_SET_C2H_SUB_CMD_ID(c2h_pkt, value)                             \
121 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
122 #define C2H_HDR_SET_C2H_SUB_CMD_ID_NO_CLR(c2h_pkt, value)                      \
123 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
124 #define C2H_HDR_GET_LEN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 8)
125 #define C2H_HDR_SET_LEN(c2h_pkt, value)                                        \
126 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 8, value)
127 #define C2H_HDR_SET_LEN_NO_CLR(c2h_pkt, value)                                 \
128 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 8, value)
129 #define C2H_DBG_GET_DBG_MSG(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
130 #define C2H_DBG_SET_DBG_MSG(c2h_pkt, value)                                    \
131 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
132 #define C2H_DBG_SET_DBG_MSG_NO_CLR(c2h_pkt, value)                             \
133 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
134 #define BT_COEX_INFO_GET_DATA_START(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
135 #define BT_COEX_INFO_SET_DATA_START(c2h_pkt, value)                            \
136 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
137 #define BT_COEX_INFO_SET_DATA_START_NO_CLR(c2h_pkt, value)                     \
138 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
139 #define SCAN_STATUS_RPT_GET_H2C_RETURN_CODE(c2h_pkt)                           \
140 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
141 #define SCAN_STATUS_RPT_SET_H2C_RETURN_CODE(c2h_pkt, value)                    \
142 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
143 #define SCAN_STATUS_RPT_SET_H2C_RETURN_CODE_NO_CLR(c2h_pkt, value)             \
144 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
145 #define SCAN_STATUS_RPT_GET_H2C_SEQ(c2h_pkt)                                   \
146 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
147 #define SCAN_STATUS_RPT_SET_H2C_SEQ(c2h_pkt, value)                            \
148 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
149 #define SCAN_STATUS_RPT_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                     \
150 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
151 #define SCAN_STATUS_RPT_GET_TSF_0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
152 #define SCAN_STATUS_RPT_SET_TSF_0(c2h_pkt, value)                              \
153 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
154 #define SCAN_STATUS_RPT_SET_TSF_0_NO_CLR(c2h_pkt, value)                       \
155 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
156 #define SCAN_STATUS_RPT_GET_TSF_1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
157 #define SCAN_STATUS_RPT_SET_TSF_1(c2h_pkt, value)                              \
158 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
159 #define SCAN_STATUS_RPT_SET_TSF_1_NO_CLR(c2h_pkt, value)                       \
160 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
161 #define SCAN_STATUS_RPT_GET_TSF_2(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
162 #define SCAN_STATUS_RPT_SET_TSF_2(c2h_pkt, value)                              \
163 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
164 #define SCAN_STATUS_RPT_SET_TSF_2_NO_CLR(c2h_pkt, value)                       \
165 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
166 #define SCAN_STATUS_RPT_GET_TSF_3(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 24, 8)
167 #define SCAN_STATUS_RPT_SET_TSF_3(c2h_pkt, value)                              \
168 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 24, 8, value)
169 #define SCAN_STATUS_RPT_SET_TSF_3_NO_CLR(c2h_pkt, value)                       \
170 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 24, 8, value)
171 #define SCAN_STATUS_RPT_GET_TSF_4(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 0, 8)
172 #define SCAN_STATUS_RPT_SET_TSF_4(c2h_pkt, value)                              \
173 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 0, 8, value)
174 #define SCAN_STATUS_RPT_SET_TSF_4_NO_CLR(c2h_pkt, value)                       \
175 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 0, 8, value)
176 #define SCAN_STATUS_RPT_GET_TSF_5(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 8, 8)
177 #define SCAN_STATUS_RPT_SET_TSF_5(c2h_pkt, value)                              \
178 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 8, 8, value)
179 #define SCAN_STATUS_RPT_SET_TSF_5_NO_CLR(c2h_pkt, value)                       \
180 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 8, 8, value)
181 #define SCAN_STATUS_RPT_GET_TSF_6(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 16, 8)
182 #define SCAN_STATUS_RPT_SET_TSF_6(c2h_pkt, value)                              \
183 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 16, 8, value)
184 #define SCAN_STATUS_RPT_SET_TSF_6_NO_CLR(c2h_pkt, value)                       \
185 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 16, 8, value)
186 #define SCAN_STATUS_RPT_GET_TSF_7(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 24, 8)
187 #define SCAN_STATUS_RPT_SET_TSF_7(c2h_pkt, value)                              \
188 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 24, 8, value)
189 #define SCAN_STATUS_RPT_SET_TSF_7_NO_CLR(c2h_pkt, value)                       \
190 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 24, 8, value)
191 #define H2C_ACK_HDR_GET_H2C_RETURN_CODE(c2h_pkt)                               \
192 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
193 #define H2C_ACK_HDR_SET_H2C_RETURN_CODE(c2h_pkt, value)                        \
194 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
195 #define H2C_ACK_HDR_SET_H2C_RETURN_CODE_NO_CLR(c2h_pkt, value)                 \
196 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
197 #define H2C_ACK_HDR_GET_H2C_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
198 #define H2C_ACK_HDR_SET_H2C_CMD_ID(c2h_pkt, value)                             \
199 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
200 #define H2C_ACK_HDR_SET_H2C_CMD_ID_NO_CLR(c2h_pkt, value)                      \
201 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
202 #define H2C_ACK_HDR_GET_H2C_SUB_CMD_ID(c2h_pkt)                                \
203 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
204 #define H2C_ACK_HDR_SET_H2C_SUB_CMD_ID(c2h_pkt, value)                         \
205 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
206 #define H2C_ACK_HDR_SET_H2C_SUB_CMD_ID_NO_CLR(c2h_pkt, value)                  \
207 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
208 #define H2C_ACK_HDR_GET_H2C_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 16)
209 #define H2C_ACK_HDR_SET_H2C_SEQ(c2h_pkt, value)                                \
210 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 16, value)
211 #define H2C_ACK_HDR_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                         \
212 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 16, value)
213 #define CFG_PARAM_ACK_GET_OFFSET_ACCUMULATION(c2h_pkt)                         \
214 	GET_C2H_FIELD(c2h_pkt + 0XC, 0, 32)
215 #define CFG_PARAM_ACK_SET_OFFSET_ACCUMULATION(c2h_pkt, value)                  \
216 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 0, 32, value)
217 #define CFG_PARAM_ACK_SET_OFFSET_ACCUMULATION_NO_CLR(c2h_pkt, value)           \
218 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 0, 32, value)
219 #define CFG_PARAM_ACK_GET_VALUE_ACCUMULATION(c2h_pkt)                          \
220 	GET_C2H_FIELD(c2h_pkt + 0X10, 0, 32)
221 #define CFG_PARAM_ACK_SET_VALUE_ACCUMULATION(c2h_pkt, value)                   \
222 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 0, 32, value)
223 #define CFG_PARAM_ACK_SET_VALUE_ACCUMULATION_NO_CLR(c2h_pkt, value)            \
224 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 0, 32, value)
225 #define CH_SWITCH_ACK_GET_TSF_0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 0, 8)
226 #define CH_SWITCH_ACK_SET_TSF_0(c2h_pkt, value)                                \
227 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 0, 8, value)
228 #define CH_SWITCH_ACK_SET_TSF_0_NO_CLR(c2h_pkt, value)                         \
229 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 0, 8, value)
230 #define CH_SWITCH_ACK_GET_TSF_1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 8, 8)
231 #define CH_SWITCH_ACK_SET_TSF_1(c2h_pkt, value)                                \
232 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 8, 8, value)
233 #define CH_SWITCH_ACK_SET_TSF_1_NO_CLR(c2h_pkt, value)                         \
234 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 8, 8, value)
235 #define CH_SWITCH_ACK_GET_TSF_2(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
236 #define CH_SWITCH_ACK_SET_TSF_2(c2h_pkt, value)                                \
237 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
238 #define CH_SWITCH_ACK_SET_TSF_2_NO_CLR(c2h_pkt, value)                         \
239 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
240 #define CH_SWITCH_ACK_GET_TSF_3(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
241 #define CH_SWITCH_ACK_SET_TSF_3(c2h_pkt, value)                                \
242 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
243 #define CH_SWITCH_ACK_SET_TSF_3_NO_CLR(c2h_pkt, value)                         \
244 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
245 #define CH_SWITCH_ACK_GET_TSF_4(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X10, 0, 8)
246 #define CH_SWITCH_ACK_SET_TSF_4(c2h_pkt, value)                                \
247 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 0, 8, value)
248 #define CH_SWITCH_ACK_SET_TSF_4_NO_CLR(c2h_pkt, value)                         \
249 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 0, 8, value)
250 #define CH_SWITCH_ACK_GET_TSF_5(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X10, 8, 8)
251 #define CH_SWITCH_ACK_SET_TSF_5(c2h_pkt, value)                                \
252 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 8, 8, value)
253 #define CH_SWITCH_ACK_SET_TSF_5_NO_CLR(c2h_pkt, value)                         \
254 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 8, 8, value)
255 #define CH_SWITCH_ACK_GET_TSF_6(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X10, 16, 8)
256 #define CH_SWITCH_ACK_SET_TSF_6(c2h_pkt, value)                                \
257 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 16, 8, value)
258 #define CH_SWITCH_ACK_SET_TSF_6_NO_CLR(c2h_pkt, value)                         \
259 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 16, 8, value)
260 #define CH_SWITCH_ACK_GET_TSF_7(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X10, 24, 8)
261 #define CH_SWITCH_ACK_SET_TSF_7(c2h_pkt, value)                                \
262 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 24, 8, value)
263 #define CH_SWITCH_ACK_SET_TSF_7_NO_CLR(c2h_pkt, value)                         \
264 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 24, 8, value)
265 #define BT_COEX_ACK_GET_DATA_START(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 0, 8)
266 #define BT_COEX_ACK_SET_DATA_START(c2h_pkt, value)                             \
267 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 0, 8, value)
268 #define BT_COEX_ACK_SET_DATA_START_NO_CLR(c2h_pkt, value)                      \
269 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 0, 8, value)
270 #define PSD_DATA_GET_SEGMENT_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 7)
271 #define PSD_DATA_SET_SEGMENT_ID(c2h_pkt, value)                                \
272 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 7, value)
273 #define PSD_DATA_SET_SEGMENT_ID_NO_CLR(c2h_pkt, value)                         \
274 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 7, value)
275 #define PSD_DATA_GET_END_SEGMENT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 7, 1)
276 #define PSD_DATA_SET_END_SEGMENT(c2h_pkt, value)                               \
277 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 7, 1, value)
278 #define PSD_DATA_SET_END_SEGMENT_NO_CLR(c2h_pkt, value)                        \
279 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 7, 1, value)
280 #define PSD_DATA_GET_SEGMENT_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
281 #define PSD_DATA_SET_SEGMENT_SIZE(c2h_pkt, value)                              \
282 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
283 #define PSD_DATA_SET_SEGMENT_SIZE_NO_CLR(c2h_pkt, value)                       \
284 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
285 #define PSD_DATA_GET_TOTAL_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
286 #define PSD_DATA_SET_TOTAL_SIZE(c2h_pkt, value)                                \
287 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
288 #define PSD_DATA_SET_TOTAL_SIZE_NO_CLR(c2h_pkt, value)                         \
289 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
290 #define PSD_DATA_GET_H2C_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 0, 16)
291 #define PSD_DATA_SET_H2C_SEQ(c2h_pkt, value)                                   \
292 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 16, value)
293 #define PSD_DATA_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                            \
294 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 16, value)
295 #define PSD_DATA_GET_DATA_START(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
296 #define PSD_DATA_SET_DATA_START(c2h_pkt, value)                                \
297 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
298 #define PSD_DATA_SET_DATA_START_NO_CLR(c2h_pkt, value)                         \
299 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
300 #define EFUSE_DATA_GET_SEGMENT_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 7)
301 #define EFUSE_DATA_SET_SEGMENT_ID(c2h_pkt, value)                              \
302 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 7, value)
303 #define EFUSE_DATA_SET_SEGMENT_ID_NO_CLR(c2h_pkt, value)                       \
304 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 7, value)
305 #define EFUSE_DATA_GET_END_SEGMENT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 7, 1)
306 #define EFUSE_DATA_SET_END_SEGMENT(c2h_pkt, value)                             \
307 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 7, 1, value)
308 #define EFUSE_DATA_SET_END_SEGMENT_NO_CLR(c2h_pkt, value)                      \
309 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 7, 1, value)
310 #define EFUSE_DATA_GET_SEGMENT_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
311 #define EFUSE_DATA_SET_SEGMENT_SIZE(c2h_pkt, value)                            \
312 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
313 #define EFUSE_DATA_SET_SEGMENT_SIZE_NO_CLR(c2h_pkt, value)                     \
314 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
315 #define EFUSE_DATA_GET_TOTAL_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
316 #define EFUSE_DATA_SET_TOTAL_SIZE(c2h_pkt, value)                              \
317 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
318 #define EFUSE_DATA_SET_TOTAL_SIZE_NO_CLR(c2h_pkt, value)                       \
319 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
320 #define EFUSE_DATA_GET_H2C_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 0, 16)
321 #define EFUSE_DATA_SET_H2C_SEQ(c2h_pkt, value)                                 \
322 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 16, value)
323 #define EFUSE_DATA_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                          \
324 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 16, value)
325 #define EFUSE_DATA_GET_DATA_START(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
326 #define EFUSE_DATA_SET_DATA_START(c2h_pkt, value)                              \
327 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
328 #define EFUSE_DATA_SET_DATA_START_NO_CLR(c2h_pkt, value)                       \
329 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
330 #define IQK_DATA_GET_SEGMENT_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 7)
331 #define IQK_DATA_SET_SEGMENT_ID(c2h_pkt, value)                                \
332 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 7, value)
333 #define IQK_DATA_SET_SEGMENT_ID_NO_CLR(c2h_pkt, value)                         \
334 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 7, value)
335 #define IQK_DATA_GET_END_SEGMENT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 7, 1)
336 #define IQK_DATA_SET_END_SEGMENT(c2h_pkt, value)                               \
337 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 7, 1, value)
338 #define IQK_DATA_SET_END_SEGMENT_NO_CLR(c2h_pkt, value)                        \
339 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 7, 1, value)
340 #define IQK_DATA_GET_SEGMENT_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
341 #define IQK_DATA_SET_SEGMENT_SIZE(c2h_pkt, value)                              \
342 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
343 #define IQK_DATA_SET_SEGMENT_SIZE_NO_CLR(c2h_pkt, value)                       \
344 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
345 #define IQK_DATA_GET_TOTAL_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
346 #define IQK_DATA_SET_TOTAL_SIZE(c2h_pkt, value)                                \
347 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
348 #define IQK_DATA_SET_TOTAL_SIZE_NO_CLR(c2h_pkt, value)                         \
349 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
350 #define IQK_DATA_GET_H2C_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 0, 16)
351 #define IQK_DATA_SET_H2C_SEQ(c2h_pkt, value)                                   \
352 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 16, value)
353 #define IQK_DATA_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                            \
354 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 16, value)
355 #define IQK_DATA_GET_DATA_START(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
356 #define IQK_DATA_SET_DATA_START(c2h_pkt, value)                                \
357 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
358 #define IQK_DATA_SET_DATA_START_NO_CLR(c2h_pkt, value)                         \
359 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
360 #define CCX_RPT_GET_POLLUTED(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 0, 1)
361 #define CCX_RPT_SET_POLLUTED(c2h_pkt, value)                                   \
362 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 0, 1, value)
363 #define CCX_RPT_SET_POLLUTED_NO_CLR(c2h_pkt, value)                            \
364 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 0, 1, value)
365 #define CCX_RPT_GET_RPT_SEL(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 5, 3)
366 #define CCX_RPT_SET_RPT_SEL(c2h_pkt, value)                                    \
367 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 5, 3, value)
368 #define CCX_RPT_SET_RPT_SEL_NO_CLR(c2h_pkt, value)                             \
369 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 5, 3, value)
370 #define CCX_RPT_GET_QSEL(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 8, 5)
371 #define CCX_RPT_SET_QSEL(c2h_pkt, value)                                       \
372 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 8, 5, value)
373 #define CCX_RPT_SET_QSEL_NO_CLR(c2h_pkt, value)                                \
374 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 8, 5, value)
375 #define CCX_RPT_GET_MISSED_RPT_NUM(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 13, 3)
376 #define CCX_RPT_SET_MISSED_RPT_NUM(c2h_pkt, value)                             \
377 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 13, 3, value)
378 #define CCX_RPT_SET_MISSED_RPT_NUM_NO_CLR(c2h_pkt, value)                      \
379 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 13, 3, value)
380 #define CCX_RPT_GET_MACID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 16, 7)
381 #define CCX_RPT_SET_MACID(c2h_pkt, value)                                      \
382 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 16, 7, value)
383 #define CCX_RPT_SET_MACID_NO_CLR(c2h_pkt, value)                               \
384 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 16, 7, value)
385 #define CCX_RPT_GET_INITIAL_DATA_RATE(c2h_pkt)                                 \
386 	GET_C2H_FIELD(c2h_pkt + 0X4, 24, 7)
387 #define CCX_RPT_SET_INITIAL_DATA_RATE(c2h_pkt, value)                          \
388 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 24, 7, value)
389 #define CCX_RPT_SET_INITIAL_DATA_RATE_NO_CLR(c2h_pkt, value)                   \
390 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 24, 7, value)
391 #define CCX_RPT_GET_INITIAL_SGI(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X4, 31, 1)
392 #define CCX_RPT_SET_INITIAL_SGI(c2h_pkt, value)                                \
393 	SET_C2H_FIELD_CLR(c2h_pkt + 0X4, 31, 1, value)
394 #define CCX_RPT_SET_INITIAL_SGI_NO_CLR(c2h_pkt, value)                         \
395 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X4, 31, 1, value)
396 #define CCX_RPT_GET_QUEUE_TIME(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 0, 16)
397 #define CCX_RPT_SET_QUEUE_TIME(c2h_pkt, value)                                 \
398 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 16, value)
399 #define CCX_RPT_SET_QUEUE_TIME_NO_CLR(c2h_pkt, value)                          \
400 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 16, value)
401 #define CCX_RPT_GET_SW_DEFINE_BYTE0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
402 #define CCX_RPT_SET_SW_DEFINE_BYTE0(c2h_pkt, value)                            \
403 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
404 #define CCX_RPT_SET_SW_DEFINE_BYTE0_NO_CLR(c2h_pkt, value)                     \
405 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
406 #define CCX_RPT_GET_RTS_RETRY_COUNT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 24, 4)
407 #define CCX_RPT_SET_RTS_RETRY_COUNT(c2h_pkt, value)                            \
408 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 24, 4, value)
409 #define CCX_RPT_SET_RTS_RETRY_COUNT_NO_CLR(c2h_pkt, value)                     \
410 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 24, 4, value)
411 #define CCX_RPT_GET_BMC(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 29, 1)
412 #define CCX_RPT_SET_BMC(c2h_pkt, value)                                        \
413 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 29, 1, value)
414 #define CCX_RPT_SET_BMC_NO_CLR(c2h_pkt, value)                                 \
415 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 29, 1, value)
416 #define CCX_RPT_GET_TX_STATE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X8, 30, 2)
417 #define CCX_RPT_SET_TX_STATE(c2h_pkt, value)                                   \
418 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 30, 2, value)
419 #define CCX_RPT_SET_TX_STATE_NO_CLR(c2h_pkt, value)                            \
420 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 30, 2, value)
421 #define CCX_RPT_GET_DATA_RETRY_COUNT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 0, 6)
422 #define CCX_RPT_SET_DATA_RETRY_COUNT(c2h_pkt, value)                           \
423 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 0, 6, value)
424 #define CCX_RPT_SET_DATA_RETRY_COUNT_NO_CLR(c2h_pkt, value)                    \
425 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 0, 6, value)
426 #define CCX_RPT_GET_FINAL_DATA_RATE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 8, 7)
427 #define CCX_RPT_SET_FINAL_DATA_RATE(c2h_pkt, value)                            \
428 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 8, 7, value)
429 #define CCX_RPT_SET_FINAL_DATA_RATE_NO_CLR(c2h_pkt, value)                     \
430 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 8, 7, value)
431 #define CCX_RPT_GET_FINAL_SGI(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 15, 1)
432 #define CCX_RPT_SET_FINAL_SGI(c2h_pkt, value)                                  \
433 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 15, 1, value)
434 #define CCX_RPT_SET_FINAL_SGI_NO_CLR(c2h_pkt, value)                           \
435 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 15, 1, value)
436 #define CCX_RPT_GET_RF_CH_NUM(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 16, 10)
437 #define CCX_RPT_SET_RF_CH_NUM(c2h_pkt, value)                                  \
438 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 16, 10, value)
439 #define CCX_RPT_SET_RF_CH_NUM_NO_CLR(c2h_pkt, value)                           \
440 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 16, 10, value)
441 #define CCX_RPT_GET_SC(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 26, 4)
442 #define CCX_RPT_SET_SC(c2h_pkt, value)                                         \
443 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 26, 4, value)
444 #define CCX_RPT_SET_SC_NO_CLR(c2h_pkt, value)                                  \
445 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 26, 4, value)
446 #define CCX_RPT_GET_BW(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0XC, 30, 2)
447 #define CCX_RPT_SET_BW(c2h_pkt, value)                                         \
448 	SET_C2H_FIELD_CLR(c2h_pkt + 0XC, 30, 2, value)
449 #define CCX_RPT_SET_BW_NO_CLR(c2h_pkt, value)                                  \
450 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0XC, 30, 2, value)
451 #define C2H_PKT_FW_STATUS_NOTIFY_GET_STATUS_CODE(c2h_pkt)                      \
452 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 32)
453 #define C2H_PKT_FW_STATUS_NOTIFY_SET_STATUS_CODE(c2h_pkt, value)               \
454 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 32, value)
455 #define C2H_PKT_FW_STATUS_NOTIFY_SET_STATUS_CODE_NO_CLR(c2h_pkt, value)        \
456 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 32, value)
457 #define C2H_PKT_DETECT_THERMAL_GET_THERMAL_VALUE(c2h_pkt)                      \
458 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 32)
459 #define C2H_PKT_DETECT_THERMAL_SET_THERMAL_VALUE(c2h_pkt, value)               \
460 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 32, value)
461 #define C2H_PKT_DETECT_THERMAL_SET_THERMAL_VALUE_NO_CLR(c2h_pkt, value)        \
462 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 32, value)
463 #define FW_DBG_MSG_GET_CMD_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
464 #define FW_DBG_MSG_SET_CMD_ID(c2h_pkt, value)                                  \
465 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
466 #define FW_DBG_MSG_SET_CMD_ID_NO_CLR(c2h_pkt, value)                           \
467 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
468 #define FW_DBG_MSG_GET_C2H_SUB_CMD_ID(c2h_pkt)                                 \
469 	GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
470 #define FW_DBG_MSG_SET_C2H_SUB_CMD_ID(c2h_pkt, value)                          \
471 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
472 #define FW_DBG_MSG_SET_C2H_SUB_CMD_ID_NO_CLR(c2h_pkt, value)                   \
473 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
474 #define FW_DBG_MSG_GET_FULL(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 1)
475 #define FW_DBG_MSG_SET_FULL(c2h_pkt, value)                                    \
476 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 1, value)
477 #define FW_DBG_MSG_SET_FULL_NO_CLR(c2h_pkt, value)                             \
478 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 1, value)
479 #define FW_DBG_MSG_GET_OWN(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 31, 1)
480 #define FW_DBG_MSG_SET_OWN(c2h_pkt, value)                                     \
481 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 31, 1, value)
482 #define FW_DBG_MSG_SET_OWN_NO_CLR(c2h_pkt, value)                              \
483 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 31, 1, value)
484 #define FW_FWCTRL_RPT_GET_EVT_TYPE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 0, 8)
485 #define FW_FWCTRL_RPT_SET_EVT_TYPE(c2h_pkt, value)                             \
486 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 0, 8, value)
487 #define FW_FWCTRL_RPT_SET_EVT_TYPE_NO_CLR(c2h_pkt, value)                      \
488 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 0, 8, value)
489 #define FW_FWCTRL_RPT_GET_LENGTH(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 8, 8)
490 #define FW_FWCTRL_RPT_SET_LENGTH(c2h_pkt, value)                               \
491 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 8, 8, value)
492 #define FW_FWCTRL_RPT_SET_LENGTH_NO_CLR(c2h_pkt, value)                        \
493 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 8, 8, value)
494 #define FW_FWCTRL_RPT_GET_SEQ_NUM(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 16, 8)
495 #define FW_FWCTRL_RPT_SET_SEQ_NUM(c2h_pkt, value)                              \
496 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 16, 8, value)
497 #define FW_FWCTRL_RPT_SET_SEQ_NUM_NO_CLR(c2h_pkt, value)                       \
498 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 16, 8, value)
499 #define FW_FWCTRL_RPT_GET_IS_ACK(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X00, 24, 1)
500 #define FW_FWCTRL_RPT_SET_IS_ACK(c2h_pkt, value)                               \
501 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 24, 1, value)
502 #define FW_FWCTRL_RPT_SET_IS_ACK_NO_CLR(c2h_pkt, value)                        \
503 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 24, 1, value)
504 #define FW_FWCTRL_RPT_GET_MORE_CONTENT(c2h_pkt)                                \
505 	GET_C2H_FIELD(c2h_pkt + 0X00, 25, 1)
506 #define FW_FWCTRL_RPT_SET_MORE_CONTENT(c2h_pkt, value)                         \
507 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 25, 1, value)
508 #define FW_FWCTRL_RPT_SET_MORE_CONTENT_NO_CLR(c2h_pkt, value)                  \
509 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 25, 1, value)
510 #define FW_FWCTRL_RPT_GET_CONTENT_IDX(c2h_pkt)                                 \
511 	GET_C2H_FIELD(c2h_pkt + 0X00, 26, 6)
512 #define FW_FWCTRL_RPT_SET_CONTENT_IDX(c2h_pkt, value)                          \
513 	SET_C2H_FIELD_CLR(c2h_pkt + 0X00, 26, 6, value)
514 #define FW_FWCTRL_RPT_SET_CONTENT_IDX_NO_CLR(c2h_pkt, value)                   \
515 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X00, 26, 6, value)
516 #define FW_FWCTRL_RPT_GET_CLASS_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
517 #define FW_FWCTRL_RPT_SET_CLASS_ID(c2h_pkt, value)                             \
518 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
519 #define FW_FWCTRL_RPT_SET_CLASS_ID_NO_CLR(c2h_pkt, value)                      \
520 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
521 #define FW_FWCTRL_RPT_GET_CONTENT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
522 #define FW_FWCTRL_RPT_SET_CONTENT(c2h_pkt, value)                              \
523 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
524 #define FW_FWCTRL_RPT_SET_CONTENT_NO_CLR(c2h_pkt, value)                       \
525 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
526 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_0(c2h_pkt)                               \
527 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
528 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_0(c2h_pkt, value)                        \
529 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
530 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_0_NO_CLR(c2h_pkt, value)                 \
531 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
532 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_1(c2h_pkt)                               \
533 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
534 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_1(c2h_pkt, value)                        \
535 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
536 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_1_NO_CLR(c2h_pkt, value)                 \
537 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
538 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_2(c2h_pkt)                               \
539 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
540 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_2(c2h_pkt, value)                        \
541 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
542 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_2_NO_CLR(c2h_pkt, value)                 \
543 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
544 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_3(c2h_pkt)                               \
545 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
546 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_3(c2h_pkt, value)                        \
547 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
548 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_3_NO_CLR(c2h_pkt, value)                 \
549 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
550 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_4(c2h_pkt)                               \
551 	GET_C2H_FIELD(c2h_pkt + 0X8, 0, 8)
552 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_4(c2h_pkt, value)                        \
553 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 8, value)
554 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_4_NO_CLR(c2h_pkt, value)                 \
555 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 8, value)
556 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_5(c2h_pkt)                               \
557 	GET_C2H_FIELD(c2h_pkt + 0X8, 8, 8)
558 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_5(c2h_pkt, value)                        \
559 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 8, 8, value)
560 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_5_NO_CLR(c2h_pkt, value)                 \
561 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 8, 8, value)
562 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_6(c2h_pkt)                               \
563 	GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
564 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_6(c2h_pkt, value)                        \
565 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
566 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_6_NO_CLR(c2h_pkt, value)                 \
567 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
568 #define H2C_LOOPBACK_ACK_GET_H2C_BYTE_7(c2h_pkt)                               \
569 	GET_C2H_FIELD(c2h_pkt + 0X8, 24, 8)
570 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_7(c2h_pkt, value)                        \
571 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 24, 8, value)
572 #define H2C_LOOPBACK_ACK_SET_H2C_BYTE_7_NO_CLR(c2h_pkt, value)                 \
573 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 24, 8, value)
574 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_0(c2h_pkt)                             \
575 	GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
576 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_0(c2h_pkt, value)                      \
577 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
578 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_0_NO_CLR(c2h_pkt, value)               \
579 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
580 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_1(c2h_pkt)                             \
581 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
582 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_1(c2h_pkt, value)                      \
583 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
584 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_1_NO_CLR(c2h_pkt, value)               \
585 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
586 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_2(c2h_pkt)                             \
587 	GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
588 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_2(c2h_pkt, value)                      \
589 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
590 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_2_NO_CLR(c2h_pkt, value)               \
591 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
592 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_3(c2h_pkt)                             \
593 	GET_C2H_FIELD(c2h_pkt + 0X04, 24, 8)
594 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_3(c2h_pkt, value)                      \
595 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 24, 8, value)
596 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_3_NO_CLR(c2h_pkt, value)               \
597 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 24, 8, value)
598 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_4(c2h_pkt)                             \
599 	GET_C2H_FIELD(c2h_pkt + 0X8, 0, 8)
600 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_4(c2h_pkt, value)                      \
601 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 0, 8, value)
602 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_4_NO_CLR(c2h_pkt, value)               \
603 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 0, 8, value)
604 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_5(c2h_pkt)                             \
605 	GET_C2H_FIELD(c2h_pkt + 0X8, 8, 8)
606 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_5(c2h_pkt, value)                      \
607 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 8, 8, value)
608 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_5_NO_CLR(c2h_pkt, value)               \
609 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 8, 8, value)
610 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_6(c2h_pkt)                             \
611 	GET_C2H_FIELD(c2h_pkt + 0X8, 16, 8)
612 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_6(c2h_pkt, value)                      \
613 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 16, 8, value)
614 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_6_NO_CLR(c2h_pkt, value)               \
615 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 16, 8, value)
616 #define FWCMD_LOOPBACK_ACK_GET_H2C_BYTE_7(c2h_pkt)                             \
617 	GET_C2H_FIELD(c2h_pkt + 0X8, 24, 8)
618 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_7(c2h_pkt, value)                      \
619 	SET_C2H_FIELD_CLR(c2h_pkt + 0X8, 24, 8, value)
620 #define FWCMD_LOOPBACK_ACK_SET_H2C_BYTE_7_NO_CLR(c2h_pkt, value)               \
621 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X8, 24, 8, value)
622 #define SCAN_CH_NOTIFY_GET_CH_NUM(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
623 #define SCAN_CH_NOTIFY_SET_CH_NUM(c2h_pkt, value)                              \
624 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
625 #define SCAN_CH_NOTIFY_SET_CH_NUM_NO_CLR(c2h_pkt, value)                       \
626 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
627 #define SCAN_CH_NOTIFY_GET_NOTIFY_ID(c2h_pkt)                                  \
628 	GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
629 #define SCAN_CH_NOTIFY_SET_NOTIFY_ID(c2h_pkt, value)                           \
630 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
631 #define SCAN_CH_NOTIFY_SET_NOTIFY_ID_NO_CLR(c2h_pkt, value)                    \
632 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
633 #define SCAN_CH_NOTIFY_GET_STATUS(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 8)
634 #define SCAN_CH_NOTIFY_SET_STATUS(c2h_pkt, value)                              \
635 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 8, value)
636 #define SCAN_CH_NOTIFY_SET_STATUS_NO_CLR(c2h_pkt, value)                       \
637 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 8, value)
638 #define SCAN_CH_NOTIFY_GET_TSF_0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 8)
639 #define SCAN_CH_NOTIFY_SET_TSF_0(c2h_pkt, value)                               \
640 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 8, value)
641 #define SCAN_CH_NOTIFY_SET_TSF_0_NO_CLR(c2h_pkt, value)                        \
642 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 8, value)
643 #define SCAN_CH_NOTIFY_GET_TSF_1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 8, 8)
644 #define SCAN_CH_NOTIFY_SET_TSF_1(c2h_pkt, value)                               \
645 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 8, 8, value)
646 #define SCAN_CH_NOTIFY_SET_TSF_1_NO_CLR(c2h_pkt, value)                        \
647 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 8, 8, value)
648 #define SCAN_CH_NOTIFY_GET_TSF_2(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
649 #define SCAN_CH_NOTIFY_SET_TSF_2(c2h_pkt, value)                               \
650 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
651 #define SCAN_CH_NOTIFY_SET_TSF_2_NO_CLR(c2h_pkt, value)                        \
652 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
653 #define SCAN_CH_NOTIFY_GET_TSF_3(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 24, 8)
654 #define SCAN_CH_NOTIFY_SET_TSF_3(c2h_pkt, value)                               \
655 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 24, 8, value)
656 #define SCAN_CH_NOTIFY_SET_TSF_3_NO_CLR(c2h_pkt, value)                        \
657 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 24, 8, value)
658 #define SCAN_CH_NOTIFY_GET_TSF_4(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 0, 8)
659 #define SCAN_CH_NOTIFY_SET_TSF_4(c2h_pkt, value)                               \
660 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 0, 8, value)
661 #define SCAN_CH_NOTIFY_SET_TSF_4_NO_CLR(c2h_pkt, value)                        \
662 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 0, 8, value)
663 #define SCAN_CH_NOTIFY_GET_TSF_5(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 8, 8)
664 #define SCAN_CH_NOTIFY_SET_TSF_5(c2h_pkt, value)                               \
665 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 8, 8, value)
666 #define SCAN_CH_NOTIFY_SET_TSF_5_NO_CLR(c2h_pkt, value)                        \
667 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 8, 8, value)
668 #define SCAN_CH_NOTIFY_GET_TSF_6(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
669 #define SCAN_CH_NOTIFY_SET_TSF_6(c2h_pkt, value)                               \
670 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
671 #define SCAN_CH_NOTIFY_SET_TSF_6_NO_CLR(c2h_pkt, value)                        \
672 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
673 #define SCAN_CH_NOTIFY_GET_TSF_7(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
674 #define SCAN_CH_NOTIFY_SET_TSF_7(c2h_pkt, value)                               \
675 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
676 #define SCAN_CH_NOTIFY_SET_TSF_7_NO_CLR(c2h_pkt, value)                        \
677 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
678 #define FW_TBTT_RPT_GET_PORT_NUMBER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
679 #define FW_TBTT_RPT_SET_PORT_NUMBER(c2h_pkt, value)                            \
680 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
681 #define FW_TBTT_RPT_SET_PORT_NUMBER_NO_CLR(c2h_pkt, value)                     \
682 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
683 #define BCN_OFFLOAD_GET_SUPPORT_VER(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 8)
684 #define BCN_OFFLOAD_SET_SUPPORT_VER(c2h_pkt, value)                            \
685 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 8, value)
686 #define BCN_OFFLOAD_SET_SUPPORT_VER_NO_CLR(c2h_pkt, value)                     \
687 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 8, value)
688 #define BCN_OFFLOAD_GET_STATUS(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
689 #define BCN_OFFLOAD_SET_STATUS(c2h_pkt, value)                                 \
690 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
691 #define BCN_OFFLOAD_SET_STATUS_NO_CLR(c2h_pkt, value)                          \
692 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
693 #define DPK_DATA_GET_SEGMENT_ID(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 0, 7)
694 #define DPK_DATA_SET_SEGMENT_ID(c2h_pkt, value)                                \
695 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 0, 7, value)
696 #define DPK_DATA_SET_SEGMENT_ID_NO_CLR(c2h_pkt, value)                         \
697 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 0, 7, value)
698 #define DPK_DATA_GET_END_SEGMENT(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 7, 1)
699 #define DPK_DATA_SET_END_SEGMENT(c2h_pkt, value)                               \
700 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 7, 1, value)
701 #define DPK_DATA_SET_END_SEGMENT_NO_CLR(c2h_pkt, value)                        \
702 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 7, 1, value)
703 #define DPK_DATA_GET_SEGMENT_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 8, 8)
704 #define DPK_DATA_SET_SEGMENT_SIZE(c2h_pkt, value)                              \
705 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 8, 8, value)
706 #define DPK_DATA_SET_SEGMENT_SIZE_NO_CLR(c2h_pkt, value)                       \
707 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 8, 8, value)
708 #define DPK_DATA_GET_TOTAL_SIZE(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X04, 16, 16)
709 #define DPK_DATA_SET_TOTAL_SIZE(c2h_pkt, value)                                \
710 	SET_C2H_FIELD_CLR(c2h_pkt + 0X04, 16, 16, value)
711 #define DPK_DATA_SET_TOTAL_SIZE_NO_CLR(c2h_pkt, value)                         \
712 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X04, 16, 16, value)
713 #define DPK_DATA_GET_H2C_SEQ(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 0, 16)
714 #define DPK_DATA_SET_H2C_SEQ(c2h_pkt, value)                                   \
715 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 0, 16, value)
716 #define DPK_DATA_SET_H2C_SEQ_NO_CLR(c2h_pkt, value)                            \
717 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 0, 16, value)
718 #define DPK_DATA_GET_PATH0_OK(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 16, 8)
719 #define DPK_DATA_SET_PATH0_OK(c2h_pkt, value)                                  \
720 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 16, 8, value)
721 #define DPK_DATA_SET_PATH0_OK_NO_CLR(c2h_pkt, value)                           \
722 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 16, 8, value)
723 #define DPK_DATA_GET_PATH1_OK(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X08, 24, 8)
724 #define DPK_DATA_SET_PATH1_OK(c2h_pkt, value)                                  \
725 	SET_C2H_FIELD_CLR(c2h_pkt + 0X08, 24, 8, value)
726 #define DPK_DATA_SET_PATH1_OK_NO_CLR(c2h_pkt, value)                           \
727 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X08, 24, 8, value)
728 #define DPK_DATA_GET_THERM0_S0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 0, 8)
729 #define DPK_DATA_SET_THERM0_S0(c2h_pkt, value)                                 \
730 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 0, 8, value)
731 #define DPK_DATA_SET_THERM0_S0_NO_CLR(c2h_pkt, value)                          \
732 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 0, 8, value)
733 #define DPK_DATA_GET_THERM0_S1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 8, 8)
734 #define DPK_DATA_SET_THERM0_S1(c2h_pkt, value)                                 \
735 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 8, 8, value)
736 #define DPK_DATA_SET_THERM0_S1_NO_CLR(c2h_pkt, value)                          \
737 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 8, 8, value)
738 #define DPK_DATA_GET_THERM1_S0(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 16, 8)
739 #define DPK_DATA_SET_THERM1_S0(c2h_pkt, value)                                 \
740 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 16, 8, value)
741 #define DPK_DATA_SET_THERM1_S0_NO_CLR(c2h_pkt, value)                          \
742 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 16, 8, value)
743 #define DPK_DATA_GET_THERM1_S1(c2h_pkt) GET_C2H_FIELD(c2h_pkt + 0X0C, 24, 8)
744 #define DPK_DATA_SET_THERM1_S1(c2h_pkt, value)                                 \
745 	SET_C2H_FIELD_CLR(c2h_pkt + 0X0C, 24, 8, value)
746 #define DPK_DATA_SET_THERM1_S1_NO_CLR(c2h_pkt, value)                          \
747 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X0C, 24, 8, value)
748 #define DPK_DATA_GET_THERM_DELTA0_S0(c2h_pkt)                                  \
749 	GET_C2H_FIELD(c2h_pkt + 0X10, 0, 8)
750 #define DPK_DATA_SET_THERM_DELTA0_S0(c2h_pkt, value)                           \
751 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 0, 8, value)
752 #define DPK_DATA_SET_THERM_DELTA0_S0_NO_CLR(c2h_pkt, value)                    \
753 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 0, 8, value)
754 #define DPK_DATA_GET_THERM_DELTA0_S1(c2h_pkt)                                  \
755 	GET_C2H_FIELD(c2h_pkt + 0X10, 8, 8)
756 #define DPK_DATA_SET_THERM_DELTA0_S1(c2h_pkt, value)                           \
757 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 8, 8, value)
758 #define DPK_DATA_SET_THERM_DELTA0_S1_NO_CLR(c2h_pkt, value)                    \
759 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 8, 8, value)
760 #define DPK_DATA_GET_THERM_DELTA1_S0(c2h_pkt)                                  \
761 	GET_C2H_FIELD(c2h_pkt + 0X10, 16, 8)
762 #define DPK_DATA_SET_THERM_DELTA1_S0(c2h_pkt, value)                           \
763 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 16, 8, value)
764 #define DPK_DATA_SET_THERM_DELTA1_S0_NO_CLR(c2h_pkt, value)                    \
765 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 16, 8, value)
766 #define DPK_DATA_GET_THERM_DELTA1_S1(c2h_pkt)                                  \
767 	GET_C2H_FIELD(c2h_pkt + 0X10, 24, 8)
768 #define DPK_DATA_SET_THERM_DELTA1_S1(c2h_pkt, value)                           \
769 	SET_C2H_FIELD_CLR(c2h_pkt + 0X10, 24, 8, value)
770 #define DPK_DATA_SET_THERM_DELTA1_S1_NO_CLR(c2h_pkt, value)                    \
771 	SET_C2H_FIELD_NO_CLR(c2h_pkt + 0X10, 24, 8, value)
772 #endif
773