• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * Copyright(c) 2016 - 2019 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_H2CEXTRAINFO_H2C_C2H_AP_H_
17 #define _HAL_H2CEXTRAINFO_H2C_C2H_AP_H_
18 
19 /* H2C extra info (rsvd page) usage, unit : page (128byte)*/
20 /* dlfw : not include txdesc size*/
21 /* update pkt : not include txdesc size*/
22 /* cfg param : not include txdesc size*/
23 /* scan info : not include txdesc size*/
24 /* dl flash : not include txdesc size*/
25 #define DLFW_RSVDPG_SIZE 2048
26 #define UPDATE_PKT_RSVDPG_SIZE 2048
27 #define CFG_PARAM_RSVDPG_SIZE 2048
28 #define SCAN_INFO_RSVDPG_SIZE 256
29 #define DL_FLASH_RSVDPG_SIZE 2048
30 /* su0 snding pkt : include txdesc size */
31 #define SU0_SNDING_PKT_OFFSET 0
32 #define SU0_SNDING_PKT_RSVDPG_SIZE 128
33 
34 #define PARAM_INFO_GET_LEN(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 8)
35 #define PARAM_INFO_SET_LEN(extra_info, value)                                  \
36 	SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 8, value)
37 #define PARAM_INFO_SET_LEN_NO_CLR(extra_info, value)                           \
38 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 8, value)
39 #define PARAM_INFO_GET_IO_CMD(extra_info) GET_C2H_FIELD(extra_info + 0X00, 8, 7)
40 #define PARAM_INFO_SET_IO_CMD(extra_info, value)                               \
41 	SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 7, value)
42 #define PARAM_INFO_SET_IO_CMD_NO_CLR(extra_info, value)                        \
43 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 7, value)
44 #define PARAM_INFO_GET_MSK_EN(extra_info)                                      \
45 	GET_C2H_FIELD(extra_info + 0X00, 15, 1)
46 #define PARAM_INFO_SET_MSK_EN(extra_info, value)                               \
47 	SET_C2H_FIELD_CLR(extra_info + 0X00, 15, 1, value)
48 #define PARAM_INFO_SET_MSK_EN_NO_CLR(extra_info, value)                        \
49 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 15, 1, value)
50 #define PARAM_INFO_GET_LLT_PG_BNDY(extra_info)                                 \
51 	GET_C2H_FIELD(extra_info + 0X00, 16, 8)
52 #define PARAM_INFO_SET_LLT_PG_BNDY(extra_info, value)                          \
53 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value)
54 #define PARAM_INFO_SET_LLT_PG_BNDY_NO_CLR(extra_info, value)                   \
55 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value)
56 #define PARAM_INFO_GET_EFUSE_RSVDPAGE_LOC(extra_info)                          \
57 	GET_C2H_FIELD(extra_info + 0X00, 16, 8)
58 #define PARAM_INFO_SET_EFUSE_RSVDPAGE_LOC(extra_info, value)                   \
59 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value)
60 #define PARAM_INFO_SET_EFUSE_RSVDPAGE_LOC_NO_CLR(extra_info, value)            \
61 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value)
62 #define PARAM_INFO_GET_EFUSE_PATCH_EN(extra_info)                              \
63 	GET_C2H_FIELD(extra_info + 0X00, 16, 8)
64 #define PARAM_INFO_SET_EFUSE_PATCH_EN(extra_info, value)                       \
65 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value)
66 #define PARAM_INFO_SET_EFUSE_PATCH_EN_NO_CLR(extra_info, value)                \
67 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value)
68 #define PARAM_INFO_GET_RF_ADDR(extra_info)                                     \
69 	GET_C2H_FIELD(extra_info + 0X00, 16, 8)
70 #define PARAM_INFO_SET_RF_ADDR(extra_info, value)                              \
71 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value)
72 #define PARAM_INFO_SET_RF_ADDR_NO_CLR(extra_info, value)                       \
73 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value)
74 #define PARAM_INFO_GET_IO_ADDR(extra_info)                                     \
75 	GET_C2H_FIELD(extra_info + 0X00, 16, 16)
76 #define PARAM_INFO_SET_IO_ADDR(extra_info, value)                              \
77 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value)
78 #define PARAM_INFO_SET_IO_ADDR_NO_CLR(extra_info, value)                       \
79 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value)
80 #define PARAM_INFO_GET_DELAY_VAL(extra_info)                                   \
81 	GET_C2H_FIELD(extra_info + 0X00, 16, 16)
82 #define PARAM_INFO_SET_DELAY_VAL(extra_info, value)                            \
83 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value)
84 #define PARAM_INFO_SET_DELAY_VAL_NO_CLR(extra_info, value)                     \
85 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value)
86 #define PARAM_INFO_GET_RF_PATH(extra_info)                                     \
87 	GET_C2H_FIELD(extra_info + 0X00, 24, 8)
88 #define PARAM_INFO_SET_RF_PATH(extra_info, value)                              \
89 	SET_C2H_FIELD_CLR(extra_info + 0X00, 24, 8, value)
90 #define PARAM_INFO_SET_RF_PATH_NO_CLR(extra_info, value)                       \
91 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 24, 8, value)
92 #define PARAM_INFO_GET_DATA(extra_info) GET_C2H_FIELD(extra_info + 0X04, 0, 32)
93 #define PARAM_INFO_SET_DATA(extra_info, value)                                 \
94 	SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 32, value)
95 #define PARAM_INFO_SET_DATA_NO_CLR(extra_info, value)                          \
96 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 32, value)
97 #define PARAM_INFO_GET_MASK(extra_info) GET_C2H_FIELD(extra_info + 0X08, 0, 32)
98 #define PARAM_INFO_SET_MASK(extra_info, value)                                 \
99 	SET_C2H_FIELD_CLR(extra_info + 0X08, 0, 32, value)
100 #define PARAM_INFO_SET_MASK_NO_CLR(extra_info, value)                          \
101 	SET_C2H_FIELD_NO_CLR(extra_info + 0X08, 0, 32, value)
102 #define CH_INFO_GET_CH(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 8)
103 #define CH_INFO_SET_CH(extra_info, value)                                      \
104 	SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 8, value)
105 #define CH_INFO_SET_CH_NO_CLR(extra_info, value)                               \
106 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 8, value)
107 #define CH_INFO_GET_PRI_CH_IDX(extra_info)                                     \
108 	GET_C2H_FIELD(extra_info + 0X00, 8, 4)
109 #define CH_INFO_SET_PRI_CH_IDX(extra_info, value)                              \
110 	SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 4, value)
111 #define CH_INFO_SET_PRI_CH_IDX_NO_CLR(extra_info, value)                       \
112 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 4, value)
113 #define CH_INFO_GET_BW(extra_info) GET_C2H_FIELD(extra_info + 0X00, 12, 4)
114 #define CH_INFO_SET_BW(extra_info, value)                                      \
115 	SET_C2H_FIELD_CLR(extra_info + 0X00, 12, 4, value)
116 #define CH_INFO_SET_BW_NO_CLR(extra_info, value)                               \
117 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 12, 4, value)
118 #define CH_INFO_GET_TIMEOUT(extra_info) GET_C2H_FIELD(extra_info + 0X00, 16, 8)
119 #define CH_INFO_SET_TIMEOUT(extra_info, value)                                 \
120 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 8, value)
121 #define CH_INFO_SET_TIMEOUT_NO_CLR(extra_info, value)                          \
122 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 8, value)
123 #define CH_INFO_GET_ACTION_ID(extra_info)                                      \
124 	GET_C2H_FIELD(extra_info + 0X00, 24, 7)
125 #define CH_INFO_SET_ACTION_ID(extra_info, value)                               \
126 	SET_C2H_FIELD_CLR(extra_info + 0X00, 24, 7, value)
127 #define CH_INFO_SET_ACTION_ID_NO_CLR(extra_info, value)                        \
128 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 24, 7, value)
129 #define CH_INFO_GET_EXTRA_INFO(extra_info)                                     \
130 	GET_C2H_FIELD(extra_info + 0X00, 31, 1)
131 #define CH_INFO_SET_EXTRA_INFO(extra_info, value)                              \
132 	SET_C2H_FIELD_CLR(extra_info + 0X00, 31, 1, value)
133 #define CH_INFO_SET_EXTRA_INFO_NO_CLR(extra_info, value)                       \
134 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 31, 1, value)
135 #define CH_EXTRA_INFO_GET_ID(extra_info) GET_C2H_FIELD(extra_info + 0X00, 0, 7)
136 #define CH_EXTRA_INFO_SET_ID(extra_info, value)                                \
137 	SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 7, value)
138 #define CH_EXTRA_INFO_SET_ID_NO_CLR(extra_info, value)                         \
139 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 7, value)
140 #define CH_EXTRA_INFO_GET_INFO(extra_info)                                     \
141 	GET_C2H_FIELD(extra_info + 0X00, 7, 1)
142 #define CH_EXTRA_INFO_SET_INFO(extra_info, value)                              \
143 	SET_C2H_FIELD_CLR(extra_info + 0X00, 7, 1, value)
144 #define CH_EXTRA_INFO_SET_INFO_NO_CLR(extra_info, value)                       \
145 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 7, 1, value)
146 #define CH_EXTRA_INFO_GET_SIZE(extra_info)                                     \
147 	GET_C2H_FIELD(extra_info + 0X00, 8, 8)
148 #define CH_EXTRA_INFO_SET_SIZE(extra_info, value)                              \
149 	SET_C2H_FIELD_CLR(extra_info + 0X00, 8, 8, value)
150 #define CH_EXTRA_INFO_SET_SIZE_NO_CLR(extra_info, value)                       \
151 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 8, 8, value)
152 #define CH_EXTRA_INFO_GET_DATA(extra_info)                                     \
153 	GET_C2H_FIELD(extra_info + 0X00, 16, 1)
154 #define CH_EXTRA_INFO_SET_DATA(extra_info, value)                              \
155 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 1, value)
156 #define CH_EXTRA_INFO_SET_DATA_NO_CLR(extra_info, value)                       \
157 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 1, value)
158 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_L(extra_info)                       \
159 	GET_C2H_FIELD(extra_info + 0X00, 0, 16)
160 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_L(extra_info, value)                \
161 	SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 16, value)
162 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_L_NO_CLR(extra_info, value)         \
163 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 16, value)
164 #define HIOE_INSTRUCTION_INFO_GET_BITDATA(extra_info)                          \
165 	GET_C2H_FIELD(extra_info + 0X00, 0, 16)
166 #define HIOE_INSTRUCTION_INFO_SET_BITDATA(extra_info, value)                   \
167 	SET_C2H_FIELD_CLR(extra_info + 0X00, 0, 16, value)
168 #define HIOE_INSTRUCTION_INFO_SET_BITDATA_NO_CLR(extra_info, value)            \
169 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 0, 16, value)
170 #define HIOE_INSTRUCTION_INFO_GET_BYTEDATA_H(extra_info)                       \
171 	GET_C2H_FIELD(extra_info + 0X00, 16, 16)
172 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_H(extra_info, value)                \
173 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value)
174 #define HIOE_INSTRUCTION_INFO_SET_BYTEDATA_H_NO_CLR(extra_info, value)         \
175 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value)
176 #define HIOE_INSTRUCTION_INFO_GET_BITMASK(extra_info)                          \
177 	GET_C2H_FIELD(extra_info + 0X00, 16, 16)
178 #define HIOE_INSTRUCTION_INFO_SET_BITMASK(extra_info, value)                   \
179 	SET_C2H_FIELD_CLR(extra_info + 0X00, 16, 16, value)
180 #define HIOE_INSTRUCTION_INFO_SET_BITMASK_NO_CLR(extra_info, value)            \
181 	SET_C2H_FIELD_NO_CLR(extra_info + 0X00, 16, 16, value)
182 #define HIOE_INSTRUCTION_INFO_GET_REG_ADDR(extra_info)                         \
183 	GET_C2H_FIELD(extra_info + 0X04, 0, 22)
184 #define HIOE_INSTRUCTION_INFO_SET_REG_ADDR(extra_info, value)                  \
185 	SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 22, value)
186 #define HIOE_INSTRUCTION_INFO_SET_REG_ADDR_NO_CLR(extra_info, value)           \
187 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 22, value)
188 #define HIOE_INSTRUCTION_INFO_GET_DELAY_VALUE(extra_info)                      \
189 	GET_C2H_FIELD(extra_info + 0X04, 0, 22)
190 #define HIOE_INSTRUCTION_INFO_SET_DELAY_VALUE(extra_info, value)               \
191 	SET_C2H_FIELD_CLR(extra_info + 0X04, 0, 22, value)
192 #define HIOE_INSTRUCTION_INFO_SET_DELAY_VALUE_NO_CLR(extra_info, value)        \
193 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 0, 22, value)
194 #define HIOE_INSTRUCTION_INFO_GET_MODE_SELECT(extra_info)                      \
195 	GET_C2H_FIELD(extra_info + 0X04, 22, 1)
196 #define HIOE_INSTRUCTION_INFO_SET_MODE_SELECT(extra_info, value)               \
197 	SET_C2H_FIELD_CLR(extra_info + 0X04, 22, 1, value)
198 #define HIOE_INSTRUCTION_INFO_SET_MODE_SELECT_NO_CLR(extra_info, value)        \
199 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 22, 1, value)
200 #define HIOE_INSTRUCTION_INFO_GET_IO_DELAY(extra_info)                         \
201 	GET_C2H_FIELD(extra_info + 0X04, 23, 1)
202 #define HIOE_INSTRUCTION_INFO_SET_IO_DELAY(extra_info, value)                  \
203 	SET_C2H_FIELD_CLR(extra_info + 0X04, 23, 1, value)
204 #define HIOE_INSTRUCTION_INFO_SET_IO_DELAY_NO_CLR(extra_info, value)           \
205 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 23, 1, value)
206 #define HIOE_INSTRUCTION_INFO_GET_BYTEMASK(extra_info)                         \
207 	GET_C2H_FIELD(extra_info + 0X04, 24, 4)
208 #define HIOE_INSTRUCTION_INFO_SET_BYTEMASK(extra_info, value)                  \
209 	SET_C2H_FIELD_CLR(extra_info + 0X04, 24, 4, value)
210 #define HIOE_INSTRUCTION_INFO_SET_BYTEMASK_NO_CLR(extra_info, value)           \
211 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 24, 4, value)
212 #define HIOE_INSTRUCTION_INFO_GET_RD_EN(extra_info)                            \
213 	GET_C2H_FIELD(extra_info + 0X04, 28, 1)
214 #define HIOE_INSTRUCTION_INFO_SET_RD_EN(extra_info, value)                     \
215 	SET_C2H_FIELD_CLR(extra_info + 0X04, 28, 1, value)
216 #define HIOE_INSTRUCTION_INFO_SET_RD_EN_NO_CLR(extra_info, value)              \
217 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 28, 1, value)
218 #define HIOE_INSTRUCTION_INFO_GET_WR_EN(extra_info)                            \
219 	GET_C2H_FIELD(extra_info + 0X04, 29, 1)
220 #define HIOE_INSTRUCTION_INFO_SET_WR_EN(extra_info, value)                     \
221 	SET_C2H_FIELD_CLR(extra_info + 0X04, 29, 1, value)
222 #define HIOE_INSTRUCTION_INFO_SET_WR_EN_NO_CLR(extra_info, value)              \
223 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 29, 1, value)
224 #define HIOE_INSTRUCTION_INFO_GET_RAW_R(extra_info)                            \
225 	GET_C2H_FIELD(extra_info + 0X04, 30, 1)
226 #define HIOE_INSTRUCTION_INFO_SET_RAW_R(extra_info, value)                     \
227 	SET_C2H_FIELD_CLR(extra_info + 0X04, 30, 1, value)
228 #define HIOE_INSTRUCTION_INFO_SET_RAW_R_NO_CLR(extra_info, value)              \
229 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 30, 1, value)
230 #define HIOE_INSTRUCTION_INFO_GET_RAW(extra_info)                              \
231 	GET_C2H_FIELD(extra_info + 0X04, 31, 1)
232 #define HIOE_INSTRUCTION_INFO_SET_RAW(extra_info, value)                       \
233 	SET_C2H_FIELD_CLR(extra_info + 0X04, 31, 1, value)
234 #define HIOE_INSTRUCTION_INFO_SET_RAW_NO_CLR(extra_info, value)                \
235 	SET_C2H_FIELD_NO_CLR(extra_info + 0X04, 31, 1, value)
236 #endif
237