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