]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/contrib/octeon-sdk/cvmx-zip-defs.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / contrib / octeon-sdk / cvmx-zip-defs.h
1 /***********************license start***************
2  * Copyright (c) 2003-2010  Cavium Networks (support@cavium.com). All rights
3  * reserved.
4  *
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are
8  * met:
9  *
10  *   * Redistributions of source code must retain the above copyright
11  *     notice, this list of conditions and the following disclaimer.
12  *
13  *   * Redistributions in binary form must reproduce the above
14  *     copyright notice, this list of conditions and the following
15  *     disclaimer in the documentation and/or other materials provided
16  *     with the distribution.
17
18  *   * Neither the name of Cavium Networks nor the names of
19  *     its contributors may be used to endorse or promote products
20  *     derived from this software without specific prior written
21  *     permission.
22
23  * This Software, including technical data, may be subject to U.S. export  control
24  * laws, including the U.S. Export Administration Act and its  associated
25  * regulations, and may be subject to export or import  regulations in other
26  * countries.
27
28  * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29  * AND WITH ALL FAULTS AND CAVIUM  NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
30  * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31  * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32  * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33  * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34  * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35  * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36  * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37  * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38  ***********************license end**************************************/
39
40
41 /**
42  * cvmx-zip-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon zip.
46  *
47  * This file is auto generated. Do not edit.
48  *
49  * <hr>$Revision$<hr>
50  *
51  */
52 #ifndef __CVMX_ZIP_TYPEDEFS_H__
53 #define __CVMX_ZIP_TYPEDEFS_H__
54
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 #define CVMX_ZIP_CMD_BIST_RESULT CVMX_ZIP_CMD_BIST_RESULT_FUNC()
57 static inline uint64_t CVMX_ZIP_CMD_BIST_RESULT_FUNC(void)
58 {
59         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
60                 cvmx_warn("CVMX_ZIP_CMD_BIST_RESULT not supported on this chip\n");
61         return CVMX_ADD_IO_SEG(0x0001180038000080ull);
62 }
63 #else
64 #define CVMX_ZIP_CMD_BIST_RESULT (CVMX_ADD_IO_SEG(0x0001180038000080ull))
65 #endif
66 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
67 #define CVMX_ZIP_CMD_BUF CVMX_ZIP_CMD_BUF_FUNC()
68 static inline uint64_t CVMX_ZIP_CMD_BUF_FUNC(void)
69 {
70         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
71                 cvmx_warn("CVMX_ZIP_CMD_BUF not supported on this chip\n");
72         return CVMX_ADD_IO_SEG(0x0001180038000008ull);
73 }
74 #else
75 #define CVMX_ZIP_CMD_BUF (CVMX_ADD_IO_SEG(0x0001180038000008ull))
76 #endif
77 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
78 #define CVMX_ZIP_CMD_CTL CVMX_ZIP_CMD_CTL_FUNC()
79 static inline uint64_t CVMX_ZIP_CMD_CTL_FUNC(void)
80 {
81         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
82                 cvmx_warn("CVMX_ZIP_CMD_CTL not supported on this chip\n");
83         return CVMX_ADD_IO_SEG(0x0001180038000000ull);
84 }
85 #else
86 #define CVMX_ZIP_CMD_CTL (CVMX_ADD_IO_SEG(0x0001180038000000ull))
87 #endif
88 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
89 #define CVMX_ZIP_CONSTANTS CVMX_ZIP_CONSTANTS_FUNC()
90 static inline uint64_t CVMX_ZIP_CONSTANTS_FUNC(void)
91 {
92         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
93                 cvmx_warn("CVMX_ZIP_CONSTANTS not supported on this chip\n");
94         return CVMX_ADD_IO_SEG(0x00011800380000A0ull);
95 }
96 #else
97 #define CVMX_ZIP_CONSTANTS (CVMX_ADD_IO_SEG(0x00011800380000A0ull))
98 #endif
99 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
100 #define CVMX_ZIP_DEBUG0 CVMX_ZIP_DEBUG0_FUNC()
101 static inline uint64_t CVMX_ZIP_DEBUG0_FUNC(void)
102 {
103         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
104                 cvmx_warn("CVMX_ZIP_DEBUG0 not supported on this chip\n");
105         return CVMX_ADD_IO_SEG(0x0001180038000098ull);
106 }
107 #else
108 #define CVMX_ZIP_DEBUG0 (CVMX_ADD_IO_SEG(0x0001180038000098ull))
109 #endif
110 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
111 #define CVMX_ZIP_ERROR CVMX_ZIP_ERROR_FUNC()
112 static inline uint64_t CVMX_ZIP_ERROR_FUNC(void)
113 {
114         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
115                 cvmx_warn("CVMX_ZIP_ERROR not supported on this chip\n");
116         return CVMX_ADD_IO_SEG(0x0001180038000088ull);
117 }
118 #else
119 #define CVMX_ZIP_ERROR (CVMX_ADD_IO_SEG(0x0001180038000088ull))
120 #endif
121 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
122 #define CVMX_ZIP_INT_MASK CVMX_ZIP_INT_MASK_FUNC()
123 static inline uint64_t CVMX_ZIP_INT_MASK_FUNC(void)
124 {
125         if (!(OCTEON_IS_MODEL(OCTEON_CN31XX) || OCTEON_IS_MODEL(OCTEON_CN38XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN58XX) || OCTEON_IS_MODEL(OCTEON_CN63XX)))
126                 cvmx_warn("CVMX_ZIP_INT_MASK not supported on this chip\n");
127         return CVMX_ADD_IO_SEG(0x0001180038000090ull);
128 }
129 #else
130 #define CVMX_ZIP_INT_MASK (CVMX_ADD_IO_SEG(0x0001180038000090ull))
131 #endif
132 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
133 #define CVMX_ZIP_THROTTLE CVMX_ZIP_THROTTLE_FUNC()
134 static inline uint64_t CVMX_ZIP_THROTTLE_FUNC(void)
135 {
136         if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)))
137                 cvmx_warn("CVMX_ZIP_THROTTLE not supported on this chip\n");
138         return CVMX_ADD_IO_SEG(0x0001180038000010ull);
139 }
140 #else
141 #define CVMX_ZIP_THROTTLE (CVMX_ADD_IO_SEG(0x0001180038000010ull))
142 #endif
143
144 /**
145  * cvmx_zip_cmd_bist_result
146  *
147  * Notes:
148  * Access to the internal BiST results
149  * Each bit is the BiST result of an individual memory (per bit, 0=pass and 1=fail).
150  */
151 union cvmx_zip_cmd_bist_result
152 {
153         uint64_t u64;
154         struct cvmx_zip_cmd_bist_result_s
155         {
156 #if __BYTE_ORDER == __BIG_ENDIAN
157         uint64_t reserved_43_63               : 21;
158         uint64_t zip_core                     : 39; /**< BiST result of the ZIP_CORE memories */
159         uint64_t zip_ctl                      : 4;  /**< BiST result of the ZIP_CTL  memories */
160 #else
161         uint64_t zip_ctl                      : 4;
162         uint64_t zip_core                     : 39;
163         uint64_t reserved_43_63               : 21;
164 #endif
165         } s;
166         struct cvmx_zip_cmd_bist_result_cn31xx
167         {
168 #if __BYTE_ORDER == __BIG_ENDIAN
169         uint64_t reserved_31_63               : 33;
170         uint64_t zip_core                     : 27; /**< BiST result of the ZIP_CORE memories */
171         uint64_t zip_ctl                      : 4;  /**< BiST result of the ZIP_CTL  memories */
172 #else
173         uint64_t zip_ctl                      : 4;
174         uint64_t zip_core                     : 27;
175         uint64_t reserved_31_63               : 33;
176 #endif
177         } cn31xx;
178         struct cvmx_zip_cmd_bist_result_cn31xx cn38xx;
179         struct cvmx_zip_cmd_bist_result_cn31xx cn38xxp2;
180         struct cvmx_zip_cmd_bist_result_cn31xx cn56xx;
181         struct cvmx_zip_cmd_bist_result_cn31xx cn56xxp1;
182         struct cvmx_zip_cmd_bist_result_cn31xx cn58xx;
183         struct cvmx_zip_cmd_bist_result_cn31xx cn58xxp1;
184         struct cvmx_zip_cmd_bist_result_s     cn63xx;
185         struct cvmx_zip_cmd_bist_result_s     cn63xxp1;
186 };
187 typedef union cvmx_zip_cmd_bist_result cvmx_zip_cmd_bist_result_t;
188
189 /**
190  * cvmx_zip_cmd_buf
191  *
192  * Notes:
193  * Sets the command buffer parameters
194  * The size of the command buffer segments is measured in uint64s.  The pool specifies (1 of 8 free
195  * lists to be used when freeing command buffer segments.  The PTR field is overwritten with the next
196  * pointer each time that the command buffer segment is exhausted.
197  * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
198  * this register to effectively reset the command buffer state machine.  New commands will then be
199  * read from the newly specified command buffer pointer.
200  */
201 union cvmx_zip_cmd_buf
202 {
203         uint64_t u64;
204         struct cvmx_zip_cmd_buf_s
205         {
206 #if __BYTE_ORDER == __BIG_ENDIAN
207         uint64_t reserved_58_63               : 6;
208         uint64_t dwb                          : 9;  /**< Number of DontWriteBacks */
209         uint64_t pool                         : 3;  /**< Free list used to free command buffer segments */
210         uint64_t size                         : 13; /**< Number of uint64s per command buffer segment */
211         uint64_t ptr                          : 33; /**< Initial command buffer pointer[39:7] (128B-aligned) */
212 #else
213         uint64_t ptr                          : 33;
214         uint64_t size                         : 13;
215         uint64_t pool                         : 3;
216         uint64_t dwb                          : 9;
217         uint64_t reserved_58_63               : 6;
218 #endif
219         } s;
220         struct cvmx_zip_cmd_buf_s             cn31xx;
221         struct cvmx_zip_cmd_buf_s             cn38xx;
222         struct cvmx_zip_cmd_buf_s             cn38xxp2;
223         struct cvmx_zip_cmd_buf_s             cn56xx;
224         struct cvmx_zip_cmd_buf_s             cn56xxp1;
225         struct cvmx_zip_cmd_buf_s             cn58xx;
226         struct cvmx_zip_cmd_buf_s             cn58xxp1;
227         struct cvmx_zip_cmd_buf_s             cn63xx;
228         struct cvmx_zip_cmd_buf_s             cn63xxp1;
229 };
230 typedef union cvmx_zip_cmd_buf cvmx_zip_cmd_buf_t;
231
232 /**
233  * cvmx_zip_cmd_ctl
234  */
235 union cvmx_zip_cmd_ctl
236 {
237         uint64_t u64;
238         struct cvmx_zip_cmd_ctl_s
239         {
240 #if __BYTE_ORDER == __BIG_ENDIAN
241         uint64_t reserved_2_63                : 62;
242         uint64_t forceclk                     : 1;  /**< Force zip_ctl__clock_on_b == 1 when set */
243         uint64_t reset                        : 1;  /**< Reset oneshot pulse for zip core */
244 #else
245         uint64_t reset                        : 1;
246         uint64_t forceclk                     : 1;
247         uint64_t reserved_2_63                : 62;
248 #endif
249         } s;
250         struct cvmx_zip_cmd_ctl_s             cn31xx;
251         struct cvmx_zip_cmd_ctl_s             cn38xx;
252         struct cvmx_zip_cmd_ctl_s             cn38xxp2;
253         struct cvmx_zip_cmd_ctl_s             cn56xx;
254         struct cvmx_zip_cmd_ctl_s             cn56xxp1;
255         struct cvmx_zip_cmd_ctl_s             cn58xx;
256         struct cvmx_zip_cmd_ctl_s             cn58xxp1;
257         struct cvmx_zip_cmd_ctl_s             cn63xx;
258         struct cvmx_zip_cmd_ctl_s             cn63xxp1;
259 };
260 typedef union cvmx_zip_cmd_ctl cvmx_zip_cmd_ctl_t;
261
262 /**
263  * cvmx_zip_constants
264  *
265  * Notes:
266  * Note that this CSR is present only in chip revisions beginning with pass2.
267  *
268  */
269 union cvmx_zip_constants
270 {
271         uint64_t u64;
272         struct cvmx_zip_constants_s
273         {
274 #if __BYTE_ORDER == __BIG_ENDIAN
275         uint64_t reserved_48_63               : 16;
276         uint64_t depth                        : 16; /**< Maximum search depth for compression */
277         uint64_t onfsize                      : 12; /**< Output near full threshhold in bytes */
278         uint64_t ctxsize                      : 12; /**< Context size in bytes */
279         uint64_t reserved_1_7                 : 7;
280         uint64_t disabled                     : 1;  /**< 1=zip unit isdisabled, 0=zip unit not disabled */
281 #else
282         uint64_t disabled                     : 1;
283         uint64_t reserved_1_7                 : 7;
284         uint64_t ctxsize                      : 12;
285         uint64_t onfsize                      : 12;
286         uint64_t depth                        : 16;
287         uint64_t reserved_48_63               : 16;
288 #endif
289         } s;
290         struct cvmx_zip_constants_s           cn31xx;
291         struct cvmx_zip_constants_s           cn38xx;
292         struct cvmx_zip_constants_s           cn38xxp2;
293         struct cvmx_zip_constants_s           cn56xx;
294         struct cvmx_zip_constants_s           cn56xxp1;
295         struct cvmx_zip_constants_s           cn58xx;
296         struct cvmx_zip_constants_s           cn58xxp1;
297         struct cvmx_zip_constants_s           cn63xx;
298         struct cvmx_zip_constants_s           cn63xxp1;
299 };
300 typedef union cvmx_zip_constants cvmx_zip_constants_t;
301
302 /**
303  * cvmx_zip_debug0
304  *
305  * Notes:
306  * Note that this CSR is present only in chip revisions beginning with pass2.
307  *
308  */
309 union cvmx_zip_debug0
310 {
311         uint64_t u64;
312         struct cvmx_zip_debug0_s
313         {
314 #if __BYTE_ORDER == __BIG_ENDIAN
315         uint64_t reserved_17_63               : 47;
316         uint64_t asserts                      : 17; /**< FIFO assertion checks */
317 #else
318         uint64_t asserts                      : 17;
319         uint64_t reserved_17_63               : 47;
320 #endif
321         } s;
322         struct cvmx_zip_debug0_cn31xx
323         {
324 #if __BYTE_ORDER == __BIG_ENDIAN
325         uint64_t reserved_14_63               : 50;
326         uint64_t asserts                      : 14; /**< FIFO assertion checks */
327 #else
328         uint64_t asserts                      : 14;
329         uint64_t reserved_14_63               : 50;
330 #endif
331         } cn31xx;
332         struct cvmx_zip_debug0_cn31xx         cn38xx;
333         struct cvmx_zip_debug0_cn31xx         cn38xxp2;
334         struct cvmx_zip_debug0_cn31xx         cn56xx;
335         struct cvmx_zip_debug0_cn31xx         cn56xxp1;
336         struct cvmx_zip_debug0_cn31xx         cn58xx;
337         struct cvmx_zip_debug0_cn31xx         cn58xxp1;
338         struct cvmx_zip_debug0_s              cn63xx;
339         struct cvmx_zip_debug0_s              cn63xxp1;
340 };
341 typedef union cvmx_zip_debug0 cvmx_zip_debug0_t;
342
343 /**
344  * cvmx_zip_error
345  *
346  * Notes:
347  * Note that this CSR is present only in chip revisions beginning with pass2.
348  *
349  */
350 union cvmx_zip_error
351 {
352         uint64_t u64;
353         struct cvmx_zip_error_s
354         {
355 #if __BYTE_ORDER == __BIG_ENDIAN
356         uint64_t reserved_1_63                : 63;
357         uint64_t doorbell                     : 1;  /**< A doorbell count has overflowed */
358 #else
359         uint64_t doorbell                     : 1;
360         uint64_t reserved_1_63                : 63;
361 #endif
362         } s;
363         struct cvmx_zip_error_s               cn31xx;
364         struct cvmx_zip_error_s               cn38xx;
365         struct cvmx_zip_error_s               cn38xxp2;
366         struct cvmx_zip_error_s               cn56xx;
367         struct cvmx_zip_error_s               cn56xxp1;
368         struct cvmx_zip_error_s               cn58xx;
369         struct cvmx_zip_error_s               cn58xxp1;
370         struct cvmx_zip_error_s               cn63xx;
371         struct cvmx_zip_error_s               cn63xxp1;
372 };
373 typedef union cvmx_zip_error cvmx_zip_error_t;
374
375 /**
376  * cvmx_zip_int_mask
377  *
378  * Notes:
379  * Note that this CSR is present only in chip revisions beginning with pass2.
380  * When a mask bit is set, the corresponding interrupt is enabled.
381  */
382 union cvmx_zip_int_mask
383 {
384         uint64_t u64;
385         struct cvmx_zip_int_mask_s
386         {
387 #if __BYTE_ORDER == __BIG_ENDIAN
388         uint64_t reserved_1_63                : 63;
389         uint64_t doorbell                     : 1;  /**< Bit mask corresponding to ZIP_ERROR[0] above */
390 #else
391         uint64_t doorbell                     : 1;
392         uint64_t reserved_1_63                : 63;
393 #endif
394         } s;
395         struct cvmx_zip_int_mask_s            cn31xx;
396         struct cvmx_zip_int_mask_s            cn38xx;
397         struct cvmx_zip_int_mask_s            cn38xxp2;
398         struct cvmx_zip_int_mask_s            cn56xx;
399         struct cvmx_zip_int_mask_s            cn56xxp1;
400         struct cvmx_zip_int_mask_s            cn58xx;
401         struct cvmx_zip_int_mask_s            cn58xxp1;
402         struct cvmx_zip_int_mask_s            cn63xx;
403         struct cvmx_zip_int_mask_s            cn63xxp1;
404 };
405 typedef union cvmx_zip_int_mask cvmx_zip_int_mask_t;
406
407 /**
408  * cvmx_zip_throttle
409  *
410  * Notes:
411  * The maximum number of inflight data fetch transactions.  Values > 8 are illegal.
412  * Writing 0 to this register causes the ZIP module to temporarily suspend NCB
413  * accesses; it is not recommended for normal operation, but may be useful for
414  * diagnostics.
415  */
416 union cvmx_zip_throttle
417 {
418         uint64_t u64;
419         struct cvmx_zip_throttle_s
420         {
421 #if __BYTE_ORDER == __BIG_ENDIAN
422         uint64_t reserved_4_63                : 60;
423         uint64_t max_infl                     : 4;  /**< Maximum number of inflight data fetch transactions on NCB */
424 #else
425         uint64_t max_infl                     : 4;
426         uint64_t reserved_4_63                : 60;
427 #endif
428         } s;
429         struct cvmx_zip_throttle_s            cn63xx;
430         struct cvmx_zip_throttle_s            cn63xxp1;
431 };
432 typedef union cvmx_zip_throttle cvmx_zip_throttle_t;
433
434 #endif