GNU Linux-libre 4.14.266-gnu1
[releases.git] / drivers / staging / rtlwifi / halmac / halmac_fw_offload_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_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_
26 #define _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_
27 #define C2H_SUB_CMD_ID_C2H_DBG 0X00
28 #define C2H_SUB_CMD_ID_BT_COEX_INFO 0X02
29 #define C2H_SUB_CMD_ID_SCAN_STATUS_RPT 0X03
30 #define C2H_SUB_CMD_ID_H2C_ACK_HDR 0X01
31 #define C2H_SUB_CMD_ID_CFG_PARAMETER_ACK 0X01
32 #define C2H_SUB_CMD_ID_BT_COEX_ACK 0X01
33 #define C2H_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0X01
34 #define C2H_SUB_CMD_ID_UPDATE_PACKET_ACK 0X01
35 #define C2H_SUB_CMD_ID_UPDATE_DATAPACK_ACK 0X01
36 #define C2H_SUB_CMD_ID_RUN_DATAPACK_ACK 0X01
37 #define C2H_SUB_CMD_ID_CHANNEL_SWITCH_ACK 0X01
38 #define C2H_SUB_CMD_ID_IQK_ACK 0X01
39 #define C2H_SUB_CMD_ID_POWER_TRACKING_ACK 0X01
40 #define C2H_SUB_CMD_ID_PSD_ACK 0X01
41 #define C2H_SUB_CMD_ID_PSD_DATA 0X04
42 #define C2H_SUB_CMD_ID_EFUSE_DATA 0X05
43 #define C2H_SUB_CMD_ID_IQK_DATA 0X06
44 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_DBG 0X07
45 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_2_DBG 0X08
46 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_3_DBG 0X09
47 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_4_DBG 0X0A
48 #define C2H_SUB_CMD_ID_FTMACKRPT_HDL_DBG 0X0B
49 #define C2H_SUB_CMD_ID_FTMC2H_RPT 0X0C
50 #define C2H_SUB_CMD_ID_DRVFTMC2H_RPT 0X0D
51 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_5_DBG 0X0E
52 #define C2H_SUB_CMD_ID_CCX_RPT 0X0F
53 #define C2H_SUB_CMD_ID_C2H_PKT_NAN_RPT 0X10
54 #define H2C_SUB_CMD_ID_CFG_PARAMETER_ACK SUB_CMD_ID_CFG_PARAMETER
55 #define H2C_SUB_CMD_ID_BT_COEX_ACK SUB_CMD_ID_BT_COEX
56 #define H2C_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK SUB_CMD_ID_DUMP_PHYSICAL_EFUSE
57 #define H2C_SUB_CMD_ID_UPDATE_PACKET_ACK SUB_CMD_ID_UPDATE_PACKET
58 #define H2C_SUB_CMD_ID_UPDATE_DATAPACK_ACK SUB_CMD_ID_UPDATE_DATAPACK
59 #define H2C_SUB_CMD_ID_RUN_DATAPACK_ACK SUB_CMD_ID_RUN_DATAPACK
60 #define H2C_SUB_CMD_ID_CHANNEL_SWITCH_ACK SUB_CMD_ID_CHANNEL_SWITCH
61 #define H2C_SUB_CMD_ID_IQK_ACK SUB_CMD_ID_IQK
62 #define H2C_SUB_CMD_ID_POWER_TRACKING_ACK SUB_CMD_ID_POWER_TRACKING
63 #define H2C_SUB_CMD_ID_PSD_ACK SUB_CMD_ID_PSD
64 #define H2C_SUB_CMD_ID_CCX_RPT SUB_CMD_ID_CCX_RPT
65 #define H2C_CMD_ID_CFG_PARAMETER_ACK 0XFF
66 #define H2C_CMD_ID_BT_COEX_ACK 0XFF
67 #define H2C_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0XFF
68 #define H2C_CMD_ID_UPDATE_PACKET_ACK 0XFF
69 #define H2C_CMD_ID_UPDATE_DATAPACK_ACK 0XFF
70 #define H2C_CMD_ID_RUN_DATAPACK_ACK 0XFF
71 #define H2C_CMD_ID_CHANNEL_SWITCH_ACK 0XFF
72 #define H2C_CMD_ID_IQK_ACK 0XFF
73 #define H2C_CMD_ID_POWER_TRACKING_ACK 0XFF
74 #define H2C_CMD_ID_PSD_ACK 0XFF
75 #define H2C_CMD_ID_CCX_RPT 0XFF
76 #define C2H_HDR_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8)
77 #define C2H_HDR_SET_CMD_ID(__c2h, __value)                                     \
78         SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value)
79 #define C2H_HDR_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8)
80 #define C2H_HDR_SET_SEQ(__c2h, __value)                                        \
81         SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value)
82 #define C2H_HDR_GET_C2H_SUB_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8)
83 #define C2H_HDR_SET_C2H_SUB_CMD_ID(__c2h, __value)                             \
84         SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value)
85 #define C2H_HDR_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8)
86 #define C2H_HDR_SET_LEN(__c2h, __value)                                        \
87         SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value)
88 #define C2H_DBG_GET_DBG_MSG(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
89 #define C2H_DBG_SET_DBG_MSG(__c2h, __value)                                    \
90         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
91 #define BT_COEX_INFO_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
92 #define BT_COEX_INFO_SET_DATA_START(__c2h, __value)                            \
93         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
94 #define SCAN_STATUS_RPT_GET_H2C_RETURN_CODE(__c2h)                             \
95         LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
96 #define SCAN_STATUS_RPT_SET_H2C_RETURN_CODE(__c2h, __value)                    \
97         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
98 #define SCAN_STATUS_RPT_GET_H2C_SEQ(__c2h)                                     \
99         LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16)
100 #define SCAN_STATUS_RPT_SET_H2C_SEQ(__c2h, __value)                            \
101         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value)
102 #define H2C_ACK_HDR_GET_H2C_RETURN_CODE(__c2h)                                 \
103         LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8)
104 #define H2C_ACK_HDR_SET_H2C_RETURN_CODE(__c2h, __value)                        \
105         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value)
106 #define H2C_ACK_HDR_GET_H2C_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
107 #define H2C_ACK_HDR_SET_H2C_CMD_ID(__c2h, __value)                             \
108         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
109 #define H2C_ACK_HDR_GET_H2C_SUB_CMD_ID(__c2h)                                  \
110         LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16)
111 #define H2C_ACK_HDR_SET_H2C_SUB_CMD_ID(__c2h, __value)                         \
112         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value)
113 #define H2C_ACK_HDR_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 16)
114 #define H2C_ACK_HDR_SET_H2C_SEQ(__c2h, __value)                                \
115         SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 16, __value)
116 #define CFG_PARAMETER_ACK_GET_OFFSET_ACCUMULATION(__c2h)                       \
117         LE_BITS_TO_4BYTE(__c2h + 0XC, 0, 32)
118 #define CFG_PARAMETER_ACK_SET_OFFSET_ACCUMULATION(__c2h, __value)              \
119         SET_BITS_TO_LE_4BYTE(__c2h + 0XC, 0, 32, __value)
120 #define CFG_PARAMETER_ACK_GET_VALUE_ACCUMULATION(__c2h)                        \
121         LE_BITS_TO_4BYTE(__c2h + 0X10, 0, 32)
122 #define CFG_PARAMETER_ACK_SET_VALUE_ACCUMULATION(__c2h, __value)               \
123         SET_BITS_TO_LE_4BYTE(__c2h + 0X10, 0, 32, __value)
124 #define BT_COEX_ACK_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0XC, 0, 8)
125 #define BT_COEX_ACK_SET_DATA_START(__c2h, __value)                             \
126         SET_BITS_TO_LE_4BYTE(__c2h + 0XC, 0, 8, __value)
127 #define PSD_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7)
128 #define PSD_DATA_SET_SEGMENT_ID(__c2h, __value)                                \
129         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value)
130 #define PSD_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1)
131 #define PSD_DATA_SET_END_SEGMENT(__c2h, __value)                               \
132         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value)
133 #define PSD_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
134 #define PSD_DATA_SET_SEGMENT_SIZE(__c2h, __value)                              \
135         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
136 #define PSD_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16)
137 #define PSD_DATA_SET_TOTAL_SIZE(__c2h, __value)                                \
138         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value)
139 #define PSD_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16)
140 #define PSD_DATA_SET_H2C_SEQ(__c2h, __value)                                   \
141         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value)
142 #define PSD_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8)
143 #define PSD_DATA_SET_DATA_START(__c2h, __value)                                \
144         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value)
145 #define EFUSE_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7)
146 #define EFUSE_DATA_SET_SEGMENT_ID(__c2h, __value)                              \
147         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value)
148 #define EFUSE_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1)
149 #define EFUSE_DATA_SET_END_SEGMENT(__c2h, __value)                             \
150         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value)
151 #define EFUSE_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
152 #define EFUSE_DATA_SET_SEGMENT_SIZE(__c2h, __value)                            \
153         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
154 #define EFUSE_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16)
155 #define EFUSE_DATA_SET_TOTAL_SIZE(__c2h, __value)                              \
156         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value)
157 #define EFUSE_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16)
158 #define EFUSE_DATA_SET_H2C_SEQ(__c2h, __value)                                 \
159         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value)
160 #define EFUSE_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8)
161 #define EFUSE_DATA_SET_DATA_START(__c2h, __value)                              \
162         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value)
163 #define IQK_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7)
164 #define IQK_DATA_SET_SEGMENT_ID(__c2h, __value)                                \
165         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value)
166 #define IQK_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1)
167 #define IQK_DATA_SET_END_SEGMENT(__c2h, __value)                               \
168         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value)
169 #define IQK_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8)
170 #define IQK_DATA_SET_SEGMENT_SIZE(__c2h, __value)                              \
171         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value)
172 #define IQK_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16)
173 #define IQK_DATA_SET_TOTAL_SIZE(__c2h, __value)                                \
174         SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value)
175 #define IQK_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16)
176 #define IQK_DATA_SET_H2C_SEQ(__c2h, __value)                                   \
177         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value)
178 #define IQK_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8)
179 #define IQK_DATA_SET_DATA_START(__c2h, __value)                                \
180         SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value)
181 #define CCX_RPT_GET_CCX_RPT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X4, 0, 129)
182 #define CCX_RPT_SET_CCX_RPT(__c2h, __value)                                    \
183         SET_BITS_TO_LE_4BYTE(__c2h + 0X4, 0, 129, __value)
184 #endif