xref: /wlan-driver/fw-api/hw/qca8074/v1/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 // DO NOT EDIT!  This file is automatically generated
20 //               These definitions are tied to a particular hardware layout
21 
22 
23 #ifndef _REO_FLUSH_TIMEOUT_LIST_H_
24 #define _REO_FLUSH_TIMEOUT_LIST_H_
25 #if !defined(__ASSEMBLER__)
26 #endif
27 
28 #include "uniform_reo_cmd_header.h"
29 
30 // ################ START SUMMARY #################
31 //
32 //	Dword	Fields
33 //	0	struct uniform_reo_cmd_header cmd_header;
34 //	1	ac_timout_list[1:0], reserved_1[31:2]
35 //	2	minimum_release_desc_count[15:0], minimum_forward_buf_count[31:16]
36 //	3	reserved_3a[31:0]
37 //	4	reserved_4a[31:0]
38 //	5	reserved_5a[31:0]
39 //	6	reserved_6a[31:0]
40 //	7	reserved_7a[31:0]
41 //	8	reserved_8a[31:0]
42 //
43 // ################ END SUMMARY #################
44 
45 #define NUM_OF_DWORDS_REO_FLUSH_TIMEOUT_LIST 9
46 
47 struct reo_flush_timeout_list {
48     struct            uniform_reo_cmd_header                       cmd_header;
49              uint32_t ac_timout_list                  :  2, //[1:0]
50                       reserved_1                      : 30; //[31:2]
51              uint32_t minimum_release_desc_count      : 16, //[15:0]
52                       minimum_forward_buf_count       : 16; //[31:16]
53              uint32_t reserved_3a                     : 32; //[31:0]
54              uint32_t reserved_4a                     : 32; //[31:0]
55              uint32_t reserved_5a                     : 32; //[31:0]
56              uint32_t reserved_6a                     : 32; //[31:0]
57              uint32_t reserved_7a                     : 32; //[31:0]
58              uint32_t reserved_8a                     : 32; //[31:0]
59 };
60 
61 /*
62 
63 struct uniform_reo_cmd_header cmd_header
64 
65 			Consumer: REO
66 
67 			Producer: SW
68 
69 
70 
71 			Details for command execution tracking purposes.
72 
73 ac_timout_list
74 
75 			Consumer: REO
76 
77 			Producer: SW
78 
79 
80 
81 			The AC_timeout list to be used for this command
82 
83 			<legal all>
84 
85 reserved_1
86 
87 			<legal 0>
88 
89 minimum_release_desc_count
90 
91 			Consumer: REO
92 
93 			Producer: SW
94 
95 
96 
97 			The minimum number of link descriptors requested to be
98 			released. If set to 0, only buffer release counts seems to
99 			be important... When set to very high value, likely the
100 			entire timeout list will be exhausted before this count is
101 			reached or maybe this count will not get reached. REO
102 			however will stop here as it can not do anything else.
103 
104 
105 
106 			When both this field and field Minimum_forward_buf_count
107 			are > 0, REO needs to meet both requirements. When both
108 			entries are 0 (which should be a programming error), REO
109 			does not need to do anything.
110 
111 
112 
113 			Note that this includes counts of MPDU link Desc as well
114 			as MSDU link Desc. Where the count of MSDU link Desc is not
115 			known to REO it's approximated by deriving from MSDU count
116 
117 			<legal all>
118 
119 minimum_forward_buf_count
120 
121 			Consumer: REO
122 
123 			Producer: SW
124 
125 
126 
127 			The minimum number of buffer descriptors requested to be
128 			passed on to the REO destination rings.
129 
130 
131 
132 			If set to 0, only descriptor release counts seems to be
133 			important...
134 
135 
136 
137 			When set to very high value, likely the entire timeout
138 			list will be exhausted before this count is reached or maybe
139 			this count will not get reached. REO however will stop here
140 			as it can not do anything else.
141 
142 
143 
144 			Note that REO does not know the exact buffer count. This
145 			can be approximated by using the MSDU_COUNT
146 
147 			<legal all>
148 
149 reserved_3a
150 
151 			<legal 0>
152 
153 reserved_4a
154 
155 			<legal 0>
156 
157 reserved_5a
158 
159 			<legal 0>
160 
161 reserved_6a
162 
163 			<legal 0>
164 
165 reserved_7a
166 
167 			<legal 0>
168 
169 reserved_8a
170 
171 			<legal 0>
172 */
173 
174 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_OFFSET 0x00000000
175 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_LSB 0
176 #define REO_FLUSH_TIMEOUT_LIST_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_MASK 0xffffffff
177 
178 /* Description		REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST
179 
180 			Consumer: REO
181 
182 			Producer: SW
183 
184 
185 
186 			The AC_timeout list to be used for this command
187 
188 			<legal all>
189 */
190 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_OFFSET               0x00000004
191 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_LSB                  0
192 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_MASK                 0x00000003
193 
194 /* Description		REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1
195 
196 			<legal 0>
197 */
198 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_OFFSET                   0x00000004
199 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_LSB                      2
200 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_MASK                     0xfffffffc
201 
202 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT
203 
204 			Consumer: REO
205 
206 			Producer: SW
207 
208 
209 
210 			The minimum number of link descriptors requested to be
211 			released. If set to 0, only buffer release counts seems to
212 			be important... When set to very high value, likely the
213 			entire timeout list will be exhausted before this count is
214 			reached or maybe this count will not get reached. REO
215 			however will stop here as it can not do anything else.
216 
217 
218 
219 			When both this field and field Minimum_forward_buf_count
220 			are > 0, REO needs to meet both requirements. When both
221 			entries are 0 (which should be a programming error), REO
222 			does not need to do anything.
223 
224 
225 
226 			Note that this includes counts of MPDU link Desc as well
227 			as MSDU link Desc. Where the count of MSDU link Desc is not
228 			known to REO it's approximated by deriving from MSDU count
229 
230 			<legal all>
231 */
232 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_OFFSET   0x00000008
233 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_LSB      0
234 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_MASK     0x0000ffff
235 
236 /* Description		REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT
237 
238 			Consumer: REO
239 
240 			Producer: SW
241 
242 
243 
244 			The minimum number of buffer descriptors requested to be
245 			passed on to the REO destination rings.
246 
247 
248 
249 			If set to 0, only descriptor release counts seems to be
250 			important...
251 
252 
253 
254 			When set to very high value, likely the entire timeout
255 			list will be exhausted before this count is reached or maybe
256 			this count will not get reached. REO however will stop here
257 			as it can not do anything else.
258 
259 
260 
261 			Note that REO does not know the exact buffer count. This
262 			can be approximated by using the MSDU_COUNT
263 
264 			<legal all>
265 */
266 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_OFFSET    0x00000008
267 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_LSB       16
268 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_MASK      0xffff0000
269 
270 /* Description		REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A
271 
272 			<legal 0>
273 */
274 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_OFFSET                  0x0000000c
275 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_LSB                     0
276 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_MASK                    0xffffffff
277 
278 /* Description		REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A
279 
280 			<legal 0>
281 */
282 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_OFFSET                  0x00000010
283 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_LSB                     0
284 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_MASK                    0xffffffff
285 
286 /* Description		REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A
287 
288 			<legal 0>
289 */
290 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_OFFSET                  0x00000014
291 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_LSB                     0
292 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_MASK                    0xffffffff
293 
294 /* Description		REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A
295 
296 			<legal 0>
297 */
298 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_OFFSET                  0x00000018
299 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_LSB                     0
300 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_MASK                    0xffffffff
301 
302 /* Description		REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A
303 
304 			<legal 0>
305 */
306 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_OFFSET                  0x0000001c
307 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_LSB                     0
308 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_MASK                    0xffffffff
309 
310 /* Description		REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A
311 
312 			<legal 0>
313 */
314 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_OFFSET                  0x00000020
315 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_LSB                     0
316 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_MASK                    0xffffffff
317 
318 
319 #endif // _REO_FLUSH_TIMEOUT_LIST_H_
320