xref: /wlan-driver/fw-api/hw/qca6290/v2/reo_flush_timeout_list.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2016-2017 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 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_OFFSET 0x00000000
176 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_LSB 0
177 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_MASK 0xffffffff
178 
179 /* Description		REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST
180 
181 			Consumer: REO
182 
183 			Producer: SW
184 
185 
186 
187 			The AC_timeout list to be used for this command
188 
189 			<legal all>
190 */
191 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_OFFSET               0x00000004
192 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_LSB                  0
193 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_MASK                 0x00000003
194 
195 /* Description		REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1
196 
197 			<legal 0>
198 */
199 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_OFFSET                   0x00000004
200 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_LSB                      2
201 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_MASK                     0xfffffffc
202 
203 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT
204 
205 			Consumer: REO
206 
207 			Producer: SW
208 
209 
210 
211 			The minimum number of link descriptors requested to be
212 			released. If set to 0, only buffer release counts seems to
213 			be important... When set to very high value, likely the
214 			entire timeout list will be exhausted before this count is
215 			reached or maybe this count will not get reached. REO
216 			however will stop here as it can not do anything else.
217 
218 
219 
220 			When both this field and field Minimum_forward_buf_count
221 			are > 0, REO needs to meet both requirements. When both
222 			entries are 0 (which should be a programming error), REO
223 			does not need to do anything.
224 
225 
226 
227 			Note that this includes counts of MPDU link Desc as well
228 			as MSDU link Desc. Where the count of MSDU link Desc is not
229 			known to REO it's approximated by deriving from MSDU count
230 
231 			<legal all>
232 */
233 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_OFFSET   0x00000008
234 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_LSB      0
235 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_MASK     0x0000ffff
236 
237 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT
238 
239 			Consumer: REO
240 
241 			Producer: SW
242 
243 
244 
245 			The minimum number of buffer descriptors requested to be
246 			passed on to the REO destination rings.
247 
248 
249 
250 			If set to 0, only descriptor release counts seems to be
251 			important...
252 
253 
254 
255 			When set to very high value, likely the entire timeout
256 			list will be exhausted before this count is reached or maybe
257 			this count will not get reached. REO however will stop here
258 			as it can not do anything else.
259 
260 
261 
262 			Note that REO does not know the exact buffer count. This
263 			can be approximated by using the MSDU_COUNT
264 
265 			<legal all>
266 */
267 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_OFFSET    0x00000008
268 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_LSB       16
269 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_MASK      0xffff0000
270 
271 /* Description		REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A
272 
273 			<legal 0>
274 */
275 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_OFFSET                  0x0000000c
276 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_LSB                     0
277 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_MASK                    0xffffffff
278 
279 /* Description		REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A
280 
281 			<legal 0>
282 */
283 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_OFFSET                  0x00000010
284 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_LSB                     0
285 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_MASK                    0xffffffff
286 
287 /* Description		REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A
288 
289 			<legal 0>
290 */
291 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_OFFSET                  0x00000014
292 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_LSB                     0
293 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_MASK                    0xffffffff
294 
295 /* Description		REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A
296 
297 			<legal 0>
298 */
299 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_OFFSET                  0x00000018
300 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_LSB                     0
301 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_MASK                    0xffffffff
302 
303 /* Description		REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A
304 
305 			<legal 0>
306 */
307 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_OFFSET                  0x0000001c
308 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_LSB                     0
309 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_MASK                    0xffffffff
310 
311 /* Description		REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A
312 
313 			<legal 0>
314 */
315 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_OFFSET                  0x00000020
316 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_LSB                     0
317 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_MASK                    0xffffffff
318 
319 
320 #endif // _REO_FLUSH_TIMEOUT_LIST_H_
321