1215976Sjmallett/***********************license start***************
2232812Sjmallett * Copyright (c) 2003-2012  Cavium Inc. (support@cavium.com). All rights
3215976Sjmallett * reserved.
4215976Sjmallett *
5215976Sjmallett *
6215976Sjmallett * Redistribution and use in source and binary forms, with or without
7215976Sjmallett * modification, are permitted provided that the following conditions are
8215976Sjmallett * met:
9215976Sjmallett *
10215976Sjmallett *   * Redistributions of source code must retain the above copyright
11215976Sjmallett *     notice, this list of conditions and the following disclaimer.
12215976Sjmallett *
13215976Sjmallett *   * Redistributions in binary form must reproduce the above
14215976Sjmallett *     copyright notice, this list of conditions and the following
15215976Sjmallett *     disclaimer in the documentation and/or other materials provided
16215976Sjmallett *     with the distribution.
17215976Sjmallett
18232812Sjmallett *   * Neither the name of Cavium Inc. nor the names of
19215976Sjmallett *     its contributors may be used to endorse or promote products
20215976Sjmallett *     derived from this software without specific prior written
21215976Sjmallett *     permission.
22215976Sjmallett
23215976Sjmallett * This Software, including technical data, may be subject to U.S. export  control
24215976Sjmallett * laws, including the U.S. Export Administration Act and its  associated
25215976Sjmallett * regulations, and may be subject to export or import  regulations in other
26215976Sjmallett * countries.
27215976Sjmallett
28215976Sjmallett * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29232812Sjmallett * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30215976Sjmallett * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31215976Sjmallett * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32215976Sjmallett * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33215976Sjmallett * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34215976Sjmallett * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35215976Sjmallett * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36215976Sjmallett * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37215976Sjmallett * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38215976Sjmallett ***********************license end**************************************/
39215976Sjmallett
40215976Sjmallett
41215976Sjmallett/**
42215976Sjmallett * cvmx-zip-defs.h
43215976Sjmallett *
44215976Sjmallett * Configuration and status register (CSR) type definitions for
45215976Sjmallett * Octeon zip.
46215976Sjmallett *
47215976Sjmallett * This file is auto generated. Do not edit.
48215976Sjmallett *
49215976Sjmallett * <hr>$Revision$<hr>
50215976Sjmallett *
51215976Sjmallett */
52232812Sjmallett#ifndef __CVMX_ZIP_DEFS_H__
53232812Sjmallett#define __CVMX_ZIP_DEFS_H__
54215976Sjmallett
55215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56215976Sjmallett#define CVMX_ZIP_CMD_BIST_RESULT CVMX_ZIP_CMD_BIST_RESULT_FUNC()
57215976Sjmallettstatic inline uint64_t CVMX_ZIP_CMD_BIST_RESULT_FUNC(void)
58215976Sjmallett{
59232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
60215976Sjmallett		cvmx_warn("CVMX_ZIP_CMD_BIST_RESULT not supported on this chip\n");
61215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000080ull);
62215976Sjmallett}
63215976Sjmallett#else
64215976Sjmallett#define CVMX_ZIP_CMD_BIST_RESULT (CVMX_ADD_IO_SEG(0x0001180038000080ull))
65215976Sjmallett#endif
66215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
67215976Sjmallett#define CVMX_ZIP_CMD_BUF CVMX_ZIP_CMD_BUF_FUNC()
68215976Sjmallettstatic inline uint64_t CVMX_ZIP_CMD_BUF_FUNC(void)
69215976Sjmallett{
70232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
71215976Sjmallett		cvmx_warn("CVMX_ZIP_CMD_BUF not supported on this chip\n");
72215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000008ull);
73215976Sjmallett}
74215976Sjmallett#else
75215976Sjmallett#define CVMX_ZIP_CMD_BUF (CVMX_ADD_IO_SEG(0x0001180038000008ull))
76215976Sjmallett#endif
77215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
78215976Sjmallett#define CVMX_ZIP_CMD_CTL CVMX_ZIP_CMD_CTL_FUNC()
79215976Sjmallettstatic inline uint64_t CVMX_ZIP_CMD_CTL_FUNC(void)
80215976Sjmallett{
81232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
82215976Sjmallett		cvmx_warn("CVMX_ZIP_CMD_CTL not supported on this chip\n");
83215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000000ull);
84215976Sjmallett}
85215976Sjmallett#else
86215976Sjmallett#define CVMX_ZIP_CMD_CTL (CVMX_ADD_IO_SEG(0x0001180038000000ull))
87215976Sjmallett#endif
88215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
89215976Sjmallett#define CVMX_ZIP_CONSTANTS CVMX_ZIP_CONSTANTS_FUNC()
90215976Sjmallettstatic inline uint64_t CVMX_ZIP_CONSTANTS_FUNC(void)
91215976Sjmallett{
92232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
93215976Sjmallett		cvmx_warn("CVMX_ZIP_CONSTANTS not supported on this chip\n");
94215976Sjmallett	return CVMX_ADD_IO_SEG(0x00011800380000A0ull);
95215976Sjmallett}
96215976Sjmallett#else
97215976Sjmallett#define CVMX_ZIP_CONSTANTS (CVMX_ADD_IO_SEG(0x00011800380000A0ull))
98215976Sjmallett#endif
99215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
100232812Sjmallettstatic inline uint64_t CVMX_ZIP_COREX_BIST_STATUS(unsigned long offset)
101232812Sjmallett{
102232812Sjmallett	if (!(
103232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
104232812Sjmallett		cvmx_warn("CVMX_ZIP_COREX_BIST_STATUS(%lu) is invalid on this chip\n", offset);
105232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000520ull) + ((offset) & 1) * 8;
106232812Sjmallett}
107232812Sjmallett#else
108232812Sjmallett#define CVMX_ZIP_COREX_BIST_STATUS(offset) (CVMX_ADD_IO_SEG(0x0001180038000520ull) + ((offset) & 1) * 8)
109232812Sjmallett#endif
110232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
111232812Sjmallett#define CVMX_ZIP_CTL_BIST_STATUS CVMX_ZIP_CTL_BIST_STATUS_FUNC()
112232812Sjmallettstatic inline uint64_t CVMX_ZIP_CTL_BIST_STATUS_FUNC(void)
113232812Sjmallett{
114232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
115232812Sjmallett		cvmx_warn("CVMX_ZIP_CTL_BIST_STATUS not supported on this chip\n");
116232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000510ull);
117232812Sjmallett}
118232812Sjmallett#else
119232812Sjmallett#define CVMX_ZIP_CTL_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001180038000510ull))
120232812Sjmallett#endif
121232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
122232812Sjmallett#define CVMX_ZIP_CTL_CFG CVMX_ZIP_CTL_CFG_FUNC()
123232812Sjmallettstatic inline uint64_t CVMX_ZIP_CTL_CFG_FUNC(void)
124232812Sjmallett{
125232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
126232812Sjmallett		cvmx_warn("CVMX_ZIP_CTL_CFG not supported on this chip\n");
127232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000560ull);
128232812Sjmallett}
129232812Sjmallett#else
130232812Sjmallett#define CVMX_ZIP_CTL_CFG (CVMX_ADD_IO_SEG(0x0001180038000560ull))
131232812Sjmallett#endif
132232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
133232812Sjmallettstatic inline uint64_t CVMX_ZIP_DBG_COREX_INST(unsigned long offset)
134232812Sjmallett{
135232812Sjmallett	if (!(
136232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
137232812Sjmallett		cvmx_warn("CVMX_ZIP_DBG_COREX_INST(%lu) is invalid on this chip\n", offset);
138232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000640ull) + ((offset) & 1) * 8;
139232812Sjmallett}
140232812Sjmallett#else
141232812Sjmallett#define CVMX_ZIP_DBG_COREX_INST(offset) (CVMX_ADD_IO_SEG(0x0001180038000640ull) + ((offset) & 1) * 8)
142232812Sjmallett#endif
143232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
144232812Sjmallettstatic inline uint64_t CVMX_ZIP_DBG_COREX_STA(unsigned long offset)
145232812Sjmallett{
146232812Sjmallett	if (!(
147232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
148232812Sjmallett		cvmx_warn("CVMX_ZIP_DBG_COREX_STA(%lu) is invalid on this chip\n", offset);
149232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000680ull) + ((offset) & 1) * 8;
150232812Sjmallett}
151232812Sjmallett#else
152232812Sjmallett#define CVMX_ZIP_DBG_COREX_STA(offset) (CVMX_ADD_IO_SEG(0x0001180038000680ull) + ((offset) & 1) * 8)
153232812Sjmallett#endif
154232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
155232812Sjmallettstatic inline uint64_t CVMX_ZIP_DBG_QUEX_STA(unsigned long offset)
156232812Sjmallett{
157232812Sjmallett	if (!(
158232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
159232812Sjmallett		cvmx_warn("CVMX_ZIP_DBG_QUEX_STA(%lu) is invalid on this chip\n", offset);
160232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000600ull) + ((offset) & 1) * 8;
161232812Sjmallett}
162232812Sjmallett#else
163232812Sjmallett#define CVMX_ZIP_DBG_QUEX_STA(offset) (CVMX_ADD_IO_SEG(0x0001180038000600ull) + ((offset) & 1) * 8)
164232812Sjmallett#endif
165232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
166215976Sjmallett#define CVMX_ZIP_DEBUG0 CVMX_ZIP_DEBUG0_FUNC()
167215976Sjmallettstatic inline uint64_t CVMX_ZIP_DEBUG0_FUNC(void)
168215976Sjmallett{
169232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
170215976Sjmallett		cvmx_warn("CVMX_ZIP_DEBUG0 not supported on this chip\n");
171215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000098ull);
172215976Sjmallett}
173215976Sjmallett#else
174215976Sjmallett#define CVMX_ZIP_DEBUG0 (CVMX_ADD_IO_SEG(0x0001180038000098ull))
175215976Sjmallett#endif
176215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
177232812Sjmallett#define CVMX_ZIP_ECC_CTL CVMX_ZIP_ECC_CTL_FUNC()
178232812Sjmallettstatic inline uint64_t CVMX_ZIP_ECC_CTL_FUNC(void)
179232812Sjmallett{
180232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
181232812Sjmallett		cvmx_warn("CVMX_ZIP_ECC_CTL not supported on this chip\n");
182232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000568ull);
183232812Sjmallett}
184232812Sjmallett#else
185232812Sjmallett#define CVMX_ZIP_ECC_CTL (CVMX_ADD_IO_SEG(0x0001180038000568ull))
186232812Sjmallett#endif
187232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
188215976Sjmallett#define CVMX_ZIP_ERROR CVMX_ZIP_ERROR_FUNC()
189215976Sjmallettstatic inline uint64_t CVMX_ZIP_ERROR_FUNC(void)
190215976Sjmallett{
191232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
192215976Sjmallett		cvmx_warn("CVMX_ZIP_ERROR not supported on this chip\n");
193215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000088ull);
194215976Sjmallett}
195215976Sjmallett#else
196215976Sjmallett#define CVMX_ZIP_ERROR (CVMX_ADD_IO_SEG(0x0001180038000088ull))
197215976Sjmallett#endif
198215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
199232812Sjmallett#define CVMX_ZIP_INT_ENA CVMX_ZIP_INT_ENA_FUNC()
200232812Sjmallettstatic inline uint64_t CVMX_ZIP_INT_ENA_FUNC(void)
201232812Sjmallett{
202232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
203232812Sjmallett		cvmx_warn("CVMX_ZIP_INT_ENA not supported on this chip\n");
204232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000580ull);
205232812Sjmallett}
206232812Sjmallett#else
207232812Sjmallett#define CVMX_ZIP_INT_ENA (CVMX_ADD_IO_SEG(0x0001180038000580ull))
208232812Sjmallett#endif
209232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
210215976Sjmallett#define CVMX_ZIP_INT_MASK CVMX_ZIP_INT_MASK_FUNC()
211215976Sjmallettstatic inline uint64_t CVMX_ZIP_INT_MASK_FUNC(void)
212215976Sjmallett{
213232812Sjmallett	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_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
214215976Sjmallett		cvmx_warn("CVMX_ZIP_INT_MASK not supported on this chip\n");
215215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000090ull);
216215976Sjmallett}
217215976Sjmallett#else
218215976Sjmallett#define CVMX_ZIP_INT_MASK (CVMX_ADD_IO_SEG(0x0001180038000090ull))
219215976Sjmallett#endif
220215976Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
221232812Sjmallett#define CVMX_ZIP_INT_REG CVMX_ZIP_INT_REG_FUNC()
222232812Sjmallettstatic inline uint64_t CVMX_ZIP_INT_REG_FUNC(void)
223232812Sjmallett{
224232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
225232812Sjmallett		cvmx_warn("CVMX_ZIP_INT_REG not supported on this chip\n");
226232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000570ull);
227232812Sjmallett}
228232812Sjmallett#else
229232812Sjmallett#define CVMX_ZIP_INT_REG (CVMX_ADD_IO_SEG(0x0001180038000570ull))
230232812Sjmallett#endif
231232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
232232812Sjmallettstatic inline uint64_t CVMX_ZIP_QUEX_BUF(unsigned long offset)
233232812Sjmallett{
234232812Sjmallett	if (!(
235232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
236232812Sjmallett		cvmx_warn("CVMX_ZIP_QUEX_BUF(%lu) is invalid on this chip\n", offset);
237232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000100ull) + ((offset) & 1) * 8;
238232812Sjmallett}
239232812Sjmallett#else
240232812Sjmallett#define CVMX_ZIP_QUEX_BUF(offset) (CVMX_ADD_IO_SEG(0x0001180038000100ull) + ((offset) & 1) * 8)
241232812Sjmallett#endif
242232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
243232812Sjmallettstatic inline uint64_t CVMX_ZIP_QUEX_ECC_ERR_STA(unsigned long offset)
244232812Sjmallett{
245232812Sjmallett	if (!(
246232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
247232812Sjmallett		cvmx_warn("CVMX_ZIP_QUEX_ECC_ERR_STA(%lu) is invalid on this chip\n", offset);
248232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000590ull) + ((offset) & 1) * 8;
249232812Sjmallett}
250232812Sjmallett#else
251232812Sjmallett#define CVMX_ZIP_QUEX_ECC_ERR_STA(offset) (CVMX_ADD_IO_SEG(0x0001180038000590ull) + ((offset) & 1) * 8)
252232812Sjmallett#endif
253232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
254232812Sjmallettstatic inline uint64_t CVMX_ZIP_QUEX_MAP(unsigned long offset)
255232812Sjmallett{
256232812Sjmallett	if (!(
257232812Sjmallett	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 1)))))
258232812Sjmallett		cvmx_warn("CVMX_ZIP_QUEX_MAP(%lu) is invalid on this chip\n", offset);
259232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000300ull) + ((offset) & 1) * 8;
260232812Sjmallett}
261232812Sjmallett#else
262232812Sjmallett#define CVMX_ZIP_QUEX_MAP(offset) (CVMX_ADD_IO_SEG(0x0001180038000300ull) + ((offset) & 1) * 8)
263232812Sjmallett#endif
264232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
265232812Sjmallett#define CVMX_ZIP_QUE_ENA CVMX_ZIP_QUE_ENA_FUNC()
266232812Sjmallettstatic inline uint64_t CVMX_ZIP_QUE_ENA_FUNC(void)
267232812Sjmallett{
268232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
269232812Sjmallett		cvmx_warn("CVMX_ZIP_QUE_ENA not supported on this chip\n");
270232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000500ull);
271232812Sjmallett}
272232812Sjmallett#else
273232812Sjmallett#define CVMX_ZIP_QUE_ENA (CVMX_ADD_IO_SEG(0x0001180038000500ull))
274232812Sjmallett#endif
275232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
276232812Sjmallett#define CVMX_ZIP_QUE_PRI CVMX_ZIP_QUE_PRI_FUNC()
277232812Sjmallettstatic inline uint64_t CVMX_ZIP_QUE_PRI_FUNC(void)
278232812Sjmallett{
279232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
280232812Sjmallett		cvmx_warn("CVMX_ZIP_QUE_PRI not supported on this chip\n");
281232812Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000508ull);
282232812Sjmallett}
283232812Sjmallett#else
284232812Sjmallett#define CVMX_ZIP_QUE_PRI (CVMX_ADD_IO_SEG(0x0001180038000508ull))
285232812Sjmallett#endif
286232812Sjmallett#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
287215976Sjmallett#define CVMX_ZIP_THROTTLE CVMX_ZIP_THROTTLE_FUNC()
288215976Sjmallettstatic inline uint64_t CVMX_ZIP_THROTTLE_FUNC(void)
289215976Sjmallett{
290232812Sjmallett	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX)))
291215976Sjmallett		cvmx_warn("CVMX_ZIP_THROTTLE not supported on this chip\n");
292215976Sjmallett	return CVMX_ADD_IO_SEG(0x0001180038000010ull);
293215976Sjmallett}
294215976Sjmallett#else
295215976Sjmallett#define CVMX_ZIP_THROTTLE (CVMX_ADD_IO_SEG(0x0001180038000010ull))
296215976Sjmallett#endif
297215976Sjmallett
298215976Sjmallett/**
299215976Sjmallett * cvmx_zip_cmd_bist_result
300215976Sjmallett *
301232812Sjmallett * ZIP_CMD_BIST_RESULT =  ZIP Command BIST Result Register
302232812Sjmallett *
303232812Sjmallett * Description:
304232812Sjmallett * This register is a reformatted register with same fields as O63 2.x.
305232812Sjmallett * The purpose of this register is for software backward compatibility.
306232812Sjmallett * Some bits are the bist result of combined status of memories (per bit, 0=pass and 1=fail).
307215976Sjmallett */
308232812Sjmallettunion cvmx_zip_cmd_bist_result {
309215976Sjmallett	uint64_t u64;
310232812Sjmallett	struct cvmx_zip_cmd_bist_result_s {
311232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
312232812Sjmallett	uint64_t reserved_57_63               : 7;
313232812Sjmallett	uint64_t zip_core                     : 53; /**< BiST result of the ZIP_CORE memories */
314215976Sjmallett	uint64_t zip_ctl                      : 4;  /**< BiST result of the ZIP_CTL  memories */
315215976Sjmallett#else
316215976Sjmallett	uint64_t zip_ctl                      : 4;
317232812Sjmallett	uint64_t zip_core                     : 53;
318232812Sjmallett	uint64_t reserved_57_63               : 7;
319215976Sjmallett#endif
320215976Sjmallett	} s;
321232812Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx {
322232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
323215976Sjmallett	uint64_t reserved_31_63               : 33;
324215976Sjmallett	uint64_t zip_core                     : 27; /**< BiST result of the ZIP_CORE memories */
325215976Sjmallett	uint64_t zip_ctl                      : 4;  /**< BiST result of the ZIP_CTL  memories */
326215976Sjmallett#else
327215976Sjmallett	uint64_t zip_ctl                      : 4;
328215976Sjmallett	uint64_t zip_core                     : 27;
329215976Sjmallett	uint64_t reserved_31_63               : 33;
330215976Sjmallett#endif
331215976Sjmallett	} cn31xx;
332215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn38xx;
333215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn38xxp2;
334215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn56xx;
335215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn56xxp1;
336215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn58xx;
337215976Sjmallett	struct cvmx_zip_cmd_bist_result_cn31xx cn58xxp1;
338232812Sjmallett	struct cvmx_zip_cmd_bist_result_s     cn61xx;
339215976Sjmallett	struct cvmx_zip_cmd_bist_result_s     cn63xx;
340232812Sjmallett	struct cvmx_zip_cmd_bist_result_cn63xxp1 {
341232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
342232812Sjmallett	uint64_t reserved_43_63               : 21;
343232812Sjmallett	uint64_t zip_core                     : 39; /**< BiST result of the ZIP_CORE memories */
344232812Sjmallett	uint64_t zip_ctl                      : 4;  /**< BiST result of the ZIP_CTL  memories */
345232812Sjmallett#else
346232812Sjmallett	uint64_t zip_ctl                      : 4;
347232812Sjmallett	uint64_t zip_core                     : 39;
348232812Sjmallett	uint64_t reserved_43_63               : 21;
349232812Sjmallett#endif
350232812Sjmallett	} cn63xxp1;
351232812Sjmallett	struct cvmx_zip_cmd_bist_result_s     cn66xx;
352232812Sjmallett	struct cvmx_zip_cmd_bist_result_s     cn68xx;
353232812Sjmallett	struct cvmx_zip_cmd_bist_result_s     cn68xxp1;
354215976Sjmallett};
355215976Sjmalletttypedef union cvmx_zip_cmd_bist_result cvmx_zip_cmd_bist_result_t;
356215976Sjmallett
357215976Sjmallett/**
358215976Sjmallett * cvmx_zip_cmd_buf
359215976Sjmallett *
360232812Sjmallett * ZIP_CMD_BUF =  ZIP Command Buffer Parameter Register
361232812Sjmallett *
362232812Sjmallett * Description:
363232812Sjmallett * This is an alias to ZIP_QUE0_BUF. The purpose of this register is for software backward compatibility.
364232812Sjmallett * This register set the buffer parameters for the instruction queue 0.
365215976Sjmallett */
366232812Sjmallettunion cvmx_zip_cmd_buf {
367215976Sjmallett	uint64_t u64;
368232812Sjmallett	struct cvmx_zip_cmd_buf_s {
369232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
370215976Sjmallett	uint64_t reserved_58_63               : 6;
371215976Sjmallett	uint64_t dwb                          : 9;  /**< Number of DontWriteBacks */
372215976Sjmallett	uint64_t pool                         : 3;  /**< Free list used to free command buffer segments */
373215976Sjmallett	uint64_t size                         : 13; /**< Number of uint64s per command buffer segment */
374215976Sjmallett	uint64_t ptr                          : 33; /**< Initial command buffer pointer[39:7] (128B-aligned) */
375215976Sjmallett#else
376215976Sjmallett	uint64_t ptr                          : 33;
377215976Sjmallett	uint64_t size                         : 13;
378215976Sjmallett	uint64_t pool                         : 3;
379215976Sjmallett	uint64_t dwb                          : 9;
380215976Sjmallett	uint64_t reserved_58_63               : 6;
381215976Sjmallett#endif
382215976Sjmallett	} s;
383215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn31xx;
384215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn38xx;
385215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn38xxp2;
386215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn56xx;
387215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn56xxp1;
388215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn58xx;
389215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn58xxp1;
390232812Sjmallett	struct cvmx_zip_cmd_buf_s             cn61xx;
391215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn63xx;
392215976Sjmallett	struct cvmx_zip_cmd_buf_s             cn63xxp1;
393232812Sjmallett	struct cvmx_zip_cmd_buf_s             cn66xx;
394232812Sjmallett	struct cvmx_zip_cmd_buf_s             cn68xx;
395232812Sjmallett	struct cvmx_zip_cmd_buf_s             cn68xxp1;
396215976Sjmallett};
397215976Sjmalletttypedef union cvmx_zip_cmd_buf cvmx_zip_cmd_buf_t;
398215976Sjmallett
399215976Sjmallett/**
400215976Sjmallett * cvmx_zip_cmd_ctl
401232812Sjmallett *
402232812Sjmallett * ZIP_CMD_CTL = ZIP Clock/Reset Control Register
403232812Sjmallett *
404232812Sjmallett * Description:
405232812Sjmallett *       This register controls clock and reset.
406215976Sjmallett */
407232812Sjmallettunion cvmx_zip_cmd_ctl {
408215976Sjmallett	uint64_t u64;
409232812Sjmallett	struct cvmx_zip_cmd_ctl_s {
410232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
411215976Sjmallett	uint64_t reserved_2_63                : 62;
412232812Sjmallett	uint64_t forceclk                     : 1;  /**< Force zip_ctl__zip<0|1>_clock_on_b == 1 when set */
413232812Sjmallett	uint64_t reset                        : 1;  /**< Reset one-shot pulse for zip cores */
414215976Sjmallett#else
415215976Sjmallett	uint64_t reset                        : 1;
416215976Sjmallett	uint64_t forceclk                     : 1;
417215976Sjmallett	uint64_t reserved_2_63                : 62;
418215976Sjmallett#endif
419215976Sjmallett	} s;
420215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn31xx;
421215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn38xx;
422215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn38xxp2;
423215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn56xx;
424215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn56xxp1;
425215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn58xx;
426215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn58xxp1;
427232812Sjmallett	struct cvmx_zip_cmd_ctl_s             cn61xx;
428215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn63xx;
429215976Sjmallett	struct cvmx_zip_cmd_ctl_s             cn63xxp1;
430232812Sjmallett	struct cvmx_zip_cmd_ctl_s             cn66xx;
431232812Sjmallett	struct cvmx_zip_cmd_ctl_s             cn68xx;
432232812Sjmallett	struct cvmx_zip_cmd_ctl_s             cn68xxp1;
433215976Sjmallett};
434215976Sjmalletttypedef union cvmx_zip_cmd_ctl cvmx_zip_cmd_ctl_t;
435215976Sjmallett
436215976Sjmallett/**
437215976Sjmallett * cvmx_zip_constants
438215976Sjmallett *
439232812Sjmallett * ZIP_CONSTANTS =  ZIP Constants Register
440215976Sjmallett *
441232812Sjmallett * Description:
442232812Sjmallett *   This contains all the current implementation related parameters of the zip core in this chip.
443215976Sjmallett */
444232812Sjmallettunion cvmx_zip_constants {
445215976Sjmallett	uint64_t u64;
446232812Sjmallett	struct cvmx_zip_constants_s {
447232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
448232812Sjmallett	uint64_t nexec                        : 8;  /**< Number of available ZIP Exec Units */
449232812Sjmallett	uint64_t reserved_49_55               : 7;
450232812Sjmallett	uint64_t syncflush_capable            : 1;  /**< 1: SYNCFLUSH is supported
451232812Sjmallett                                                         - 0: SYNCFLUSH is not supported.
452232812Sjmallett                                                          Note: for O68 1.0, SYNCFLUSH is supported
453232812Sjmallett                                                                although this field is 0. */
454232812Sjmallett	uint64_t depth                        : 16; /**< Maximum search depth for compression */
455232812Sjmallett	uint64_t onfsize                      : 12; /**< Output near full threshold in bytes */
456232812Sjmallett	uint64_t ctxsize                      : 12; /**< Decompression Context size in bytes */
457232812Sjmallett	uint64_t reserved_1_7                 : 7;
458232812Sjmallett	uint64_t disabled                     : 1;  /**< 1=zip is disabled, 0=zip is enabled */
459232812Sjmallett#else
460232812Sjmallett	uint64_t disabled                     : 1;
461232812Sjmallett	uint64_t reserved_1_7                 : 7;
462232812Sjmallett	uint64_t ctxsize                      : 12;
463232812Sjmallett	uint64_t onfsize                      : 12;
464232812Sjmallett	uint64_t depth                        : 16;
465232812Sjmallett	uint64_t syncflush_capable            : 1;
466232812Sjmallett	uint64_t reserved_49_55               : 7;
467232812Sjmallett	uint64_t nexec                        : 8;
468232812Sjmallett#endif
469232812Sjmallett	} s;
470232812Sjmallett	struct cvmx_zip_constants_cn31xx {
471232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
472215976Sjmallett	uint64_t reserved_48_63               : 16;
473215976Sjmallett	uint64_t depth                        : 16; /**< Maximum search depth for compression */
474215976Sjmallett	uint64_t onfsize                      : 12; /**< Output near full threshhold in bytes */
475215976Sjmallett	uint64_t ctxsize                      : 12; /**< Context size in bytes */
476215976Sjmallett	uint64_t reserved_1_7                 : 7;
477215976Sjmallett	uint64_t disabled                     : 1;  /**< 1=zip unit isdisabled, 0=zip unit not disabled */
478215976Sjmallett#else
479215976Sjmallett	uint64_t disabled                     : 1;
480215976Sjmallett	uint64_t reserved_1_7                 : 7;
481215976Sjmallett	uint64_t ctxsize                      : 12;
482215976Sjmallett	uint64_t onfsize                      : 12;
483215976Sjmallett	uint64_t depth                        : 16;
484215976Sjmallett	uint64_t reserved_48_63               : 16;
485215976Sjmallett#endif
486232812Sjmallett	} cn31xx;
487232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn38xx;
488232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn38xxp2;
489232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn56xx;
490232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn56xxp1;
491232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn58xx;
492232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn58xxp1;
493232812Sjmallett	struct cvmx_zip_constants_s           cn61xx;
494232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn63xx;
495232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn63xxp1;
496232812Sjmallett	struct cvmx_zip_constants_s           cn66xx;
497232812Sjmallett	struct cvmx_zip_constants_s           cn68xx;
498232812Sjmallett	struct cvmx_zip_constants_cn31xx      cn68xxp1;
499215976Sjmallett};
500215976Sjmalletttypedef union cvmx_zip_constants cvmx_zip_constants_t;
501215976Sjmallett
502215976Sjmallett/**
503232812Sjmallett * cvmx_zip_core#_bist_status
504232812Sjmallett *
505232812Sjmallett * ZIP_CORE_BIST_STATUS =  ZIP CORE Bist Status Registers
506232812Sjmallett *
507232812Sjmallett * Description:
508232812Sjmallett *   Those register have the bist status of memories in zip cores.
509232812Sjmallett *   Each bit is the bist result of an individual memory (per bit, 0=pass and 1=fail).
510232812Sjmallett */
511232812Sjmallettunion cvmx_zip_corex_bist_status {
512232812Sjmallett	uint64_t u64;
513232812Sjmallett	struct cvmx_zip_corex_bist_status_s {
514232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
515232812Sjmallett	uint64_t reserved_53_63               : 11;
516232812Sjmallett	uint64_t bstatus                      : 53; /**< BIST result of the ZIP_CORE memories */
517232812Sjmallett#else
518232812Sjmallett	uint64_t bstatus                      : 53;
519232812Sjmallett	uint64_t reserved_53_63               : 11;
520232812Sjmallett#endif
521232812Sjmallett	} s;
522232812Sjmallett	struct cvmx_zip_corex_bist_status_s   cn68xx;
523232812Sjmallett	struct cvmx_zip_corex_bist_status_s   cn68xxp1;
524232812Sjmallett};
525232812Sjmalletttypedef union cvmx_zip_corex_bist_status cvmx_zip_corex_bist_status_t;
526232812Sjmallett
527232812Sjmallett/**
528232812Sjmallett * cvmx_zip_ctl_bist_status
529232812Sjmallett *
530232812Sjmallett * ZIP_CTL_BIST_STATUS =  ZIP CONTROL Bist Status Register
531232812Sjmallett *
532232812Sjmallett * Description:
533232812Sjmallett *   This register has the bist status of memories in zip_ctl (Instruction Buffer, G/S Pointer Fifo, Input Data Buffer,
534232812Sjmallett *   Output Data Buffers).
535232812Sjmallett *   Each bit is the bist result of an individual memory (per bit, 0=pass and 1=fail).
536232812Sjmallett */
537232812Sjmallettunion cvmx_zip_ctl_bist_status {
538232812Sjmallett	uint64_t u64;
539232812Sjmallett	struct cvmx_zip_ctl_bist_status_s {
540232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
541232812Sjmallett	uint64_t reserved_7_63                : 57;
542232812Sjmallett	uint64_t bstatus                      : 7;  /**< BIST result of the memories */
543232812Sjmallett#else
544232812Sjmallett	uint64_t bstatus                      : 7;
545232812Sjmallett	uint64_t reserved_7_63                : 57;
546232812Sjmallett#endif
547232812Sjmallett	} s;
548232812Sjmallett	struct cvmx_zip_ctl_bist_status_s     cn68xx;
549232812Sjmallett	struct cvmx_zip_ctl_bist_status_s     cn68xxp1;
550232812Sjmallett};
551232812Sjmalletttypedef union cvmx_zip_ctl_bist_status cvmx_zip_ctl_bist_status_t;
552232812Sjmallett
553232812Sjmallett/**
554232812Sjmallett * cvmx_zip_ctl_cfg
555232812Sjmallett *
556232812Sjmallett * ZIP_CTL_CFG =  ZIP Controller Configuration Register
557232812Sjmallett *
558232812Sjmallett * Description:
559232812Sjmallett * This register controls the behavior zip dma engine. It is recommended to kept those field in the default values for normal
560232812Sjmallett * operation. Changing the values of the fields may be useful for diagnostics.
561232812Sjmallett */
562232812Sjmallettunion cvmx_zip_ctl_cfg {
563232812Sjmallett	uint64_t u64;
564232812Sjmallett	struct cvmx_zip_ctl_cfg_s {
565232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
566232812Sjmallett	uint64_t reserved_27_63               : 37;
567232812Sjmallett	uint64_t ildf                         : 3;  /**< Instruction Load Command FIFO Credits <= 4 */
568232812Sjmallett	uint64_t reserved_22_23               : 2;
569232812Sjmallett	uint64_t iprf                         : 2;  /**< Instruction Page Return Cmd FIFO Credits <= 2 */
570232812Sjmallett	uint64_t reserved_19_19               : 1;
571232812Sjmallett	uint64_t gstf                         : 3;  /**< G/S Tag FIFO Credits <= 4 */
572232812Sjmallett	uint64_t reserved_15_15               : 1;
573232812Sjmallett	uint64_t stcf                         : 3;  /**< Store Command FIFO Credits <= 4 */
574232812Sjmallett	uint64_t reserved_11_11               : 1;
575232812Sjmallett	uint64_t ldf                          : 3;  /**< Load Cmd FIFO Credits <= 4 */
576232812Sjmallett	uint64_t reserved_6_7                 : 2;
577232812Sjmallett	uint64_t wkqf                         : 2;  /**< WorkQueue FIFO Credits <= 2 */
578232812Sjmallett	uint64_t reserved_2_3                 : 2;
579232812Sjmallett	uint64_t busy                         : 1;  /**< 1: ZIP system is busy; 0: ZIP system is idle. */
580232812Sjmallett	uint64_t lmod                         : 1;  /**< Legacy Mode. */
581232812Sjmallett#else
582232812Sjmallett	uint64_t lmod                         : 1;
583232812Sjmallett	uint64_t busy                         : 1;
584232812Sjmallett	uint64_t reserved_2_3                 : 2;
585232812Sjmallett	uint64_t wkqf                         : 2;
586232812Sjmallett	uint64_t reserved_6_7                 : 2;
587232812Sjmallett	uint64_t ldf                          : 3;
588232812Sjmallett	uint64_t reserved_11_11               : 1;
589232812Sjmallett	uint64_t stcf                         : 3;
590232812Sjmallett	uint64_t reserved_15_15               : 1;
591232812Sjmallett	uint64_t gstf                         : 3;
592232812Sjmallett	uint64_t reserved_19_19               : 1;
593232812Sjmallett	uint64_t iprf                         : 2;
594232812Sjmallett	uint64_t reserved_22_23               : 2;
595232812Sjmallett	uint64_t ildf                         : 3;
596232812Sjmallett	uint64_t reserved_27_63               : 37;
597232812Sjmallett#endif
598232812Sjmallett	} s;
599232812Sjmallett	struct cvmx_zip_ctl_cfg_s             cn68xx;
600232812Sjmallett	struct cvmx_zip_ctl_cfg_s             cn68xxp1;
601232812Sjmallett};
602232812Sjmalletttypedef union cvmx_zip_ctl_cfg cvmx_zip_ctl_cfg_t;
603232812Sjmallett
604232812Sjmallett/**
605232812Sjmallett * cvmx_zip_dbg_core#_inst
606232812Sjmallett *
607232812Sjmallett * ZIP_DBG_COREX_INST =  ZIP Core Current Instruction Registers
608232812Sjmallett *
609232812Sjmallett * Description:
610232812Sjmallett * This register reflects the status of the current instruction that zip core is executing/ has executed.
611232812Sjmallett * This register is only for debug use.
612232812Sjmallett */
613232812Sjmallettunion cvmx_zip_dbg_corex_inst {
614232812Sjmallett	uint64_t u64;
615232812Sjmallett	struct cvmx_zip_dbg_corex_inst_s {
616232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
617232812Sjmallett	uint64_t busy                         : 1;  /**< Core State: 1 - Core is busy; 0 - Core is idle */
618232812Sjmallett	uint64_t reserved_33_62               : 30;
619232812Sjmallett	uint64_t qid                          : 1;  /**< Queue Index of instruction executed (BUSY=0) or
620232812Sjmallett                                                         being executed (BUSY=1) on this core */
621232812Sjmallett	uint64_t iid                          : 32; /**< Instruction Index executed (BUSY=0) or being
622232812Sjmallett                                                         executed (BUSY=1) on this core */
623232812Sjmallett#else
624232812Sjmallett	uint64_t iid                          : 32;
625232812Sjmallett	uint64_t qid                          : 1;
626232812Sjmallett	uint64_t reserved_33_62               : 30;
627232812Sjmallett	uint64_t busy                         : 1;
628232812Sjmallett#endif
629232812Sjmallett	} s;
630232812Sjmallett	struct cvmx_zip_dbg_corex_inst_s      cn68xx;
631232812Sjmallett	struct cvmx_zip_dbg_corex_inst_s      cn68xxp1;
632232812Sjmallett};
633232812Sjmalletttypedef union cvmx_zip_dbg_corex_inst cvmx_zip_dbg_corex_inst_t;
634232812Sjmallett
635232812Sjmallett/**
636232812Sjmallett * cvmx_zip_dbg_core#_sta
637232812Sjmallett *
638232812Sjmallett * ZIP_DBG_COREX_STA =  ZIP Core Status Registers
639232812Sjmallett *
640232812Sjmallett * Description:
641232812Sjmallett * These register reflect the status of the zip cores.
642232812Sjmallett * This register is only for debug use.
643232812Sjmallett */
644232812Sjmallettunion cvmx_zip_dbg_corex_sta {
645232812Sjmallett	uint64_t u64;
646232812Sjmallett	struct cvmx_zip_dbg_corex_sta_s {
647232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
648232812Sjmallett	uint64_t busy                         : 1;  /**< Core State: 1 - Core is busy; 0 - Core is idle */
649232812Sjmallett	uint64_t reserved_37_62               : 26;
650232812Sjmallett	uint64_t ist                          : 5;  /**< State of current instruction is executing */
651232812Sjmallett	uint64_t nie                          : 32; /**< Number of instructions executed on this core */
652232812Sjmallett#else
653232812Sjmallett	uint64_t nie                          : 32;
654232812Sjmallett	uint64_t ist                          : 5;
655232812Sjmallett	uint64_t reserved_37_62               : 26;
656232812Sjmallett	uint64_t busy                         : 1;
657232812Sjmallett#endif
658232812Sjmallett	} s;
659232812Sjmallett	struct cvmx_zip_dbg_corex_sta_s       cn68xx;
660232812Sjmallett	struct cvmx_zip_dbg_corex_sta_s       cn68xxp1;
661232812Sjmallett};
662232812Sjmalletttypedef union cvmx_zip_dbg_corex_sta cvmx_zip_dbg_corex_sta_t;
663232812Sjmallett
664232812Sjmallett/**
665232812Sjmallett * cvmx_zip_dbg_que#_sta
666232812Sjmallett *
667232812Sjmallett * ZIP_DBG_QUEX_STA =  ZIP Queue Status Registers
668232812Sjmallett *
669232812Sjmallett * Description:
670232812Sjmallett * This register reflects status of the zip instruction queue.
671232812Sjmallett * This register is only for debug use.
672232812Sjmallett */
673232812Sjmallettunion cvmx_zip_dbg_quex_sta {
674232812Sjmallett	uint64_t u64;
675232812Sjmallett	struct cvmx_zip_dbg_quex_sta_s {
676232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
677232812Sjmallett	uint64_t busy                         : 1;  /**< Queue State: 1 - Queue is busy; 0 - Queue is idle */
678232812Sjmallett	uint64_t reserved_52_62               : 11;
679232812Sjmallett	uint64_t cdbc                         : 20; /**< Current DoorBell Counter */
680232812Sjmallett	uint64_t nii                          : 32; /**< Number of instructions issued from this queue.
681232812Sjmallett                                                         Reset to 0 when ZIP_QUEn_BUF is written. */
682232812Sjmallett#else
683232812Sjmallett	uint64_t nii                          : 32;
684232812Sjmallett	uint64_t cdbc                         : 20;
685232812Sjmallett	uint64_t reserved_52_62               : 11;
686232812Sjmallett	uint64_t busy                         : 1;
687232812Sjmallett#endif
688232812Sjmallett	} s;
689232812Sjmallett	struct cvmx_zip_dbg_quex_sta_s        cn68xx;
690232812Sjmallett	struct cvmx_zip_dbg_quex_sta_s        cn68xxp1;
691232812Sjmallett};
692232812Sjmalletttypedef union cvmx_zip_dbg_quex_sta cvmx_zip_dbg_quex_sta_t;
693232812Sjmallett
694232812Sjmallett/**
695215976Sjmallett * cvmx_zip_debug0
696215976Sjmallett *
697232812Sjmallett * ZIP_DEBUG0 =  ZIP DEBUG Register
698215976Sjmallett *
699232812Sjmallett * Description:
700215976Sjmallett */
701232812Sjmallettunion cvmx_zip_debug0 {
702215976Sjmallett	uint64_t u64;
703232812Sjmallett	struct cvmx_zip_debug0_s {
704232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
705232812Sjmallett	uint64_t reserved_30_63               : 34;
706232812Sjmallett	uint64_t asserts                      : 30; /**< FIFO assertion checks */
707215976Sjmallett#else
708232812Sjmallett	uint64_t asserts                      : 30;
709232812Sjmallett	uint64_t reserved_30_63               : 34;
710215976Sjmallett#endif
711215976Sjmallett	} s;
712232812Sjmallett	struct cvmx_zip_debug0_cn31xx {
713232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
714215976Sjmallett	uint64_t reserved_14_63               : 50;
715215976Sjmallett	uint64_t asserts                      : 14; /**< FIFO assertion checks */
716215976Sjmallett#else
717215976Sjmallett	uint64_t asserts                      : 14;
718215976Sjmallett	uint64_t reserved_14_63               : 50;
719215976Sjmallett#endif
720215976Sjmallett	} cn31xx;
721215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn38xx;
722215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn38xxp2;
723215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn56xx;
724215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn56xxp1;
725215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn58xx;
726215976Sjmallett	struct cvmx_zip_debug0_cn31xx         cn58xxp1;
727232812Sjmallett	struct cvmx_zip_debug0_cn61xx {
728232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
729232812Sjmallett	uint64_t reserved_17_63               : 47;
730232812Sjmallett	uint64_t asserts                      : 17; /**< FIFO assertion checks */
731232812Sjmallett#else
732232812Sjmallett	uint64_t asserts                      : 17;
733232812Sjmallett	uint64_t reserved_17_63               : 47;
734232812Sjmallett#endif
735232812Sjmallett	} cn61xx;
736232812Sjmallett	struct cvmx_zip_debug0_cn61xx         cn63xx;
737232812Sjmallett	struct cvmx_zip_debug0_cn61xx         cn63xxp1;
738232812Sjmallett	struct cvmx_zip_debug0_cn61xx         cn66xx;
739232812Sjmallett	struct cvmx_zip_debug0_s              cn68xx;
740232812Sjmallett	struct cvmx_zip_debug0_s              cn68xxp1;
741215976Sjmallett};
742215976Sjmalletttypedef union cvmx_zip_debug0 cvmx_zip_debug0_t;
743215976Sjmallett
744215976Sjmallett/**
745232812Sjmallett * cvmx_zip_ecc_ctl
746232812Sjmallett *
747232812Sjmallett * ZIP_ECC_CTL =  ZIP ECC Control Register
748232812Sjmallett *
749232812Sjmallett * Description:
750232812Sjmallett *   This register enables ECC for each individual internal memory that requires ECC. For debug purpose, it can also
751232812Sjmallett *   control 1 or 2 bits be flipped in the ECC data.
752232812Sjmallett */
753232812Sjmallettunion cvmx_zip_ecc_ctl {
754232812Sjmallett	uint64_t u64;
755232812Sjmallett	struct cvmx_zip_ecc_ctl_s {
756232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
757232812Sjmallett	uint64_t reserved_34_63               : 30;
758232812Sjmallett	uint64_t ibge                         : 2;  /**< controls instruction buffer flip syndrome
759232812Sjmallett                                                         2'b00       : No Error Generation
760232812Sjmallett                                                         2'b10, 2'b01: Flip 1 bit
761232812Sjmallett                                                         2'b11       : Flip 2 bits */
762232812Sjmallett	uint64_t reserved_1_31                : 31;
763232812Sjmallett	uint64_t iben                         : 1;  /**< 1: ECC Enabled for instruction buffer
764232812Sjmallett                                                         - 0: ECC Disabled for instruction buffer */
765232812Sjmallett#else
766232812Sjmallett	uint64_t iben                         : 1;
767232812Sjmallett	uint64_t reserved_1_31                : 31;
768232812Sjmallett	uint64_t ibge                         : 2;
769232812Sjmallett	uint64_t reserved_34_63               : 30;
770232812Sjmallett#endif
771232812Sjmallett	} s;
772232812Sjmallett	struct cvmx_zip_ecc_ctl_s             cn68xx;
773232812Sjmallett	struct cvmx_zip_ecc_ctl_s             cn68xxp1;
774232812Sjmallett};
775232812Sjmalletttypedef union cvmx_zip_ecc_ctl cvmx_zip_ecc_ctl_t;
776232812Sjmallett
777232812Sjmallett/**
778215976Sjmallett * cvmx_zip_error
779215976Sjmallett *
780232812Sjmallett * ZIP_ERROR =  ZIP ERROR Register
781215976Sjmallett *
782232812Sjmallett * Description:
783232812Sjmallett * This register is an alias to ZIP_INT_REG[DOORBELL0].
784232812Sjmallett * The purpose of this register is for software backward compatibility.
785215976Sjmallett */
786232812Sjmallettunion cvmx_zip_error {
787215976Sjmallett	uint64_t u64;
788232812Sjmallett	struct cvmx_zip_error_s {
789232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
790215976Sjmallett	uint64_t reserved_1_63                : 63;
791215976Sjmallett	uint64_t doorbell                     : 1;  /**< A doorbell count has overflowed */
792215976Sjmallett#else
793215976Sjmallett	uint64_t doorbell                     : 1;
794215976Sjmallett	uint64_t reserved_1_63                : 63;
795215976Sjmallett#endif
796215976Sjmallett	} s;
797215976Sjmallett	struct cvmx_zip_error_s               cn31xx;
798215976Sjmallett	struct cvmx_zip_error_s               cn38xx;
799215976Sjmallett	struct cvmx_zip_error_s               cn38xxp2;
800215976Sjmallett	struct cvmx_zip_error_s               cn56xx;
801215976Sjmallett	struct cvmx_zip_error_s               cn56xxp1;
802215976Sjmallett	struct cvmx_zip_error_s               cn58xx;
803215976Sjmallett	struct cvmx_zip_error_s               cn58xxp1;
804232812Sjmallett	struct cvmx_zip_error_s               cn61xx;
805215976Sjmallett	struct cvmx_zip_error_s               cn63xx;
806215976Sjmallett	struct cvmx_zip_error_s               cn63xxp1;
807232812Sjmallett	struct cvmx_zip_error_s               cn66xx;
808232812Sjmallett	struct cvmx_zip_error_s               cn68xx;
809232812Sjmallett	struct cvmx_zip_error_s               cn68xxp1;
810215976Sjmallett};
811215976Sjmalletttypedef union cvmx_zip_error cvmx_zip_error_t;
812215976Sjmallett
813215976Sjmallett/**
814232812Sjmallett * cvmx_zip_int_ena
815232812Sjmallett *
816232812Sjmallett * ZIP_INT_ENA =  ZIP Interrupt Enable Register
817232812Sjmallett *
818232812Sjmallett * Description:
819232812Sjmallett *   Only when an interrupt source is enabled, an interrupt can be fired.
820232812Sjmallett *   When a bit is set to 1, the corresponding interrupt is enabled.
821232812Sjmallett */
822232812Sjmallettunion cvmx_zip_int_ena {
823232812Sjmallett	uint64_t u64;
824232812Sjmallett	struct cvmx_zip_int_ena_s {
825232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
826232812Sjmallett	uint64_t reserved_10_63               : 54;
827232812Sjmallett	uint64_t doorbell1                    : 1;  /**< Enable for Doorbell 1 count overflow */
828232812Sjmallett	uint64_t doorbell0                    : 1;  /**< Enable for Doorbell 0 count overflow */
829232812Sjmallett	uint64_t reserved_3_7                 : 5;
830232812Sjmallett	uint64_t ibdbe                        : 1;  /**< Enable for IBUF Double Bit Error */
831232812Sjmallett	uint64_t ibsbe                        : 1;  /**< Enable for IBUF Single Bit Error */
832232812Sjmallett	uint64_t fife                         : 1;  /**< Enable for FIFO errors */
833232812Sjmallett#else
834232812Sjmallett	uint64_t fife                         : 1;
835232812Sjmallett	uint64_t ibsbe                        : 1;
836232812Sjmallett	uint64_t ibdbe                        : 1;
837232812Sjmallett	uint64_t reserved_3_7                 : 5;
838232812Sjmallett	uint64_t doorbell0                    : 1;
839232812Sjmallett	uint64_t doorbell1                    : 1;
840232812Sjmallett	uint64_t reserved_10_63               : 54;
841232812Sjmallett#endif
842232812Sjmallett	} s;
843232812Sjmallett	struct cvmx_zip_int_ena_s             cn68xx;
844232812Sjmallett	struct cvmx_zip_int_ena_s             cn68xxp1;
845232812Sjmallett};
846232812Sjmalletttypedef union cvmx_zip_int_ena cvmx_zip_int_ena_t;
847232812Sjmallett
848232812Sjmallett/**
849215976Sjmallett * cvmx_zip_int_mask
850215976Sjmallett *
851232812Sjmallett * ZIP_INT_MASK =  ZIP Interrupt Mask Register
852232812Sjmallett *
853232812Sjmallett * Description:
854232812Sjmallett * This register is an alias to ZIP_INT_ENA[DOORBELL0].
855232812Sjmallett * The purpose of this register is for software backward compatibility.
856215976Sjmallett */
857232812Sjmallettunion cvmx_zip_int_mask {
858215976Sjmallett	uint64_t u64;
859232812Sjmallett	struct cvmx_zip_int_mask_s {
860232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
861215976Sjmallett	uint64_t reserved_1_63                : 63;
862215976Sjmallett	uint64_t doorbell                     : 1;  /**< Bit mask corresponding to ZIP_ERROR[0] above */
863215976Sjmallett#else
864215976Sjmallett	uint64_t doorbell                     : 1;
865215976Sjmallett	uint64_t reserved_1_63                : 63;
866215976Sjmallett#endif
867215976Sjmallett	} s;
868215976Sjmallett	struct cvmx_zip_int_mask_s            cn31xx;
869215976Sjmallett	struct cvmx_zip_int_mask_s            cn38xx;
870215976Sjmallett	struct cvmx_zip_int_mask_s            cn38xxp2;
871215976Sjmallett	struct cvmx_zip_int_mask_s            cn56xx;
872215976Sjmallett	struct cvmx_zip_int_mask_s            cn56xxp1;
873215976Sjmallett	struct cvmx_zip_int_mask_s            cn58xx;
874215976Sjmallett	struct cvmx_zip_int_mask_s            cn58xxp1;
875232812Sjmallett	struct cvmx_zip_int_mask_s            cn61xx;
876215976Sjmallett	struct cvmx_zip_int_mask_s            cn63xx;
877215976Sjmallett	struct cvmx_zip_int_mask_s            cn63xxp1;
878232812Sjmallett	struct cvmx_zip_int_mask_s            cn66xx;
879232812Sjmallett	struct cvmx_zip_int_mask_s            cn68xx;
880232812Sjmallett	struct cvmx_zip_int_mask_s            cn68xxp1;
881215976Sjmallett};
882215976Sjmalletttypedef union cvmx_zip_int_mask cvmx_zip_int_mask_t;
883215976Sjmallett
884215976Sjmallett/**
885232812Sjmallett * cvmx_zip_int_reg
886232812Sjmallett *
887232812Sjmallett * ZIP_INT_REG =  ZIP Interrupt Status Register
888232812Sjmallett *
889232812Sjmallett * Description:
890232812Sjmallett *   This registers contains the status of all the interrupt source. An interrupt will be generated only when
891232812Sjmallett *   the corresponding interrupt source is enabled in ZIP_INT_ENA.
892232812Sjmallett */
893232812Sjmallettunion cvmx_zip_int_reg {
894232812Sjmallett	uint64_t u64;
895232812Sjmallett	struct cvmx_zip_int_reg_s {
896232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
897232812Sjmallett	uint64_t reserved_10_63               : 54;
898232812Sjmallett	uint64_t doorbell1                    : 1;  /**< Doorbell 1 count has overflowed */
899232812Sjmallett	uint64_t doorbell0                    : 1;  /**< Doorbell 0 count has overflowed */
900232812Sjmallett	uint64_t reserved_3_7                 : 5;
901232812Sjmallett	uint64_t ibdbe                        : 1;  /**< IBUF Double Bit Error */
902232812Sjmallett	uint64_t ibsbe                        : 1;  /**< IBUF Single Bit Error */
903232812Sjmallett	uint64_t fife                         : 1;  /**< FIFO errors and the detailed status is in
904232812Sjmallett                                                         ZIP_DEBUG0 */
905232812Sjmallett#else
906232812Sjmallett	uint64_t fife                         : 1;
907232812Sjmallett	uint64_t ibsbe                        : 1;
908232812Sjmallett	uint64_t ibdbe                        : 1;
909232812Sjmallett	uint64_t reserved_3_7                 : 5;
910232812Sjmallett	uint64_t doorbell0                    : 1;
911232812Sjmallett	uint64_t doorbell1                    : 1;
912232812Sjmallett	uint64_t reserved_10_63               : 54;
913232812Sjmallett#endif
914232812Sjmallett	} s;
915232812Sjmallett	struct cvmx_zip_int_reg_s             cn68xx;
916232812Sjmallett	struct cvmx_zip_int_reg_s             cn68xxp1;
917232812Sjmallett};
918232812Sjmalletttypedef union cvmx_zip_int_reg cvmx_zip_int_reg_t;
919232812Sjmallett
920232812Sjmallett/**
921232812Sjmallett * cvmx_zip_que#_buf
922232812Sjmallett *
923232812Sjmallett * NOTE: Fields NEXEC and SYNCFLUSH_CAPABLE are only valid for chips after O68 2.0 (including O68 2.0).
924232812Sjmallett *
925232812Sjmallett *
926232812Sjmallett *                  ZIP_QUEX_BUF =  ZIP Queue Buffer Parameter Registers
927232812Sjmallett *
928232812Sjmallett * Description:
929232812Sjmallett * These registers set the buffer parameters for the instruction queues . The size of the instruction buffer
930232812Sjmallett * segments is measured in uint64s.  The pool specifies (1 of 8 free lists to be used when freeing command
931232812Sjmallett * buffer segments).  The PTR field is overwritten with the next pointer each time that the command
932232812Sjmallett * buffer segment is exhausted. When quiescent (i.e. outstanding doorbell count is 0), it is safe
933232812Sjmallett * to rewrite this register to effectively reset the command buffer state machine.  New commands
934232812Sjmallett * will then be read from the newly specified command buffer pointer.
935232812Sjmallett */
936232812Sjmallettunion cvmx_zip_quex_buf {
937232812Sjmallett	uint64_t u64;
938232812Sjmallett	struct cvmx_zip_quex_buf_s {
939232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
940232812Sjmallett	uint64_t reserved_58_63               : 6;
941232812Sjmallett	uint64_t dwb                          : 9;  /**< Number of DontWriteBacks */
942232812Sjmallett	uint64_t pool                         : 3;  /**< Free list used to free command buffer segments */
943232812Sjmallett	uint64_t size                         : 13; /**< Number of uint64s per command buffer segment */
944232812Sjmallett	uint64_t ptr                          : 33; /**< Initial command buffer pointer[39:7] (128B-aligned) */
945232812Sjmallett#else
946232812Sjmallett	uint64_t ptr                          : 33;
947232812Sjmallett	uint64_t size                         : 13;
948232812Sjmallett	uint64_t pool                         : 3;
949232812Sjmallett	uint64_t dwb                          : 9;
950232812Sjmallett	uint64_t reserved_58_63               : 6;
951232812Sjmallett#endif
952232812Sjmallett	} s;
953232812Sjmallett	struct cvmx_zip_quex_buf_s            cn68xx;
954232812Sjmallett	struct cvmx_zip_quex_buf_s            cn68xxp1;
955232812Sjmallett};
956232812Sjmalletttypedef union cvmx_zip_quex_buf cvmx_zip_quex_buf_t;
957232812Sjmallett
958232812Sjmallett/**
959232812Sjmallett * cvmx_zip_que#_ecc_err_sta
960232812Sjmallett *
961232812Sjmallett * ZIP_QUEX_ECC_ERR_STA =  ZIP Queue ECC ERROR STATUS Register
962232812Sjmallett *
963232812Sjmallett * Description:
964232812Sjmallett *   This register contains the first ECC SBE/DBE status for the instruction buffer of a given zip instruction queue.
965232812Sjmallett */
966232812Sjmallettunion cvmx_zip_quex_ecc_err_sta {
967232812Sjmallett	uint64_t u64;
968232812Sjmallett	struct cvmx_zip_quex_ecc_err_sta_s {
969232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
970232812Sjmallett	uint64_t reserved_35_63               : 29;
971232812Sjmallett	uint64_t wnum                         : 3;  /**< Index of the first IWORD that DBE happened
972232812Sjmallett                                                         (Valid when ZIP_INT_REG[IBDBE] or [IBSBE] is set). */
973232812Sjmallett	uint64_t inum                         : 32; /**< Index of the first instruction that DBE happened
974232812Sjmallett                                                         (Valid when ZIP_INT_REG[IBDBE] or [IBSBE] is set). */
975232812Sjmallett#else
976232812Sjmallett	uint64_t inum                         : 32;
977232812Sjmallett	uint64_t wnum                         : 3;
978232812Sjmallett	uint64_t reserved_35_63               : 29;
979232812Sjmallett#endif
980232812Sjmallett	} s;
981232812Sjmallett	struct cvmx_zip_quex_ecc_err_sta_s    cn68xx;
982232812Sjmallett	struct cvmx_zip_quex_ecc_err_sta_s    cn68xxp1;
983232812Sjmallett};
984232812Sjmalletttypedef union cvmx_zip_quex_ecc_err_sta cvmx_zip_quex_ecc_err_sta_t;
985232812Sjmallett
986232812Sjmallett/**
987232812Sjmallett * cvmx_zip_que#_map
988232812Sjmallett *
989232812Sjmallett * ZIP_QUEX_MAP =  ZIP Queue Mapping Registers
990232812Sjmallett *
991232812Sjmallett * Description:
992232812Sjmallett *  These registers control how each instruction queue maps to 2 zip cores.
993232812Sjmallett *  Bit[0] corresponds to zip core 0 and bit[1] corresponds to zip core 1.
994232812Sjmallett *  A "1" means instructions from the queue can be served by the corresponding zip core.
995232812Sjmallett */
996232812Sjmallettunion cvmx_zip_quex_map {
997232812Sjmallett	uint64_t u64;
998232812Sjmallett	struct cvmx_zip_quex_map_s {
999232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
1000232812Sjmallett	uint64_t reserved_2_63                : 62;
1001232812Sjmallett	uint64_t zce                          : 2;  /**< Zip Core Enable
1002232812Sjmallett                                                         Controls the logical instruction queue can be
1003232812Sjmallett                                                         serviced by which zip core. Setting ZCE==0
1004232812Sjmallett                                                         effectively disables the queue from being served
1005232812Sjmallett                                                         (however the instruction can still be fetched).
1006232812Sjmallett                                                         ZCE[1]=1, zip core 1 can serve the queue.
1007232812Sjmallett                                                         ZCE[0]=1, zip core 0 can serve the queue. */
1008232812Sjmallett#else
1009232812Sjmallett	uint64_t zce                          : 2;
1010232812Sjmallett	uint64_t reserved_2_63                : 62;
1011232812Sjmallett#endif
1012232812Sjmallett	} s;
1013232812Sjmallett	struct cvmx_zip_quex_map_s            cn68xx;
1014232812Sjmallett	struct cvmx_zip_quex_map_s            cn68xxp1;
1015232812Sjmallett};
1016232812Sjmalletttypedef union cvmx_zip_quex_map cvmx_zip_quex_map_t;
1017232812Sjmallett
1018232812Sjmallett/**
1019232812Sjmallett * cvmx_zip_que_ena
1020232812Sjmallett *
1021232812Sjmallett * ZIP_QUE_ENA =  ZIP Queue Enable Register
1022232812Sjmallett *
1023232812Sjmallett * Description:
1024232812Sjmallett *    If a queue is disabled, ZIP_CTL will stop fetching instructions from the queue.
1025232812Sjmallett */
1026232812Sjmallettunion cvmx_zip_que_ena {
1027232812Sjmallett	uint64_t u64;
1028232812Sjmallett	struct cvmx_zip_que_ena_s {
1029232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
1030232812Sjmallett	uint64_t reserved_2_63                : 62;
1031232812Sjmallett	uint64_t ena                          : 2;  /**< Enables the logical instruction queues.
1032232812Sjmallett                                                         - 1: Queue is enabled. 0: Queue is disabled
1033232812Sjmallett                                                          ENA[1]=1 enables queue 1
1034232812Sjmallett                                                          ENA[0]=1 enables queue 0 */
1035232812Sjmallett#else
1036232812Sjmallett	uint64_t ena                          : 2;
1037232812Sjmallett	uint64_t reserved_2_63                : 62;
1038232812Sjmallett#endif
1039232812Sjmallett	} s;
1040232812Sjmallett	struct cvmx_zip_que_ena_s             cn68xx;
1041232812Sjmallett	struct cvmx_zip_que_ena_s             cn68xxp1;
1042232812Sjmallett};
1043232812Sjmalletttypedef union cvmx_zip_que_ena cvmx_zip_que_ena_t;
1044232812Sjmallett
1045232812Sjmallett/**
1046232812Sjmallett * cvmx_zip_que_pri
1047232812Sjmallett *
1048232812Sjmallett * ZIP_QUE_PRI =  ZIP Queue Priority Register
1049232812Sjmallett *
1050232812Sjmallett * Description:
1051232812Sjmallett *   This registers defines the priority between instruction queue 1 and instruction queue 0.
1052232812Sjmallett *   Bit[0] corresponds to queue 0 and bit[1] corresponds to queue 1. A "1" means high priority.
1053232812Sjmallett */
1054232812Sjmallettunion cvmx_zip_que_pri {
1055232812Sjmallett	uint64_t u64;
1056232812Sjmallett	struct cvmx_zip_que_pri_s {
1057232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
1058232812Sjmallett	uint64_t reserved_2_63                : 62;
1059232812Sjmallett	uint64_t pri                          : 2;  /**< Priority
1060232812Sjmallett                                                         2'b10: Queue 1 has higher priority.
1061232812Sjmallett                                                         2'b01: Queue 0 has higher priority.
1062232812Sjmallett                                                         2'b11,2'b00: round robin */
1063232812Sjmallett#else
1064232812Sjmallett	uint64_t pri                          : 2;
1065232812Sjmallett	uint64_t reserved_2_63                : 62;
1066232812Sjmallett#endif
1067232812Sjmallett	} s;
1068232812Sjmallett	struct cvmx_zip_que_pri_s             cn68xx;
1069232812Sjmallett	struct cvmx_zip_que_pri_s             cn68xxp1;
1070232812Sjmallett};
1071232812Sjmalletttypedef union cvmx_zip_que_pri cvmx_zip_que_pri_t;
1072232812Sjmallett
1073232812Sjmallett/**
1074215976Sjmallett * cvmx_zip_throttle
1075215976Sjmallett *
1076232812Sjmallett * ZIP_THROTTLE =  ZIP Throttle Register
1077232812Sjmallett *
1078232812Sjmallett * Description:
1079232812Sjmallett * This register controls the maximum number of in-flight X2I data fetch transactions.  Values > 16 are illegal.
1080232812Sjmallett * Writing 0 to this register causes the ZIP module to temporarily suspend NCB accesses; it is not recommended
1081232812Sjmallett * for normal operation, but may be useful for diagnostics.
1082215976Sjmallett */
1083232812Sjmallettunion cvmx_zip_throttle {
1084215976Sjmallett	uint64_t u64;
1085232812Sjmallett	struct cvmx_zip_throttle_s {
1086232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
1087232812Sjmallett	uint64_t reserved_5_63                : 59;
1088232812Sjmallett	uint64_t max_infl                     : 5;  /**< Maximum number of in-flight data fetch transactions on
1089232812Sjmallett                                                         NCB. */
1090232812Sjmallett#else
1091232812Sjmallett	uint64_t max_infl                     : 5;
1092232812Sjmallett	uint64_t reserved_5_63                : 59;
1093232812Sjmallett#endif
1094232812Sjmallett	} s;
1095232812Sjmallett	struct cvmx_zip_throttle_cn61xx {
1096232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD
1097215976Sjmallett	uint64_t reserved_4_63                : 60;
1098232812Sjmallett	uint64_t max_infl                     : 4;  /**< Maximum number of inflight data fetch transactions
1099232812Sjmallett                                                         on NCB. */
1100215976Sjmallett#else
1101215976Sjmallett	uint64_t max_infl                     : 4;
1102215976Sjmallett	uint64_t reserved_4_63                : 60;
1103215976Sjmallett#endif
1104232812Sjmallett	} cn61xx;
1105232812Sjmallett	struct cvmx_zip_throttle_cn61xx       cn63xx;
1106232812Sjmallett	struct cvmx_zip_throttle_cn61xx       cn63xxp1;
1107232812Sjmallett	struct cvmx_zip_throttle_cn61xx       cn66xx;
1108232812Sjmallett	struct cvmx_zip_throttle_s            cn68xx;
1109232812Sjmallett	struct cvmx_zip_throttle_s            cn68xxp1;
1110215976Sjmallett};
1111215976Sjmalletttypedef union cvmx_zip_throttle cvmx_zip_throttle_t;
1112215976Sjmallett
1113215976Sjmallett#endif
1114