xref: /wlan-driver/fw-api/hw/qca6750/v1/reo_flush_timeout_list.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2020 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 //
20 // DO NOT EDIT!  This file is automatically generated
21 //               These definitions are tied to a particular hardware layout
22 
23 
24 #ifndef _REO_FLUSH_TIMEOUT_LIST_H_
25 #define _REO_FLUSH_TIMEOUT_LIST_H_
26 #if !defined(__ASSEMBLER__)
27 #endif
28 
29 #include "uniform_reo_cmd_header.h"
30 
31 // ################ START SUMMARY #################
32 //
33 //	Dword	Fields
34 //	0	struct uniform_reo_cmd_header cmd_header;
35 //	1	ac_timout_list[1:0], reserved_1[31:2]
36 //	2	minimum_release_desc_count[15:0], minimum_forward_buf_count[31:16]
37 //	3	reserved_3a[31:0]
38 //	4	reserved_4a[31:0]
39 //	5	reserved_5a[31:0]
40 //	6	reserved_6a[31:0]
41 //	7	reserved_7a[31:0]
42 //	8	reserved_8a[31:0]
43 //
44 // ################ END SUMMARY #################
45 
46 #define NUM_OF_DWORDS_REO_FLUSH_TIMEOUT_LIST 9
47 
48 struct reo_flush_timeout_list {
49     struct            uniform_reo_cmd_header                       cmd_header;
50              uint32_t ac_timout_list                  :  2, //[1:0]
51                       reserved_1                      : 30; //[31:2]
52              uint32_t minimum_release_desc_count      : 16, //[15:0]
53                       minimum_forward_buf_count       : 16; //[31:16]
54              uint32_t reserved_3a                     : 32; //[31:0]
55              uint32_t reserved_4a                     : 32; //[31:0]
56              uint32_t reserved_5a                     : 32; //[31:0]
57              uint32_t reserved_6a                     : 32; //[31:0]
58              uint32_t reserved_7a                     : 32; //[31:0]
59              uint32_t reserved_8a                     : 32; //[31:0]
60 };
61 
62 /*
63 
64 struct uniform_reo_cmd_header cmd_header
65 
66 			Consumer: REO
67 
68 			Producer: SW
69 
70 
71 
72 			Details for command execution tracking purposes.
73 
74 ac_timout_list
75 
76 			Consumer: REO
77 
78 			Producer: SW
79 
80 
81 
82 			The AC_timeout list to be used for this command
83 
84 			<legal all>
85 
86 reserved_1
87 
88 			<legal 0>
89 
90 minimum_release_desc_count
91 
92 			Consumer: REO
93 
94 			Producer: SW
95 
96 
97 
98 			The minimum number of link descriptors requested to be
99 			released. If set to 0, only buffer release counts seems to
100 			be important... When set to very high value, likely the
101 			entire timeout list will be exhausted before this count is
102 			reached or maybe this count will not get reached. REO
103 			however will stop here as it can not do anything else.
104 
105 
106 
107 			When both this field and field Minimum_forward_buf_count
108 			are > 0, REO needs to meet both requirements. When both
109 			entries are 0 (which should be a programming error), REO
110 			does not need to do anything.
111 
112 
113 
114 			Note that this includes counts of MPDU link Desc as well
115 			as MSDU link Desc. Where the count of MSDU link Desc is not
116 			known to REO it's approximated by deriving from MSDU count
117 
118 			<legal all>
119 
120 minimum_forward_buf_count
121 
122 			Consumer: REO
123 
124 			Producer: SW
125 
126 
127 
128 			The minimum number of buffer descriptors requested to be
129 			passed on to the REO destination rings.
130 
131 
132 
133 			If set to 0, only descriptor release counts seems to be
134 			important...
135 
136 
137 
138 			When set to very high value, likely the entire timeout
139 			list will be exhausted before this count is reached or maybe
140 			this count will not get reached. REO however will stop here
141 			as it can not do anything else.
142 
143 
144 
145 			Note that REO does not know the exact buffer count. This
146 			can be approximated by using the MSDU_COUNT
147 
148 			<legal all>
149 
150 reserved_3a
151 
152 			<legal 0>
153 
154 reserved_4a
155 
156 			<legal 0>
157 
158 reserved_5a
159 
160 			<legal 0>
161 
162 reserved_6a
163 
164 			<legal 0>
165 
166 reserved_7a
167 
168 			<legal 0>
169 
170 reserved_8a
171 
172 			<legal 0>
173 */
174 
175 
176  /* EXTERNAL REFERENCE : struct uniform_reo_cmd_header cmd_header */
177 
178 
179 /* Description		REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER
180 
181 			Consumer: REO/SW/DEBUG
182 
183 			Producer: SW
184 
185 
186 
187 			This number can be used by SW to track, identify and
188 			link the created commands with the command statusses
189 
190 
191 
192 
193 
194 			<legal all>
195 */
196 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_OFFSET    0x00000000
197 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_LSB       0
198 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_MASK      0x0000ffff
199 
200 /* Description		REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED
201 
202 			Consumer: REO
203 
204 			Producer: SW
205 
206 
207 
208 			<enum 0 NoStatus> REO does not need to generate a status
209 			TLV for the execution of this command
210 
211 			<enum 1 StatusRequired> REO shall generate a status TLV
212 			for the execution of this command
213 
214 
215 
216 			<legal all>
217 */
218 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_OFFSET 0x00000000
219 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_LSB  16
220 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_MASK 0x00010000
221 
222 /* Description		REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A
223 
224 			<legal 0>
225 */
226 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_OFFSET       0x00000000
227 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_LSB          17
228 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_MASK         0xfffe0000
229 
230 /* Description		REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST
231 
232 			Consumer: REO
233 
234 			Producer: SW
235 
236 
237 
238 			The AC_timeout list to be used for this command
239 
240 			<legal all>
241 */
242 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_OFFSET               0x00000004
243 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_LSB                  0
244 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_MASK                 0x00000003
245 
246 /* Description		REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1
247 
248 			<legal 0>
249 */
250 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_OFFSET                   0x00000004
251 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_LSB                      2
252 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_MASK                     0xfffffffc
253 
254 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT
255 
256 			Consumer: REO
257 
258 			Producer: SW
259 
260 
261 
262 			The minimum number of link descriptors requested to be
263 			released. If set to 0, only buffer release counts seems to
264 			be important... When set to very high value, likely the
265 			entire timeout list will be exhausted before this count is
266 			reached or maybe this count will not get reached. REO
267 			however will stop here as it can not do anything else.
268 
269 
270 
271 			When both this field and field Minimum_forward_buf_count
272 			are > 0, REO needs to meet both requirements. When both
273 			entries are 0 (which should be a programming error), REO
274 			does not need to do anything.
275 
276 
277 
278 			Note that this includes counts of MPDU link Desc as well
279 			as MSDU link Desc. Where the count of MSDU link Desc is not
280 			known to REO it's approximated by deriving from MSDU count
281 
282 			<legal all>
283 */
284 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_OFFSET   0x00000008
285 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_LSB      0
286 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_MASK     0x0000ffff
287 
288 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT
289 
290 			Consumer: REO
291 
292 			Producer: SW
293 
294 
295 
296 			The minimum number of buffer descriptors requested to be
297 			passed on to the REO destination rings.
298 
299 
300 
301 			If set to 0, only descriptor release counts seems to be
302 			important...
303 
304 
305 
306 			When set to very high value, likely the entire timeout
307 			list will be exhausted before this count is reached or maybe
308 			this count will not get reached. REO however will stop here
309 			as it can not do anything else.
310 
311 
312 
313 			Note that REO does not know the exact buffer count. This
314 			can be approximated by using the MSDU_COUNT
315 
316 			<legal all>
317 */
318 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_OFFSET    0x00000008
319 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_LSB       16
320 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_MASK      0xffff0000
321 
322 /* Description		REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A
323 
324 			<legal 0>
325 */
326 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_OFFSET                  0x0000000c
327 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_LSB                     0
328 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_MASK                    0xffffffff
329 
330 /* Description		REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A
331 
332 			<legal 0>
333 */
334 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_OFFSET                  0x00000010
335 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_LSB                     0
336 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_MASK                    0xffffffff
337 
338 /* Description		REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A
339 
340 			<legal 0>
341 */
342 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_OFFSET                  0x00000014
343 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_LSB                     0
344 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_MASK                    0xffffffff
345 
346 /* Description		REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A
347 
348 			<legal 0>
349 */
350 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_OFFSET                  0x00000018
351 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_LSB                     0
352 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_MASK                    0xffffffff
353 
354 /* Description		REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A
355 
356 			<legal 0>
357 */
358 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_OFFSET                  0x0000001c
359 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_LSB                     0
360 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_MASK                    0xffffffff
361 
362 /* Description		REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A
363 
364 			<legal 0>
365 */
366 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_OFFSET                  0x00000020
367 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_LSB                     0
368 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_MASK                    0xffffffff
369 
370 
371 #endif // _REO_FLUSH_TIMEOUT_LIST_H_
372