OSDN Git Service

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