1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
3  *
4  * Copyright(c) 2016  Realtek Corporation.
5  *
6  * Contact Information:
7  * wlanfae <wlanfae@realtek.com>
8  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
9  * Hsinchu 300, Taiwan.
10  *
11  * Larry Finger <Larry.Finger@lwfinger.net>
12  *
13  *****************************************************************************/
14 #ifndef _HAL_ORIGINALC2HFORMAT_H2C_C2H_NIC_H_
15 #define _HAL_ORIGINALC2HFORMAT_H2C_C2H_NIC_H_
16 #define CMD_ID_C2H 0X00
17 #define CMD_ID_DBG 0X00
18 #define CMD_ID_C2H_LB 0X01
19 #define CMD_ID_C2H_SND_TXBF 0X02
20 #define CMD_ID_C2H_CCX_RPT 0X03
21 #define CMD_ID_C2H_AP_REQ_TXRPT 0X04
22 #define CMD_ID_C2H_INITIAL_RATE_COLLECTION 0X05
23 #define CMD_ID_C2H_RA_RPT 0X0C
24 #define CMD_ID_C2H_SPECIAL_STATISTICS 0X0D
25 #define CMD_ID_C2H_RA_PARA_RPT 0X0E
26 #define CMD_ID_C2H_CUR_CHANNEL 0X10
27 #define CMD_ID_C2H_GPIO_WAKEUP 0X14
28 #define C2H_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
29 #define C2H_SET_CMD_ID(__c2h, __value)                                         \
30 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
31 #define C2H_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
32 #define C2H_SET_SEQ(__c2h, __value)                                            \
33 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
34 #define DBG_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
35 #define DBG_SET_CMD_ID(__c2h, __value)                                         \
36 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
37 #define DBG_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
38 #define DBG_SET_SEQ(__c2h, __value)                                            \
39 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
40 #define DBG_GET_DBG_STR1(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
41 #define DBG_SET_DBG_STR1(__c2h, __value)                                       \
42 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
43 #define DBG_GET_DBG_STR2(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
44 #define DBG_SET_DBG_STR2(__c2h, __value)                                       \
45 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
46 #define DBG_GET_DBG_STR3(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
47 #define DBG_SET_DBG_STR3(__c2h, __value)                                       \
48 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
49 #define DBG_GET_DBG_STR4(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
50 #define DBG_SET_DBG_STR4(__c2h, __value)                                       \
51 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
52 #define DBG_GET_DBG_STR5(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 8)
53 #define DBG_SET_DBG_STR5(__c2h, __value)                                       \
54 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 8, __value)
55 #define DBG_GET_DBG_STR6(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 24, 8)
56 #define DBG_SET_DBG_STR6(__c2h, __value)                                       \
57 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 24, 8, __value)
58 #define DBG_GET_DBG_STR7(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 8)
59 #define DBG_SET_DBG_STR7(__c2h, __value)                                       \
60 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 8, __value)
61 #define DBG_GET_DBG_STR8(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 8, 8)
62 #define DBG_SET_DBG_STR8(__c2h, __value)                                       \
63 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 8, 8, __value)
64 #define DBG_GET_DBG_STR9(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 16, 8)
65 #define DBG_SET_DBG_STR9(__c2h, __value)                                       \
66 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 16, 8, __value)
67 #define DBG_GET_DBG_STR10(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 24, 8)
68 #define DBG_SET_DBG_STR10(__c2h, __value)                                      \
69 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 24, 8, __value)
70 #define DBG_GET_DBG_STR11(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 0, 8)
71 #define DBG_SET_DBG_STR11(__c2h, __value)                                      \
72 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 0, 8, __value)
73 #define DBG_GET_DBG_STR12(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 8, 8)
74 #define DBG_SET_DBG_STR12(__c2h, __value)                                      \
75 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 8, 8, __value)
76 #define DBG_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
77 #define DBG_SET_LEN(__c2h, __value)                                            \
78 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
79 #define DBG_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
80 #define DBG_SET_TRIGGER(__c2h, __value)                                        \
81 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
82 #define C2H_LB_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
83 #define C2H_LB_SET_CMD_ID(__c2h, __value)                                      \
84 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
85 #define C2H_LB_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
86 #define C2H_LB_SET_SEQ(__c2h, __value)                                         \
87 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
88 #define C2H_LB_GET_PAYLOAD1(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 16)
89 #define C2H_LB_SET_PAYLOAD1(__c2h, __value)                                    \
90 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 16, __value)
91 #define C2H_LB_GET_PAYLOAD2(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 32)
92 #define C2H_LB_SET_PAYLOAD2(__c2h, __value)                                    \
93 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 32, __value)
94 #define C2H_LB_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
95 #define C2H_LB_SET_LEN(__c2h, __value)                                         \
96 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
97 #define C2H_LB_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
98 #define C2H_LB_SET_TRIGGER(__c2h, __value)                                     \
99 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
100 #define C2H_SND_TXBF_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
101 #define C2H_SND_TXBF_SET_CMD_ID(__c2h, __value)                                \
102 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
103 #define C2H_SND_TXBF_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
104 #define C2H_SND_TXBF_SET_SEQ(__c2h, __value)                                   \
105 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
106 #define C2H_SND_TXBF_GET_SND_RESULT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 1)
107 #define C2H_SND_TXBF_SET_SND_RESULT(__c2h, __value)                            \
108 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 1, __value)
109 #define C2H_SND_TXBF_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
110 #define C2H_SND_TXBF_SET_LEN(__c2h, __value)                                   \
111 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
112 #define C2H_SND_TXBF_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
113 #define C2H_SND_TXBF_SET_TRIGGER(__c2h, __value)                               \
114 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
115 #define C2H_CCX_RPT_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
116 #define C2H_CCX_RPT_SET_CMD_ID(__c2h, __value)                                 \
117 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
118 #define C2H_CCX_RPT_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
119 #define C2H_CCX_RPT_SET_SEQ(__c2h, __value)                                    \
120 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
121 #define C2H_CCX_RPT_GET_QSEL(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 5)
122 #define C2H_CCX_RPT_SET_QSEL(__c2h, __value)                                   \
123 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 5, __value)
124 #define C2H_CCX_RPT_GET_BMC(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 21, 1)
125 #define C2H_CCX_RPT_SET_BMC(__c2h, __value)                                    \
126 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 21, 1, __value)
127 #define C2H_CCX_RPT_GET_LIFE_TIME_OVER(__c2h)                                  \
128 	LE_BITS_TO_4BYTE(__c2h + 0X00, 22, 1)
129 #define C2H_CCX_RPT_SET_LIFE_TIME_OVER(__c2h, __value)                         \
130 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 22, 1, __value)
131 #define C2H_CCX_RPT_GET_RETRY_OVER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 23, 1)
132 #define C2H_CCX_RPT_SET_RETRY_OVER(__c2h, __value)                             \
133 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 23, 1, __value)
134 #define C2H_CCX_RPT_GET_MACID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
135 #define C2H_CCX_RPT_SET_MACID(__c2h, __value)                                  \
136 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
137 #define C2H_CCX_RPT_GET_DATA_RETRY_CNT(__c2h)                                  \
138 	LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 6)
139 #define C2H_CCX_RPT_SET_DATA_RETRY_CNT(__c2h, __value)                         \
140 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 6, __value)
141 #define C2H_CCX_RPT_GET_QUEUE7_0(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
142 #define C2H_CCX_RPT_SET_QUEUE7_0(__c2h, __value)                               \
143 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
144 #define C2H_CCX_RPT_GET_QUEUE15_8(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 8)
145 #define C2H_CCX_RPT_SET_QUEUE15_8(__c2h, __value)                              \
146 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 8, __value)
147 #define C2H_CCX_RPT_GET_FINAL_DATA_RATE(__c2h)                                 \
148 	LE_BITS_TO_4BYTE(__c2h + 0X04, 24, 8)
149 #define C2H_CCX_RPT_SET_FINAL_DATA_RATE(__c2h, __value)                        \
150 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 24, 8, __value)
151 #define C2H_CCX_RPT_GET_SW_DEFINE_0(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 8)
152 #define C2H_CCX_RPT_SET_SW_DEFINE_0(__c2h, __value)                            \
153 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 8, __value)
154 #define C2H_CCX_RPT_GET_SW_DEFINE_1(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 8, 4)
155 #define C2H_CCX_RPT_SET_SW_DEFINE_1(__c2h, __value)                            \
156 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 8, 4, __value)
157 #define C2H_CCX_RPT_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
158 #define C2H_CCX_RPT_SET_LEN(__c2h, __value)                                    \
159 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
160 #define C2H_CCX_RPT_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
161 #define C2H_CCX_RPT_SET_TRIGGER(__c2h, __value)                                \
162 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
163 #define C2H_AP_REQ_TXRPT_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
164 #define C2H_AP_REQ_TXRPT_SET_CMD_ID(__c2h, __value)                            \
165 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
166 #define C2H_AP_REQ_TXRPT_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
167 #define C2H_AP_REQ_TXRPT_SET_SEQ(__c2h, __value)                               \
168 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
169 #define C2H_AP_REQ_TXRPT_GET_STA1_MACID(__c2h)                                 \
170 	LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
171 #define C2H_AP_REQ_TXRPT_SET_STA1_MACID(__c2h, __value)                        \
172 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
173 #define C2H_AP_REQ_TXRPT_GET_TX_OK1_0(__c2h)                                   \
174 	LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
175 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_0(__c2h, __value)                          \
176 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
177 #define C2H_AP_REQ_TXRPT_GET_TX_OK1_1(__c2h)                                   \
178 	LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
179 #define C2H_AP_REQ_TXRPT_SET_TX_OK1_1(__c2h, __value)                          \
180 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
181 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL1_0(__c2h)                                 \
182 	LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
183 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_0(__c2h, __value)                        \
184 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
185 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL1_1(__c2h)                                 \
186 	LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 8)
187 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL1_1(__c2h, __value)                        \
188 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 8, __value)
189 #define C2H_AP_REQ_TXRPT_GET_INITIAL_RATE1(__c2h)                              \
190 	LE_BITS_TO_4BYTE(__c2h + 0X04, 24, 8)
191 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE1(__c2h, __value)                     \
192 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 24, 8, __value)
193 #define C2H_AP_REQ_TXRPT_GET_STA2_MACID(__c2h)                                 \
194 	LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 8)
195 #define C2H_AP_REQ_TXRPT_SET_STA2_MACID(__c2h, __value)                        \
196 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 8, __value)
197 #define C2H_AP_REQ_TXRPT_GET_TX_OK2_0(__c2h)                                   \
198 	LE_BITS_TO_4BYTE(__c2h + 0X08, 8, 8)
199 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_0(__c2h, __value)                          \
200 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 8, 8, __value)
201 #define C2H_AP_REQ_TXRPT_GET_TX_OK2_1(__c2h)                                   \
202 	LE_BITS_TO_4BYTE(__c2h + 0X08, 16, 8)
203 #define C2H_AP_REQ_TXRPT_SET_TX_OK2_1(__c2h, __value)                          \
204 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 16, 8, __value)
205 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL2_0(__c2h)                                 \
206 	LE_BITS_TO_4BYTE(__c2h + 0X08, 24, 8)
207 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_0(__c2h, __value)                        \
208 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 24, 8, __value)
209 #define C2H_AP_REQ_TXRPT_GET_TX_FAIL2_1(__c2h)                                 \
210 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 0, 8)
211 #define C2H_AP_REQ_TXRPT_SET_TX_FAIL2_1(__c2h, __value)                        \
212 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 0, 8, __value)
213 #define C2H_AP_REQ_TXRPT_GET_INITIAL_RATE2(__c2h)                              \
214 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 8, 8)
215 #define C2H_AP_REQ_TXRPT_SET_INITIAL_RATE2(__c2h, __value)                     \
216 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 8, 8, __value)
217 #define C2H_AP_REQ_TXRPT_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
218 #define C2H_AP_REQ_TXRPT_SET_LEN(__c2h, __value)                               \
219 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
220 #define C2H_AP_REQ_TXRPT_GET_TRIGGER(__c2h)                                    \
221 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
222 #define C2H_AP_REQ_TXRPT_SET_TRIGGER(__c2h, __value)                           \
223 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
224 #define C2H_INITIAL_RATE_COLLECTION_GET_CMD_ID(__c2h)                          \
225 	LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
226 #define C2H_INITIAL_RATE_COLLECTION_SET_CMD_ID(__c2h, __value)                 \
227 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
228 #define C2H_INITIAL_RATE_COLLECTION_GET_SEQ(__c2h)                             \
229 	LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
230 #define C2H_INITIAL_RATE_COLLECTION_SET_SEQ(__c2h, __value)                    \
231 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
232 #define C2H_INITIAL_RATE_COLLECTION_GET_TRYING_BITMAP(__c2h)                   \
233 	LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 7)
234 #define C2H_INITIAL_RATE_COLLECTION_SET_TRYING_BITMAP(__c2h, __value)          \
235 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 7, __value)
236 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE1(__c2h)                   \
237 	LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
238 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE1(__c2h, __value)          \
239 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
240 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE2(__c2h)                   \
241 	LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
242 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE2(__c2h, __value)          \
243 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
244 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE3(__c2h)                   \
245 	LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
246 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE3(__c2h, __value)          \
247 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
248 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE4(__c2h)                   \
249 	LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 8)
250 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE4(__c2h, __value)          \
251 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 8, __value)
252 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE5(__c2h)                   \
253 	LE_BITS_TO_4BYTE(__c2h + 0X04, 24, 8)
254 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE5(__c2h, __value)          \
255 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 24, 8, __value)
256 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE6(__c2h)                   \
257 	LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 8)
258 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE6(__c2h, __value)          \
259 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 8, __value)
260 #define C2H_INITIAL_RATE_COLLECTION_GET_INITIAL_RATE7(__c2h)                   \
261 	LE_BITS_TO_4BYTE(__c2h + 0X08, 8, 8)
262 #define C2H_INITIAL_RATE_COLLECTION_SET_INITIAL_RATE7(__c2h, __value)          \
263 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 8, 8, __value)
264 #define C2H_INITIAL_RATE_COLLECTION_GET_LEN(__c2h)                             \
265 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
266 #define C2H_INITIAL_RATE_COLLECTION_SET_LEN(__c2h, __value)                    \
267 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
268 #define C2H_INITIAL_RATE_COLLECTION_GET_TRIGGER(__c2h)                         \
269 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
270 #define C2H_INITIAL_RATE_COLLECTION_SET_TRIGGER(__c2h, __value)                \
271 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
272 #define C2H_RA_RPT_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
273 #define C2H_RA_RPT_SET_CMD_ID(__c2h, __value)                                  \
274 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
275 #define C2H_RA_RPT_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
276 #define C2H_RA_RPT_SET_SEQ(__c2h, __value)                                     \
277 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
278 #define C2H_RA_RPT_GET_RATE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
279 #define C2H_RA_RPT_SET_RATE(__c2h, __value)                                    \
280 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
281 #define C2H_RA_RPT_GET_MACID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
282 #define C2H_RA_RPT_SET_MACID(__c2h, __value)                                   \
283 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
284 #define C2H_RA_RPT_GET_USE_LDPC(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 1)
285 #define C2H_RA_RPT_SET_USE_LDPC(__c2h, __value)                                \
286 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 1, __value)
287 #define C2H_RA_RPT_GET_USE_TXBF(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 1, 1)
288 #define C2H_RA_RPT_SET_USE_TXBF(__c2h, __value)                                \
289 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 1, 1, __value)
290 #define C2H_RA_RPT_GET_COLLISION_STATE(__c2h)                                  \
291 	LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
292 #define C2H_RA_RPT_SET_COLLISION_STATE(__c2h, __value)                         \
293 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
294 #define C2H_RA_RPT_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
295 #define C2H_RA_RPT_SET_LEN(__c2h, __value)                                     \
296 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
297 #define C2H_RA_RPT_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
298 #define C2H_RA_RPT_SET_TRIGGER(__c2h, __value)                                 \
299 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
300 #define C2H_SPECIAL_STATISTICS_GET_CMD_ID(__c2h)                               \
301 	LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
302 #define C2H_SPECIAL_STATISTICS_SET_CMD_ID(__c2h, __value)                      \
303 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
304 #define C2H_SPECIAL_STATISTICS_GET_SEQ(__c2h)                                  \
305 	LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
306 #define C2H_SPECIAL_STATISTICS_SET_SEQ(__c2h, __value)                         \
307 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
308 #define C2H_SPECIAL_STATISTICS_GET_STATISTICS_IDX(__c2h)                       \
309 	LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
310 #define C2H_SPECIAL_STATISTICS_SET_STATISTICS_IDX(__c2h, __value)              \
311 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
312 #define C2H_SPECIAL_STATISTICS_GET_DATA0(__c2h)                                \
313 	LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
314 #define C2H_SPECIAL_STATISTICS_SET_DATA0(__c2h, __value)                       \
315 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
316 #define C2H_SPECIAL_STATISTICS_GET_DATA1(__c2h)                                \
317 	LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
318 #define C2H_SPECIAL_STATISTICS_SET_DATA1(__c2h, __value)                       \
319 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
320 #define C2H_SPECIAL_STATISTICS_GET_DATA2(__c2h)                                \
321 	LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
322 #define C2H_SPECIAL_STATISTICS_SET_DATA2(__c2h, __value)                       \
323 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
324 #define C2H_SPECIAL_STATISTICS_GET_DATA3(__c2h)                                \
325 	LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 8)
326 #define C2H_SPECIAL_STATISTICS_SET_DATA3(__c2h, __value)                       \
327 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 8, __value)
328 #define C2H_SPECIAL_STATISTICS_GET_DATA4(__c2h)                                \
329 	LE_BITS_TO_4BYTE(__c2h + 0X04, 24, 8)
330 #define C2H_SPECIAL_STATISTICS_SET_DATA4(__c2h, __value)                       \
331 	SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 24, 8, __value)
332 #define C2H_SPECIAL_STATISTICS_GET_DATA5(__c2h)                                \
333 	LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 8)
334 #define C2H_SPECIAL_STATISTICS_SET_DATA5(__c2h, __value)                       \
335 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 8, __value)
336 #define C2H_SPECIAL_STATISTICS_GET_DATA6(__c2h)                                \
337 	LE_BITS_TO_4BYTE(__c2h + 0X08, 8, 8)
338 #define C2H_SPECIAL_STATISTICS_SET_DATA6(__c2h, __value)                       \
339 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 8, 8, __value)
340 #define C2H_SPECIAL_STATISTICS_GET_DATA7(__c2h)                                \
341 	LE_BITS_TO_4BYTE(__c2h + 0X08, 16, 8)
342 #define C2H_SPECIAL_STATISTICS_SET_DATA7(__c2h, __value)                       \
343 	SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 16, 8, __value)
344 #define C2H_SPECIAL_STATISTICS_GET_LEN(__c2h)                                  \
345 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
346 #define C2H_SPECIAL_STATISTICS_SET_LEN(__c2h, __value)                         \
347 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
348 #define C2H_SPECIAL_STATISTICS_GET_TRIGGER(__c2h)                              \
349 	LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
350 #define C2H_SPECIAL_STATISTICS_SET_TRIGGER(__c2h, __value)                     \
351 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
352 #define C2H_RA_PARA_RPT_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
353 #define C2H_RA_PARA_RPT_SET_CMD_ID(__c2h, __value)                             \
354 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
355 #define C2H_RA_PARA_RPT_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
356 #define C2H_RA_PARA_RPT_SET_SEQ(__c2h, __value)                                \
357 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
358 #define C2H_RA_PARA_RPT_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
359 #define C2H_RA_PARA_RPT_SET_LEN(__c2h, __value)                                \
360 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
361 #define C2H_RA_PARA_RPT_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
362 #define C2H_RA_PARA_RPT_SET_TRIGGER(__c2h, __value)                            \
363 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
364 #define C2H_CUR_CHANNEL_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
365 #define C2H_CUR_CHANNEL_SET_CMD_ID(__c2h, __value)                             \
366 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
367 #define C2H_CUR_CHANNEL_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
368 #define C2H_CUR_CHANNEL_SET_SEQ(__c2h, __value)                                \
369 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
370 #define C2H_CUR_CHANNEL_GET_CHANNEL_NUM(__c2h)                                 \
371 	LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
372 #define C2H_CUR_CHANNEL_SET_CHANNEL_NUM(__c2h, __value)                        \
373 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
374 #define C2H_CUR_CHANNEL_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
375 #define C2H_CUR_CHANNEL_SET_LEN(__c2h, __value)                                \
376 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
377 #define C2H_CUR_CHANNEL_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
378 #define C2H_CUR_CHANNEL_SET_TRIGGER(__c2h, __value)                            \
379 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
380 #define C2H_GPIO_WAKEUP_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
381 #define C2H_GPIO_WAKEUP_SET_CMD_ID(__c2h, __value)                             \
382 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
383 #define C2H_GPIO_WAKEUP_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
384 #define C2H_GPIO_WAKEUP_SET_SEQ(__c2h, __value)                                \
385 	SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
386 #define C2H_GPIO_WAKEUP_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 16, 8)
387 #define C2H_GPIO_WAKEUP_SET_LEN(__c2h, __value)                                \
388 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 16, 8, __value)
389 #define C2H_GPIO_WAKEUP_GET_TRIGGER(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X0C, 24, 8)
390 #define C2H_GPIO_WAKEUP_SET_TRIGGER(__c2h, __value)                            \
391 	SET_BITS_TO_LE_4BYTE(__c2h + 0X0C, 24, 8, __value)
392 #endif
393