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