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