1640035a2SMahipal Challa /***********************license start************************************
2640035a2SMahipal Challa  * Copyright (c) 2003-2017 Cavium, Inc.
3640035a2SMahipal Challa  * All rights reserved.
4640035a2SMahipal Challa  *
5640035a2SMahipal Challa  * License: one of 'Cavium License' or 'GNU General Public License Version 2'
6640035a2SMahipal Challa  *
7640035a2SMahipal Challa  * This file is provided under the terms of the Cavium License (see below)
8640035a2SMahipal Challa  * or under the terms of GNU General Public License, Version 2, as
9640035a2SMahipal Challa  * published by the Free Software Foundation. When using or redistributing
10640035a2SMahipal Challa  * this file, you may do so under either license.
11640035a2SMahipal Challa  *
12640035a2SMahipal Challa  * Cavium License:  Redistribution and use in source and binary forms, with
13640035a2SMahipal Challa  * or without modification, are permitted provided that the following
14640035a2SMahipal Challa  * conditions are met:
15640035a2SMahipal Challa  *
16640035a2SMahipal Challa  *  * Redistributions of source code must retain the above copyright
17640035a2SMahipal Challa  *    notice, this list of conditions and the following disclaimer.
18640035a2SMahipal Challa  *
19640035a2SMahipal Challa  *  * Redistributions in binary form must reproduce the above
20640035a2SMahipal Challa  *    copyright notice, this list of conditions and the following
21640035a2SMahipal Challa  *    disclaimer in the documentation and/or other materials provided
22640035a2SMahipal Challa  *    with the distribution.
23640035a2SMahipal Challa  *
24640035a2SMahipal Challa  *  * Neither the name of Cavium Inc. nor the names of its contributors may be
25640035a2SMahipal Challa  *    used to endorse or promote products derived from this software without
26640035a2SMahipal Challa  *    specific prior written permission.
27640035a2SMahipal Challa  *
28640035a2SMahipal Challa  * This Software, including technical data, may be subject to U.S. export
29640035a2SMahipal Challa  * control laws, including the U.S. Export Administration Act and its
30640035a2SMahipal Challa  * associated regulations, and may be subject to export or import
31640035a2SMahipal Challa  * regulations in other countries.
32640035a2SMahipal Challa  *
33640035a2SMahipal Challa  * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
34640035a2SMahipal Challa  * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS
35640035a2SMahipal Challa  * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
36640035a2SMahipal Challa  * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY
37640035a2SMahipal Challa  * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT
38640035a2SMahipal Challa  * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY)
39640035a2SMahipal Challa  * WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A
40640035a2SMahipal Challa  * PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET
41640035a2SMahipal Challa  * ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE
42640035a2SMahipal Challa  * ENTIRE  RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES
43640035a2SMahipal Challa  * WITH YOU.
44640035a2SMahipal Challa  ***********************license end**************************************/
45640035a2SMahipal Challa 
46640035a2SMahipal Challa #ifndef __ZIP_REGS_H__
47640035a2SMahipal Challa #define __ZIP_REGS_H__
48640035a2SMahipal Challa 
49640035a2SMahipal Challa /*
50640035a2SMahipal Challa  * Configuration and status register (CSR) address and type definitions for
51640035a2SMahipal Challa  * Cavium ZIP.
52640035a2SMahipal Challa  */
53640035a2SMahipal Challa 
54640035a2SMahipal Challa #include <linux/kern_levels.h>
55640035a2SMahipal Challa 
56640035a2SMahipal Challa /* ZIP invocation result completion status codes */
57640035a2SMahipal Challa #define ZIP_CMD_NOTDONE        0x0
58640035a2SMahipal Challa 
59640035a2SMahipal Challa /* Successful completion. */
60640035a2SMahipal Challa #define ZIP_CMD_SUCCESS        0x1
61640035a2SMahipal Challa 
62640035a2SMahipal Challa /* Output truncated */
63640035a2SMahipal Challa #define ZIP_CMD_DTRUNC         0x2
64640035a2SMahipal Challa 
65640035a2SMahipal Challa /* Dynamic Stop */
66640035a2SMahipal Challa #define ZIP_CMD_DYNAMIC_STOP   0x3
67640035a2SMahipal Challa 
68640035a2SMahipal Challa /* Uncompress ran out of input data when IWORD0[EF] was set */
69640035a2SMahipal Challa #define ZIP_CMD_ITRUNC         0x4
70640035a2SMahipal Challa 
71640035a2SMahipal Challa /* Uncompress found the reserved block type 3 */
72640035a2SMahipal Challa #define ZIP_CMD_RBLOCK         0x5
73640035a2SMahipal Challa 
74640035a2SMahipal Challa /*
75640035a2SMahipal Challa  * Uncompress found LEN != ZIP_CMD_NLEN in an uncompressed block in the input.
76640035a2SMahipal Challa  */
77640035a2SMahipal Challa #define ZIP_CMD_NLEN           0x6
78640035a2SMahipal Challa 
79640035a2SMahipal Challa /* Uncompress found a bad code in the main Huffman codes. */
80640035a2SMahipal Challa #define ZIP_CMD_BADCODE        0x7
81640035a2SMahipal Challa 
82640035a2SMahipal Challa /* Uncompress found a bad code in the 19 Huffman codes encoding lengths. */
83640035a2SMahipal Challa #define ZIP_CMD_BADCODE2       0x8
84640035a2SMahipal Challa 
85640035a2SMahipal Challa /* Compress found a zero-length input. */
86640035a2SMahipal Challa #define ZIP_CMD_ZERO_LEN       0x9
87640035a2SMahipal Challa 
88640035a2SMahipal Challa /* The compress or decompress encountered an internal parity error. */
89640035a2SMahipal Challa #define ZIP_CMD_PARITY         0xA
90640035a2SMahipal Challa 
91640035a2SMahipal Challa /*
92640035a2SMahipal Challa  * Uncompress found a string identifier that precedes the uncompressed data and
93640035a2SMahipal Challa  * decompression history.
94640035a2SMahipal Challa  */
95640035a2SMahipal Challa #define ZIP_CMD_FATAL          0xB
96640035a2SMahipal Challa 
97640035a2SMahipal Challa /**
98640035a2SMahipal Challa  * enum zip_int_vec_e - ZIP MSI-X Vector Enumeration, enumerates the MSI-X
99640035a2SMahipal Challa  * interrupt vectors.
100640035a2SMahipal Challa  */
101640035a2SMahipal Challa enum zip_int_vec_e {
102640035a2SMahipal Challa 	ZIP_INT_VEC_E_ECCE = 0x10,
103640035a2SMahipal Challa 	ZIP_INT_VEC_E_FIFE = 0x11,
104640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE0_DONE = 0x0,
105640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE0_ERR = 0x8,
106640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE1_DONE = 0x1,
107640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE1_ERR = 0x9,
108640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE2_DONE = 0x2,
109640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE2_ERR = 0xa,
110640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE3_DONE = 0x3,
111640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE3_ERR = 0xb,
112640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE4_DONE = 0x4,
113640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE4_ERR = 0xc,
114640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE5_DONE = 0x5,
115640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE5_ERR = 0xd,
116640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE6_DONE = 0x6,
117640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE6_ERR = 0xe,
118640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE7_DONE = 0x7,
119640035a2SMahipal Challa 	ZIP_INT_VEC_E_QUE7_ERR = 0xf,
120640035a2SMahipal Challa 	ZIP_INT_VEC_E_ENUM_LAST = 0x12,
121640035a2SMahipal Challa };
122640035a2SMahipal Challa 
123640035a2SMahipal Challa /**
124640035a2SMahipal Challa  * union zip_zptr_addr_s - ZIP Generic Pointer Structure for ADDR.
125640035a2SMahipal Challa  *
126640035a2SMahipal Challa  * It is the generic format of pointers in ZIP_INST_S.
127640035a2SMahipal Challa  */
128640035a2SMahipal Challa union zip_zptr_addr_s {
129640035a2SMahipal Challa 	u64 u_reg64;
130640035a2SMahipal Challa 	struct {
131640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
132640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
133640035a2SMahipal Challa 		u64 addr                        : 49;
134640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
135640035a2SMahipal Challa 		u64 addr                        : 49;
136640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
137640035a2SMahipal Challa #endif
138640035a2SMahipal Challa 	} s;
139640035a2SMahipal Challa 
140640035a2SMahipal Challa };
141640035a2SMahipal Challa 
142640035a2SMahipal Challa /**
143640035a2SMahipal Challa  * union zip_zptr_ctl_s - ZIP Generic Pointer Structure for CTL.
144640035a2SMahipal Challa  *
145640035a2SMahipal Challa  * It is the generic format of pointers in ZIP_INST_S.
146640035a2SMahipal Challa  */
147640035a2SMahipal Challa union zip_zptr_ctl_s {
148640035a2SMahipal Challa 	u64 u_reg64;
149640035a2SMahipal Challa 	struct {
150640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
151640035a2SMahipal Challa 		u64 reserved_112_127            : 16;
152640035a2SMahipal Challa 		u64 length                      : 16;
153640035a2SMahipal Challa 		u64 reserved_67_95              : 29;
154640035a2SMahipal Challa 		u64 fw                          : 1;
155640035a2SMahipal Challa 		u64 nc                          : 1;
156640035a2SMahipal Challa 		u64 data_be                     : 1;
157640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
158640035a2SMahipal Challa 		u64 data_be                     : 1;
159640035a2SMahipal Challa 		u64 nc                          : 1;
160640035a2SMahipal Challa 		u64 fw                          : 1;
161640035a2SMahipal Challa 		u64 reserved_67_95              : 29;
162640035a2SMahipal Challa 		u64 length                      : 16;
163640035a2SMahipal Challa 		u64 reserved_112_127            : 16;
164640035a2SMahipal Challa #endif
165640035a2SMahipal Challa 	} s;
166640035a2SMahipal Challa };
167640035a2SMahipal Challa 
168640035a2SMahipal Challa /**
169640035a2SMahipal Challa  * union zip_inst_s - ZIP Instruction Structure.
170640035a2SMahipal Challa  * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 within
171640035a2SMahipal Challa  * the structure).
172640035a2SMahipal Challa  */
173640035a2SMahipal Challa union zip_inst_s {
174640035a2SMahipal Challa 	u64 u_reg64[16];
175640035a2SMahipal Challa 	struct {
176640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
177640035a2SMahipal Challa 		u64 doneint                     : 1;
178640035a2SMahipal Challa 		u64 reserved_56_62              : 7;
179640035a2SMahipal Challa 		u64 totaloutputlength           : 24;
180640035a2SMahipal Challa 		u64 reserved_27_31              : 5;
181640035a2SMahipal Challa 		u64 exn                         : 3;
182640035a2SMahipal Challa 		u64 reserved_23_23              : 1;
183640035a2SMahipal Challa 		u64 exbits                      : 7;
184640035a2SMahipal Challa 		u64 reserved_12_15              : 4;
185640035a2SMahipal Challa 		u64 sf                          : 1;
186640035a2SMahipal Challa 		u64 ss                          : 2;
187640035a2SMahipal Challa 		u64 cc                          : 2;
188640035a2SMahipal Challa 		u64 ef                          : 1;
189640035a2SMahipal Challa 		u64 bf                          : 1;
190640035a2SMahipal Challa 		u64 ce                          : 1;
191640035a2SMahipal Challa 		u64 reserved_3_3                : 1;
192640035a2SMahipal Challa 		u64 ds                          : 1;
193640035a2SMahipal Challa 		u64 dg                          : 1;
194640035a2SMahipal Challa 		u64 hg                          : 1;
195640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
196640035a2SMahipal Challa 		u64 hg                          : 1;
197640035a2SMahipal Challa 		u64 dg                          : 1;
198640035a2SMahipal Challa 		u64 ds                          : 1;
199640035a2SMahipal Challa 		u64 reserved_3_3                : 1;
200640035a2SMahipal Challa 		u64 ce                          : 1;
201640035a2SMahipal Challa 		u64 bf                          : 1;
202640035a2SMahipal Challa 		u64 ef                          : 1;
203640035a2SMahipal Challa 		u64 cc                          : 2;
204640035a2SMahipal Challa 		u64 ss                          : 2;
205640035a2SMahipal Challa 		u64 sf                          : 1;
206640035a2SMahipal Challa 		u64 reserved_12_15              : 4;
207640035a2SMahipal Challa 		u64 exbits                      : 7;
208640035a2SMahipal Challa 		u64 reserved_23_23              : 1;
209640035a2SMahipal Challa 		u64 exn                         : 3;
210640035a2SMahipal Challa 		u64 reserved_27_31              : 5;
211640035a2SMahipal Challa 		u64 totaloutputlength           : 24;
212640035a2SMahipal Challa 		u64 reserved_56_62              : 7;
213640035a2SMahipal Challa 		u64 doneint                     : 1;
214640035a2SMahipal Challa #endif
215640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
216640035a2SMahipal Challa 		u64 historylength               : 16;
217640035a2SMahipal Challa 		u64 reserved_96_111             : 16;
218640035a2SMahipal Challa 		u64 adlercrc32                  : 32;
219640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
220640035a2SMahipal Challa 		u64 adlercrc32                  : 32;
221640035a2SMahipal Challa 		u64 reserved_96_111             : 16;
222640035a2SMahipal Challa 		u64 historylength               : 16;
223640035a2SMahipal Challa #endif
224640035a2SMahipal Challa 		union zip_zptr_addr_s ctx_ptr_addr;
225640035a2SMahipal Challa 		union zip_zptr_ctl_s ctx_ptr_ctl;
226640035a2SMahipal Challa 		union zip_zptr_addr_s his_ptr_addr;
227640035a2SMahipal Challa 		union zip_zptr_ctl_s his_ptr_ctl;
228640035a2SMahipal Challa 		union zip_zptr_addr_s inp_ptr_addr;
229640035a2SMahipal Challa 		union zip_zptr_ctl_s inp_ptr_ctl;
230640035a2SMahipal Challa 		union zip_zptr_addr_s out_ptr_addr;
231640035a2SMahipal Challa 		union zip_zptr_ctl_s out_ptr_ctl;
232640035a2SMahipal Challa 		union zip_zptr_addr_s res_ptr_addr;
233640035a2SMahipal Challa 		union zip_zptr_ctl_s res_ptr_ctl;
234640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
235640035a2SMahipal Challa 		u64 reserved_817_831            : 15;
236640035a2SMahipal Challa 		u64 wq_ptr                      : 49;
237640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
238640035a2SMahipal Challa 		u64 wq_ptr                      : 49;
239640035a2SMahipal Challa 		u64 reserved_817_831            : 15;
240640035a2SMahipal Challa #endif
241640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
242640035a2SMahipal Challa 		u64 reserved_882_895            : 14;
243640035a2SMahipal Challa 		u64 tt                          : 2;
244640035a2SMahipal Challa 		u64 reserved_874_879            : 6;
245640035a2SMahipal Challa 		u64 grp                         : 10;
246640035a2SMahipal Challa 		u64 tag                         : 32;
247640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
248640035a2SMahipal Challa 		u64 tag                         : 32;
249640035a2SMahipal Challa 		u64 grp                         : 10;
250640035a2SMahipal Challa 		u64 reserved_874_879            : 6;
251640035a2SMahipal Challa 		u64 tt                          : 2;
252640035a2SMahipal Challa 		u64 reserved_882_895            : 14;
253640035a2SMahipal Challa #endif
254640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
255640035a2SMahipal Challa 		u64 reserved_896_959            : 64;
256640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
257640035a2SMahipal Challa 		u64 reserved_896_959            : 64;
258640035a2SMahipal Challa #endif
259640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
260640035a2SMahipal Challa 		u64 reserved_960_1023           : 64;
261640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
262640035a2SMahipal Challa 		u64 reserved_960_1023           : 64;
263640035a2SMahipal Challa #endif
264640035a2SMahipal Challa 	} s;
265640035a2SMahipal Challa };
266640035a2SMahipal Challa 
267640035a2SMahipal Challa /**
268640035a2SMahipal Challa  * union zip_nptr_s - ZIP Instruction Next-Chunk-Buffer Pointer (NPTR)
269640035a2SMahipal Challa  * Structure
270640035a2SMahipal Challa  *
271640035a2SMahipal Challa  * ZIP_NPTR structure is used to chain all the zip instruction buffers
272640035a2SMahipal Challa  * together. ZIP instruction buffers are managed (allocated and released) by
273640035a2SMahipal Challa  * the software.
274640035a2SMahipal Challa  */
275640035a2SMahipal Challa union zip_nptr_s {
276640035a2SMahipal Challa 	u64 u_reg64;
277640035a2SMahipal Challa 	struct {
278640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
279640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
280640035a2SMahipal Challa 		u64 addr                        : 49;
281640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
282640035a2SMahipal Challa 		u64 addr                        : 49;
283640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
284640035a2SMahipal Challa #endif
285640035a2SMahipal Challa 	} s;
286640035a2SMahipal Challa };
287640035a2SMahipal Challa 
288640035a2SMahipal Challa /**
289640035a2SMahipal Challa  * union zip_zptr_s - ZIP Generic Pointer Structure.
290640035a2SMahipal Challa  *
291640035a2SMahipal Challa  * It is the generic format of pointers in ZIP_INST_S.
292640035a2SMahipal Challa  */
293640035a2SMahipal Challa union zip_zptr_s {
294640035a2SMahipal Challa 	u64 u_reg64[2];
295640035a2SMahipal Challa 	struct {
296640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
297640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
298640035a2SMahipal Challa 		u64 addr                        : 49;
299640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
300640035a2SMahipal Challa 		u64 addr                        : 49;
301640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
302640035a2SMahipal Challa #endif
303640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
304640035a2SMahipal Challa 		u64 reserved_112_127            : 16;
305640035a2SMahipal Challa 		u64 length                      : 16;
306640035a2SMahipal Challa 		u64 reserved_67_95              : 29;
307640035a2SMahipal Challa 		u64 fw                          : 1;
308640035a2SMahipal Challa 		u64 nc                          : 1;
309640035a2SMahipal Challa 		u64 data_be                     : 1;
310640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
311640035a2SMahipal Challa 		u64 data_be                     : 1;
312640035a2SMahipal Challa 		u64 nc                          : 1;
313640035a2SMahipal Challa 		u64 fw                          : 1;
314640035a2SMahipal Challa 		u64 reserved_67_95              : 29;
315640035a2SMahipal Challa 		u64 length                      : 16;
316640035a2SMahipal Challa 		u64 reserved_112_127            : 16;
317640035a2SMahipal Challa #endif
318640035a2SMahipal Challa 	} s;
319640035a2SMahipal Challa };
320640035a2SMahipal Challa 
321640035a2SMahipal Challa /**
322640035a2SMahipal Challa  * union zip_zres_s - ZIP Result Structure
323640035a2SMahipal Challa  *
324640035a2SMahipal Challa  * The ZIP coprocessor writes the result structure after it completes the
325640035a2SMahipal Challa  * invocation. The result structure is exactly 24 bytes, and each invocation of
326640035a2SMahipal Challa  * the ZIP coprocessor produces exactly one result structure.
327640035a2SMahipal Challa  */
328640035a2SMahipal Challa union zip_zres_s {
329640035a2SMahipal Challa 	u64 u_reg64[3];
330640035a2SMahipal Challa 	struct {
331640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
332640035a2SMahipal Challa 		u64 crc32                       : 32;
333640035a2SMahipal Challa 		u64 adler32                     : 32;
334640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
335640035a2SMahipal Challa 		u64 adler32                     : 32;
336640035a2SMahipal Challa 		u64 crc32                       : 32;
337640035a2SMahipal Challa #endif
338640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
339640035a2SMahipal Challa 		u64 totalbyteswritten           : 32;
340640035a2SMahipal Challa 		u64 totalbytesread              : 32;
341640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
342640035a2SMahipal Challa 		u64 totalbytesread              : 32;
343640035a2SMahipal Challa 		u64 totalbyteswritten           : 32;
344640035a2SMahipal Challa #endif
345640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
346640035a2SMahipal Challa 		u64 totalbitsprocessed          : 32;
347640035a2SMahipal Challa 		u64 doneint                     : 1;
348640035a2SMahipal Challa 		u64 reserved_155_158            : 4;
349640035a2SMahipal Challa 		u64 exn                         : 3;
350640035a2SMahipal Challa 		u64 reserved_151_151            : 1;
351640035a2SMahipal Challa 		u64 exbits                      : 7;
352640035a2SMahipal Challa 		u64 reserved_137_143            : 7;
353640035a2SMahipal Challa 		u64 ef                          : 1;
354640035a2SMahipal Challa 
355640035a2SMahipal Challa 		volatile u64 compcode           : 8;
356640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
357640035a2SMahipal Challa 
358640035a2SMahipal Challa 		volatile u64 compcode           : 8;
359640035a2SMahipal Challa 		u64 ef                          : 1;
360640035a2SMahipal Challa 		u64 reserved_137_143            : 7;
361640035a2SMahipal Challa 		u64 exbits                      : 7;
362640035a2SMahipal Challa 		u64 reserved_151_151            : 1;
363640035a2SMahipal Challa 		u64 exn                         : 3;
364640035a2SMahipal Challa 		u64 reserved_155_158            : 4;
365640035a2SMahipal Challa 		u64 doneint                     : 1;
366640035a2SMahipal Challa 		u64 totalbitsprocessed          : 32;
367640035a2SMahipal Challa #endif
368640035a2SMahipal Challa 	} s;
369640035a2SMahipal Challa };
370640035a2SMahipal Challa 
371640035a2SMahipal Challa /**
372640035a2SMahipal Challa  * union zip_cmd_ctl - Structure representing the register that controls
373640035a2SMahipal Challa  * clock and reset.
374640035a2SMahipal Challa  */
375640035a2SMahipal Challa union zip_cmd_ctl {
376640035a2SMahipal Challa 	u64 u_reg64;
377640035a2SMahipal Challa 	struct zip_cmd_ctl_s {
378640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
379640035a2SMahipal Challa 		u64 reserved_2_63               : 62;
380640035a2SMahipal Challa 		u64 forceclk                    : 1;
381640035a2SMahipal Challa 		u64 reset                       : 1;
382640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
383640035a2SMahipal Challa 		u64 reset                       : 1;
384640035a2SMahipal Challa 		u64 forceclk                    : 1;
385640035a2SMahipal Challa 		u64 reserved_2_63               : 62;
386640035a2SMahipal Challa #endif
387640035a2SMahipal Challa 	} s;
388640035a2SMahipal Challa };
389640035a2SMahipal Challa 
390640035a2SMahipal Challa #define ZIP_CMD_CTL 0x0ull
391640035a2SMahipal Challa 
392640035a2SMahipal Challa /**
393640035a2SMahipal Challa  * union zip_constants - Data structure representing the register that contains
394640035a2SMahipal Challa  * all of the current implementation-related parameters of the zip core in this
395640035a2SMahipal Challa  * chip.
396640035a2SMahipal Challa  */
397640035a2SMahipal Challa union zip_constants {
398640035a2SMahipal Challa 	u64 u_reg64;
399640035a2SMahipal Challa 	struct zip_constants_s {
400640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
401640035a2SMahipal Challa 		u64 nexec                       : 8;
402640035a2SMahipal Challa 		u64 reserved_49_55              : 7;
403640035a2SMahipal Challa 		u64 syncflush_capable           : 1;
404640035a2SMahipal Challa 		u64 depth                       : 16;
405640035a2SMahipal Challa 		u64 onfsize                     : 12;
406640035a2SMahipal Challa 		u64 ctxsize                     : 12;
407640035a2SMahipal Challa 		u64 reserved_1_7                : 7;
408640035a2SMahipal Challa 		u64 disabled                    : 1;
409640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
410640035a2SMahipal Challa 		u64 disabled                    : 1;
411640035a2SMahipal Challa 		u64 reserved_1_7                : 7;
412640035a2SMahipal Challa 		u64 ctxsize                     : 12;
413640035a2SMahipal Challa 		u64 onfsize                     : 12;
414640035a2SMahipal Challa 		u64 depth                       : 16;
415640035a2SMahipal Challa 		u64 syncflush_capable           : 1;
416640035a2SMahipal Challa 		u64 reserved_49_55              : 7;
417640035a2SMahipal Challa 		u64 nexec                       : 8;
418640035a2SMahipal Challa #endif
419640035a2SMahipal Challa 	} s;
420640035a2SMahipal Challa };
421640035a2SMahipal Challa 
422640035a2SMahipal Challa #define ZIP_CONSTANTS 0x00A0ull
423640035a2SMahipal Challa 
424640035a2SMahipal Challa /**
425640035a2SMahipal Challa  * union zip_corex_bist_status - Represents registers which have the BIST
426640035a2SMahipal Challa  * status of memories in zip cores.
427640035a2SMahipal Challa  *
428640035a2SMahipal Challa  * Each bit is the BIST result of an individual memory
429640035a2SMahipal Challa  * (per bit, 0 = pass and 1 = fail).
430640035a2SMahipal Challa  */
431640035a2SMahipal Challa union zip_corex_bist_status {
432640035a2SMahipal Challa 	u64 u_reg64;
433640035a2SMahipal Challa 	struct zip_corex_bist_status_s {
434640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
435640035a2SMahipal Challa 		u64 reserved_53_63              : 11;
436640035a2SMahipal Challa 		u64 bstatus                     : 53;
437640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
438640035a2SMahipal Challa 		u64 bstatus                     : 53;
439640035a2SMahipal Challa 		u64 reserved_53_63              : 11;
440640035a2SMahipal Challa #endif
441640035a2SMahipal Challa 	} s;
442640035a2SMahipal Challa };
443640035a2SMahipal Challa 
ZIP_COREX_BIST_STATUS(u64 param1)444640035a2SMahipal Challa static inline u64 ZIP_COREX_BIST_STATUS(u64 param1)
445640035a2SMahipal Challa {
4465b0aa255SVarsha Rao 	if (param1 <= 1)
447640035a2SMahipal Challa 		return 0x0520ull + (param1 & 1) * 0x8ull;
448640035a2SMahipal Challa 	pr_err("ZIP_COREX_BIST_STATUS: %llu\n", param1);
449640035a2SMahipal Challa 	return 0;
450640035a2SMahipal Challa }
451640035a2SMahipal Challa 
452640035a2SMahipal Challa /**
453640035a2SMahipal Challa  * union zip_ctl_bist_status - Represents register that has the BIST status of
454640035a2SMahipal Challa  * memories in ZIP_CTL (instruction buffer, G/S pointer FIFO, input data
455640035a2SMahipal Challa  * buffer, output data buffers).
456640035a2SMahipal Challa  *
457640035a2SMahipal Challa  * Each bit is the BIST result of an individual memory
458640035a2SMahipal Challa  * (per bit, 0 = pass and 1 = fail).
459640035a2SMahipal Challa  */
460640035a2SMahipal Challa union zip_ctl_bist_status {
461640035a2SMahipal Challa 	u64 u_reg64;
462640035a2SMahipal Challa 	struct zip_ctl_bist_status_s {
463640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
464640035a2SMahipal Challa 		u64 reserved_9_63               : 55;
465640035a2SMahipal Challa 		u64 bstatus                     : 9;
466640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
467640035a2SMahipal Challa 		u64 bstatus                     : 9;
468640035a2SMahipal Challa 		u64 reserved_9_63               : 55;
469640035a2SMahipal Challa #endif
470640035a2SMahipal Challa 	} s;
471640035a2SMahipal Challa };
472640035a2SMahipal Challa 
473640035a2SMahipal Challa #define ZIP_CTL_BIST_STATUS 0x0510ull
474640035a2SMahipal Challa 
475640035a2SMahipal Challa /**
476640035a2SMahipal Challa  * union zip_ctl_cfg - Represents the register that controls the behavior of
477640035a2SMahipal Challa  * the ZIP DMA engines.
478640035a2SMahipal Challa  *
479640035a2SMahipal Challa  * It is recommended to keep default values for normal operation. Changing the
480640035a2SMahipal Challa  * values of the fields may be useful for diagnostics.
481640035a2SMahipal Challa  */
482640035a2SMahipal Challa union zip_ctl_cfg {
483640035a2SMahipal Challa 	u64 u_reg64;
484640035a2SMahipal Challa 	struct zip_ctl_cfg_s {
485640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
486640035a2SMahipal Challa 		u64 reserved_52_63              : 12;
487640035a2SMahipal Challa 		u64 ildf                        : 4;
488640035a2SMahipal Challa 		u64 reserved_36_47              : 12;
489640035a2SMahipal Challa 		u64 drtf                        : 4;
490640035a2SMahipal Challa 		u64 reserved_27_31              : 5;
491640035a2SMahipal Challa 		u64 stcf                        : 3;
492640035a2SMahipal Challa 		u64 reserved_19_23              : 5;
493640035a2SMahipal Challa 		u64 ldf                         : 3;
494640035a2SMahipal Challa 		u64 reserved_2_15               : 14;
495640035a2SMahipal Challa 		u64 busy                        : 1;
496640035a2SMahipal Challa 		u64 reserved_0_0                : 1;
497640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
498640035a2SMahipal Challa 		u64 reserved_0_0                : 1;
499640035a2SMahipal Challa 		u64 busy                        : 1;
500640035a2SMahipal Challa 		u64 reserved_2_15               : 14;
501640035a2SMahipal Challa 		u64 ldf                         : 3;
502640035a2SMahipal Challa 		u64 reserved_19_23              : 5;
503640035a2SMahipal Challa 		u64 stcf                        : 3;
504640035a2SMahipal Challa 		u64 reserved_27_31              : 5;
505640035a2SMahipal Challa 		u64 drtf                        : 4;
506640035a2SMahipal Challa 		u64 reserved_36_47              : 12;
507640035a2SMahipal Challa 		u64 ildf                        : 4;
508640035a2SMahipal Challa 		u64 reserved_52_63              : 12;
509640035a2SMahipal Challa #endif
510640035a2SMahipal Challa 	} s;
511640035a2SMahipal Challa };
512640035a2SMahipal Challa 
513640035a2SMahipal Challa #define ZIP_CTL_CFG 0x0560ull
514640035a2SMahipal Challa 
515640035a2SMahipal Challa /**
516640035a2SMahipal Challa  * union zip_dbg_corex_inst - Represents the registers that reflect the status
517640035a2SMahipal Challa  * of the current instruction that the ZIP core is executing or has executed.
518640035a2SMahipal Challa  *
519640035a2SMahipal Challa  * These registers are only for debug use.
520640035a2SMahipal Challa  */
521640035a2SMahipal Challa union zip_dbg_corex_inst {
522640035a2SMahipal Challa 	u64 u_reg64;
523640035a2SMahipal Challa 	struct zip_dbg_corex_inst_s {
524640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
525640035a2SMahipal Challa 		u64 busy                        : 1;
526640035a2SMahipal Challa 		u64 reserved_35_62              : 28;
527640035a2SMahipal Challa 		u64 qid                         : 3;
528640035a2SMahipal Challa 		u64 iid                         : 32;
529640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
530640035a2SMahipal Challa 		u64 iid                         : 32;
531640035a2SMahipal Challa 		u64 qid                         : 3;
532640035a2SMahipal Challa 		u64 reserved_35_62              : 28;
533640035a2SMahipal Challa 		u64 busy                        : 1;
534640035a2SMahipal Challa #endif
535640035a2SMahipal Challa 	} s;
536640035a2SMahipal Challa };
537640035a2SMahipal Challa 
ZIP_DBG_COREX_INST(u64 param1)538640035a2SMahipal Challa static inline u64 ZIP_DBG_COREX_INST(u64 param1)
539640035a2SMahipal Challa {
5405b0aa255SVarsha Rao 	if (param1 <= 1)
541640035a2SMahipal Challa 		return 0x0640ull + (param1 & 1) * 0x8ull;
542640035a2SMahipal Challa 	pr_err("ZIP_DBG_COREX_INST: %llu\n", param1);
543640035a2SMahipal Challa 	return 0;
544640035a2SMahipal Challa }
545640035a2SMahipal Challa 
546640035a2SMahipal Challa /**
547640035a2SMahipal Challa  * union zip_dbg_corex_sta - Represents registers that reflect the status of
548640035a2SMahipal Challa  * the zip cores.
549640035a2SMahipal Challa  *
550640035a2SMahipal Challa  * They are for debug use only.
551640035a2SMahipal Challa  */
552640035a2SMahipal Challa union zip_dbg_corex_sta {
553640035a2SMahipal Challa 	u64 u_reg64;
554640035a2SMahipal Challa 	struct zip_dbg_corex_sta_s {
555640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
556640035a2SMahipal Challa 		u64 busy                        : 1;
557640035a2SMahipal Challa 		u64 reserved_37_62              : 26;
558640035a2SMahipal Challa 		u64 ist                         : 5;
559640035a2SMahipal Challa 		u64 nie                         : 32;
560640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
561640035a2SMahipal Challa 		u64 nie                         : 32;
562640035a2SMahipal Challa 		u64 ist                         : 5;
563640035a2SMahipal Challa 		u64 reserved_37_62              : 26;
564640035a2SMahipal Challa 		u64 busy                        : 1;
565640035a2SMahipal Challa #endif
566640035a2SMahipal Challa 	} s;
567640035a2SMahipal Challa };
568640035a2SMahipal Challa 
ZIP_DBG_COREX_STA(u64 param1)569640035a2SMahipal Challa static inline u64 ZIP_DBG_COREX_STA(u64 param1)
570640035a2SMahipal Challa {
5715b0aa255SVarsha Rao 	if (param1 <= 1)
572640035a2SMahipal Challa 		return 0x0680ull + (param1 & 1) * 0x8ull;
573640035a2SMahipal Challa 	pr_err("ZIP_DBG_COREX_STA: %llu\n", param1);
574640035a2SMahipal Challa 	return 0;
575640035a2SMahipal Challa }
576640035a2SMahipal Challa 
577640035a2SMahipal Challa /**
578640035a2SMahipal Challa  * union zip_dbg_quex_sta - Represets registers that reflect status of the zip
579640035a2SMahipal Challa  * instruction queues.
580640035a2SMahipal Challa  *
581640035a2SMahipal Challa  * They are for debug use only.
582640035a2SMahipal Challa  */
583640035a2SMahipal Challa union zip_dbg_quex_sta {
584640035a2SMahipal Challa 	u64 u_reg64;
585640035a2SMahipal Challa 	struct zip_dbg_quex_sta_s {
586640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
587640035a2SMahipal Challa 		u64 busy                        : 1;
588640035a2SMahipal Challa 		u64 reserved_56_62              : 7;
589640035a2SMahipal Challa 		u64 rqwc                        : 24;
590640035a2SMahipal Challa 		u64 nii                         : 32;
591640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
592640035a2SMahipal Challa 		u64 nii                         : 32;
593640035a2SMahipal Challa 		u64 rqwc                        : 24;
594640035a2SMahipal Challa 		u64 reserved_56_62              : 7;
595640035a2SMahipal Challa 		u64 busy                        : 1;
596640035a2SMahipal Challa #endif
597640035a2SMahipal Challa 	} s;
598640035a2SMahipal Challa };
599640035a2SMahipal Challa 
ZIP_DBG_QUEX_STA(u64 param1)600640035a2SMahipal Challa static inline u64 ZIP_DBG_QUEX_STA(u64 param1)
601640035a2SMahipal Challa {
6025b0aa255SVarsha Rao 	if (param1 <= 7)
603640035a2SMahipal Challa 		return 0x1800ull + (param1 & 7) * 0x8ull;
604640035a2SMahipal Challa 	pr_err("ZIP_DBG_QUEX_STA: %llu\n", param1);
605640035a2SMahipal Challa 	return 0;
606640035a2SMahipal Challa }
607640035a2SMahipal Challa 
608640035a2SMahipal Challa /**
609640035a2SMahipal Challa  * union zip_ecc_ctl - Represents the register that enables ECC for each
610640035a2SMahipal Challa  * individual internal memory that requires ECC.
611640035a2SMahipal Challa  *
612640035a2SMahipal Challa  * For debug purpose, it can also flip one or two bits in the ECC data.
613640035a2SMahipal Challa  */
614640035a2SMahipal Challa union zip_ecc_ctl {
615640035a2SMahipal Challa 	u64 u_reg64;
616640035a2SMahipal Challa 	struct zip_ecc_ctl_s {
617640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
618640035a2SMahipal Challa 		u64 reserved_19_63              : 45;
619640035a2SMahipal Challa 		u64 vmem_cdis                   : 1;
620640035a2SMahipal Challa 		u64 vmem_fs                     : 2;
621640035a2SMahipal Challa 		u64 reserved_15_15              : 1;
622640035a2SMahipal Challa 		u64 idf1_cdis                   : 1;
623640035a2SMahipal Challa 		u64 idf1_fs                     : 2;
624640035a2SMahipal Challa 		u64 reserved_11_11              : 1;
625640035a2SMahipal Challa 		u64 idf0_cdis                   : 1;
626640035a2SMahipal Challa 		u64 idf0_fs                     : 2;
627640035a2SMahipal Challa 		u64 reserved_7_7                : 1;
628640035a2SMahipal Challa 		u64 gspf_cdis                   : 1;
629640035a2SMahipal Challa 		u64 gspf_fs                     : 2;
630640035a2SMahipal Challa 		u64 reserved_3_3                : 1;
631640035a2SMahipal Challa 		u64 iqf_cdis                    : 1;
632640035a2SMahipal Challa 		u64 iqf_fs                      : 2;
633640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
634640035a2SMahipal Challa 		u64 iqf_fs                      : 2;
635640035a2SMahipal Challa 		u64 iqf_cdis                    : 1;
636640035a2SMahipal Challa 		u64 reserved_3_3                : 1;
637640035a2SMahipal Challa 		u64 gspf_fs                     : 2;
638640035a2SMahipal Challa 		u64 gspf_cdis                   : 1;
639640035a2SMahipal Challa 		u64 reserved_7_7                : 1;
640640035a2SMahipal Challa 		u64 idf0_fs                     : 2;
641640035a2SMahipal Challa 		u64 idf0_cdis                   : 1;
642640035a2SMahipal Challa 		u64 reserved_11_11              : 1;
643640035a2SMahipal Challa 		u64 idf1_fs                     : 2;
644640035a2SMahipal Challa 		u64 idf1_cdis                   : 1;
645640035a2SMahipal Challa 		u64 reserved_15_15              : 1;
646640035a2SMahipal Challa 		u64 vmem_fs                     : 2;
647640035a2SMahipal Challa 		u64 vmem_cdis                   : 1;
648640035a2SMahipal Challa 		u64 reserved_19_63              : 45;
649640035a2SMahipal Challa #endif
650640035a2SMahipal Challa 	} s;
651640035a2SMahipal Challa };
652640035a2SMahipal Challa 
653640035a2SMahipal Challa #define ZIP_ECC_CTL 0x0568ull
654640035a2SMahipal Challa 
655640035a2SMahipal Challa /* NCB - zip_ecce_ena_w1c */
656640035a2SMahipal Challa union zip_ecce_ena_w1c {
657640035a2SMahipal Challa 	u64 u_reg64;
658640035a2SMahipal Challa 	struct zip_ecce_ena_w1c_s {
659640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
660640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
661640035a2SMahipal Challa 		u64 dbe                         : 5;
662640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
663640035a2SMahipal Challa 		u64 sbe                         : 5;
664640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
665640035a2SMahipal Challa 		u64 sbe                         : 5;
666640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
667640035a2SMahipal Challa 		u64 dbe                         : 5;
668640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
669640035a2SMahipal Challa #endif
670640035a2SMahipal Challa 	} s;
671640035a2SMahipal Challa };
672640035a2SMahipal Challa 
673640035a2SMahipal Challa #define ZIP_ECCE_ENA_W1C 0x0598ull
674640035a2SMahipal Challa 
675640035a2SMahipal Challa /* NCB - zip_ecce_ena_w1s */
676640035a2SMahipal Challa union zip_ecce_ena_w1s {
677640035a2SMahipal Challa 	u64 u_reg64;
678640035a2SMahipal Challa 	struct zip_ecce_ena_w1s_s {
679640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
680640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
681640035a2SMahipal Challa 		u64 dbe                         : 5;
682640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
683640035a2SMahipal Challa 		u64 sbe                         : 5;
684640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
685640035a2SMahipal Challa 		u64 sbe                         : 5;
686640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
687640035a2SMahipal Challa 		u64 dbe                         : 5;
688640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
689640035a2SMahipal Challa #endif
690640035a2SMahipal Challa 	} s;
691640035a2SMahipal Challa };
692640035a2SMahipal Challa 
693640035a2SMahipal Challa #define ZIP_ECCE_ENA_W1S 0x0590ull
694640035a2SMahipal Challa 
695640035a2SMahipal Challa /**
696640035a2SMahipal Challa  * union zip_ecce_int - Represents the register that contains the status of the
697640035a2SMahipal Challa  * ECC interrupt sources.
698640035a2SMahipal Challa  */
699640035a2SMahipal Challa union zip_ecce_int {
700640035a2SMahipal Challa 	u64 u_reg64;
701640035a2SMahipal Challa 	struct zip_ecce_int_s {
702640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
703640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
704640035a2SMahipal Challa 		u64 dbe                         : 5;
705640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
706640035a2SMahipal Challa 		u64 sbe                         : 5;
707640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
708640035a2SMahipal Challa 		u64 sbe                         : 5;
709640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
710640035a2SMahipal Challa 		u64 dbe                         : 5;
711640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
712640035a2SMahipal Challa #endif
713640035a2SMahipal Challa 	} s;
714640035a2SMahipal Challa };
715640035a2SMahipal Challa 
716640035a2SMahipal Challa #define ZIP_ECCE_INT 0x0580ull
717640035a2SMahipal Challa 
718640035a2SMahipal Challa /* NCB - zip_ecce_int_w1s */
719640035a2SMahipal Challa union zip_ecce_int_w1s {
720640035a2SMahipal Challa 	u64 u_reg64;
721640035a2SMahipal Challa 	struct zip_ecce_int_w1s_s {
722640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
723640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
724640035a2SMahipal Challa 		u64 dbe                         : 5;
725640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
726640035a2SMahipal Challa 		u64 sbe                         : 5;
727640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
728640035a2SMahipal Challa 		u64 sbe                         : 5;
729640035a2SMahipal Challa 		u64 reserved_5_31               : 27;
730640035a2SMahipal Challa 		u64 dbe                         : 5;
731640035a2SMahipal Challa 		u64 reserved_37_63              : 27;
732640035a2SMahipal Challa #endif
733640035a2SMahipal Challa 	} s;
734640035a2SMahipal Challa };
735640035a2SMahipal Challa 
736640035a2SMahipal Challa #define ZIP_ECCE_INT_W1S 0x0588ull
737640035a2SMahipal Challa 
738640035a2SMahipal Challa /* NCB - zip_fife_ena_w1c */
739640035a2SMahipal Challa union zip_fife_ena_w1c {
740640035a2SMahipal Challa 	u64 u_reg64;
741640035a2SMahipal Challa 	struct zip_fife_ena_w1c_s {
742640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
743640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
744640035a2SMahipal Challa 		u64 asserts                     : 42;
745640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
746640035a2SMahipal Challa 		u64 asserts                     : 42;
747640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
748640035a2SMahipal Challa #endif
749640035a2SMahipal Challa 	} s;
750640035a2SMahipal Challa };
751640035a2SMahipal Challa 
752640035a2SMahipal Challa #define ZIP_FIFE_ENA_W1C 0x0090ull
753640035a2SMahipal Challa 
754640035a2SMahipal Challa /* NCB - zip_fife_ena_w1s */
755640035a2SMahipal Challa union zip_fife_ena_w1s {
756640035a2SMahipal Challa 	u64 u_reg64;
757640035a2SMahipal Challa 	struct zip_fife_ena_w1s_s {
758640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
759640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
760640035a2SMahipal Challa 		u64 asserts                     : 42;
761640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
762640035a2SMahipal Challa 		u64 asserts                     : 42;
763640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
764640035a2SMahipal Challa #endif
765640035a2SMahipal Challa 	} s;
766640035a2SMahipal Challa };
767640035a2SMahipal Challa 
768640035a2SMahipal Challa #define ZIP_FIFE_ENA_W1S 0x0088ull
769640035a2SMahipal Challa 
770640035a2SMahipal Challa /* NCB - zip_fife_int */
771640035a2SMahipal Challa union zip_fife_int {
772640035a2SMahipal Challa 	u64 u_reg64;
773640035a2SMahipal Challa 	struct zip_fife_int_s {
774640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
775640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
776640035a2SMahipal Challa 		u64 asserts                     : 42;
777640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
778640035a2SMahipal Challa 		u64 asserts                     : 42;
779640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
780640035a2SMahipal Challa #endif
781640035a2SMahipal Challa 	} s;
782640035a2SMahipal Challa };
783640035a2SMahipal Challa 
784640035a2SMahipal Challa #define ZIP_FIFE_INT 0x0078ull
785640035a2SMahipal Challa 
786640035a2SMahipal Challa /* NCB - zip_fife_int_w1s */
787640035a2SMahipal Challa union zip_fife_int_w1s {
788640035a2SMahipal Challa 	u64 u_reg64;
789640035a2SMahipal Challa 	struct zip_fife_int_w1s_s {
790640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
791640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
792640035a2SMahipal Challa 		u64 asserts                     : 42;
793640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
794640035a2SMahipal Challa 		u64 asserts                     : 42;
795640035a2SMahipal Challa 		u64 reserved_42_63              : 22;
796640035a2SMahipal Challa #endif
797640035a2SMahipal Challa 	} s;
798640035a2SMahipal Challa };
799640035a2SMahipal Challa 
800640035a2SMahipal Challa #define ZIP_FIFE_INT_W1S 0x0080ull
801640035a2SMahipal Challa 
802640035a2SMahipal Challa /**
803640035a2SMahipal Challa  * union zip_msix_pbax - Represents the register that is the MSI-X PBA table
804640035a2SMahipal Challa  *
805640035a2SMahipal Challa  * The bit number is indexed by the ZIP_INT_VEC_E enumeration.
806640035a2SMahipal Challa  */
807640035a2SMahipal Challa union zip_msix_pbax {
808640035a2SMahipal Challa 	u64 u_reg64;
809640035a2SMahipal Challa 	struct zip_msix_pbax_s {
810640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
811640035a2SMahipal Challa 		u64 pend                        : 64;
812640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
813640035a2SMahipal Challa 		u64 pend                        : 64;
814640035a2SMahipal Challa #endif
815640035a2SMahipal Challa 	} s;
816640035a2SMahipal Challa };
817640035a2SMahipal Challa 
ZIP_MSIX_PBAX(u64 param1)818640035a2SMahipal Challa static inline u64 ZIP_MSIX_PBAX(u64 param1)
819640035a2SMahipal Challa {
8205b0aa255SVarsha Rao 	if (param1 == 0)
821640035a2SMahipal Challa 		return 0x0000838000FF0000ull;
822640035a2SMahipal Challa 	pr_err("ZIP_MSIX_PBAX: %llu\n", param1);
823640035a2SMahipal Challa 	return 0;
824640035a2SMahipal Challa }
825640035a2SMahipal Challa 
826640035a2SMahipal Challa /**
827640035a2SMahipal Challa  * union zip_msix_vecx_addr - Represents the register that is the MSI-X vector
828640035a2SMahipal Challa  * table, indexed by the ZIP_INT_VEC_E enumeration.
829640035a2SMahipal Challa  */
830640035a2SMahipal Challa union zip_msix_vecx_addr {
831640035a2SMahipal Challa 	u64 u_reg64;
832640035a2SMahipal Challa 	struct zip_msix_vecx_addr_s {
833640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
834640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
835640035a2SMahipal Challa 		u64 addr                        : 47;
836640035a2SMahipal Challa 		u64 reserved_1_1                : 1;
837640035a2SMahipal Challa 		u64 secvec                      : 1;
838640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
839640035a2SMahipal Challa 		u64 secvec                      : 1;
840640035a2SMahipal Challa 		u64 reserved_1_1                : 1;
841640035a2SMahipal Challa 		u64 addr                        : 47;
842640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
843640035a2SMahipal Challa #endif
844640035a2SMahipal Challa 	} s;
845640035a2SMahipal Challa };
846640035a2SMahipal Challa 
ZIP_MSIX_VECX_ADDR(u64 param1)847640035a2SMahipal Challa static inline u64 ZIP_MSIX_VECX_ADDR(u64 param1)
848640035a2SMahipal Challa {
8495b0aa255SVarsha Rao 	if (param1 <= 17)
850640035a2SMahipal Challa 		return 0x0000838000F00000ull + (param1 & 31) * 0x10ull;
851640035a2SMahipal Challa 	pr_err("ZIP_MSIX_VECX_ADDR: %llu\n", param1);
852640035a2SMahipal Challa 	return 0;
853640035a2SMahipal Challa }
854640035a2SMahipal Challa 
855640035a2SMahipal Challa /**
856640035a2SMahipal Challa  * union zip_msix_vecx_ctl - Represents the register that is the MSI-X vector
857640035a2SMahipal Challa  * table, indexed by the ZIP_INT_VEC_E enumeration.
858640035a2SMahipal Challa  */
859640035a2SMahipal Challa union zip_msix_vecx_ctl {
860640035a2SMahipal Challa 	u64 u_reg64;
861640035a2SMahipal Challa 	struct zip_msix_vecx_ctl_s {
862640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
863640035a2SMahipal Challa 		u64 reserved_33_63              : 31;
864640035a2SMahipal Challa 		u64 mask                        : 1;
865640035a2SMahipal Challa 		u64 reserved_20_31              : 12;
866640035a2SMahipal Challa 		u64 data                        : 20;
867640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
868640035a2SMahipal Challa 		u64 data                        : 20;
869640035a2SMahipal Challa 		u64 reserved_20_31              : 12;
870640035a2SMahipal Challa 		u64 mask                        : 1;
871640035a2SMahipal Challa 		u64 reserved_33_63              : 31;
872640035a2SMahipal Challa #endif
873640035a2SMahipal Challa 	} s;
874640035a2SMahipal Challa };
875640035a2SMahipal Challa 
ZIP_MSIX_VECX_CTL(u64 param1)876640035a2SMahipal Challa static inline u64 ZIP_MSIX_VECX_CTL(u64 param1)
877640035a2SMahipal Challa {
8785b0aa255SVarsha Rao 	if (param1 <= 17)
879640035a2SMahipal Challa 		return 0x0000838000F00008ull + (param1 & 31) * 0x10ull;
880640035a2SMahipal Challa 	pr_err("ZIP_MSIX_VECX_CTL: %llu\n", param1);
881640035a2SMahipal Challa 	return 0;
882640035a2SMahipal Challa }
883640035a2SMahipal Challa 
884640035a2SMahipal Challa /**
885640035a2SMahipal Challa  * union zip_quex_done - Represents the registers that contain the per-queue
886640035a2SMahipal Challa  * instruction done count.
887640035a2SMahipal Challa  */
888640035a2SMahipal Challa union zip_quex_done {
889640035a2SMahipal Challa 	u64 u_reg64;
890640035a2SMahipal Challa 	struct zip_quex_done_s {
891640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
892640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
893640035a2SMahipal Challa 		u64 done                        : 20;
894640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
895640035a2SMahipal Challa 		u64 done                        : 20;
896640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
897640035a2SMahipal Challa #endif
898640035a2SMahipal Challa 	} s;
899640035a2SMahipal Challa };
900640035a2SMahipal Challa 
ZIP_QUEX_DONE(u64 param1)901640035a2SMahipal Challa static inline u64 ZIP_QUEX_DONE(u64 param1)
902640035a2SMahipal Challa {
9035b0aa255SVarsha Rao 	if (param1 <= 7)
904640035a2SMahipal Challa 		return 0x2000ull + (param1 & 7) * 0x8ull;
905640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DONE: %llu\n", param1);
906640035a2SMahipal Challa 	return 0;
907640035a2SMahipal Challa }
908640035a2SMahipal Challa 
909640035a2SMahipal Challa /**
910640035a2SMahipal Challa  * union zip_quex_done_ack - Represents the registers on write to which will
911640035a2SMahipal Challa  * decrement the per-queue instructiona done count.
912640035a2SMahipal Challa  */
913640035a2SMahipal Challa union zip_quex_done_ack {
914640035a2SMahipal Challa 	u64 u_reg64;
915640035a2SMahipal Challa 	struct zip_quex_done_ack_s {
916640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
917640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
918640035a2SMahipal Challa 		u64 done_ack                    : 20;
919640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
920640035a2SMahipal Challa 		u64 done_ack                    : 20;
921640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
922640035a2SMahipal Challa #endif
923640035a2SMahipal Challa 	} s;
924640035a2SMahipal Challa };
925640035a2SMahipal Challa 
ZIP_QUEX_DONE_ACK(u64 param1)926640035a2SMahipal Challa static inline u64 ZIP_QUEX_DONE_ACK(u64 param1)
927640035a2SMahipal Challa {
9285b0aa255SVarsha Rao 	if (param1 <= 7)
929640035a2SMahipal Challa 		return 0x2200ull + (param1 & 7) * 0x8ull;
930640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DONE_ACK: %llu\n", param1);
931640035a2SMahipal Challa 	return 0;
932640035a2SMahipal Challa }
933640035a2SMahipal Challa 
934640035a2SMahipal Challa /**
935640035a2SMahipal Challa  * union zip_quex_done_ena_w1c - Represents the register which when written
936640035a2SMahipal Challa  * 1 to will disable the DONEINT interrupt for the queue.
937640035a2SMahipal Challa  */
938640035a2SMahipal Challa union zip_quex_done_ena_w1c {
939640035a2SMahipal Challa 	u64 u_reg64;
940640035a2SMahipal Challa 	struct zip_quex_done_ena_w1c_s {
941640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
942640035a2SMahipal Challa 		u64 reserved_1_63               : 63;
943640035a2SMahipal Challa 		u64 done_ena                    : 1;
944640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
945640035a2SMahipal Challa 		u64 done_ena                    : 1;
946640035a2SMahipal Challa 		u64 reserved_1_63               : 63;
947640035a2SMahipal Challa #endif
948640035a2SMahipal Challa 	} s;
949640035a2SMahipal Challa };
950640035a2SMahipal Challa 
ZIP_QUEX_DONE_ENA_W1C(u64 param1)951640035a2SMahipal Challa static inline u64 ZIP_QUEX_DONE_ENA_W1C(u64 param1)
952640035a2SMahipal Challa {
9535b0aa255SVarsha Rao 	if (param1 <= 7)
954640035a2SMahipal Challa 		return 0x2600ull + (param1 & 7) * 0x8ull;
955640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DONE_ENA_W1C: %llu\n", param1);
956640035a2SMahipal Challa 	return 0;
957640035a2SMahipal Challa }
958640035a2SMahipal Challa 
959640035a2SMahipal Challa /**
960640035a2SMahipal Challa  * union zip_quex_done_ena_w1s - Represents the register that when written 1 to
961640035a2SMahipal Challa  * will enable the DONEINT interrupt for the queue.
962640035a2SMahipal Challa  */
963640035a2SMahipal Challa union zip_quex_done_ena_w1s {
964640035a2SMahipal Challa 	u64 u_reg64;
965640035a2SMahipal Challa 	struct zip_quex_done_ena_w1s_s {
966640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
967640035a2SMahipal Challa 		u64 reserved_1_63               : 63;
968640035a2SMahipal Challa 		u64 done_ena                    : 1;
969640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
970640035a2SMahipal Challa 		u64 done_ena                    : 1;
971640035a2SMahipal Challa 		u64 reserved_1_63               : 63;
972640035a2SMahipal Challa #endif
973640035a2SMahipal Challa 	} s;
974640035a2SMahipal Challa };
975640035a2SMahipal Challa 
ZIP_QUEX_DONE_ENA_W1S(u64 param1)976640035a2SMahipal Challa static inline u64 ZIP_QUEX_DONE_ENA_W1S(u64 param1)
977640035a2SMahipal Challa {
9785b0aa255SVarsha Rao 	if (param1 <= 7)
979640035a2SMahipal Challa 		return 0x2400ull + (param1 & 7) * 0x8ull;
980640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DONE_ENA_W1S: %llu\n", param1);
981640035a2SMahipal Challa 	return 0;
982640035a2SMahipal Challa }
983640035a2SMahipal Challa 
984640035a2SMahipal Challa /**
985640035a2SMahipal Challa  * union zip_quex_done_wait - Represents the register that specifies the per
986640035a2SMahipal Challa  * queue interrupt coalescing settings.
987640035a2SMahipal Challa  */
988640035a2SMahipal Challa union zip_quex_done_wait {
989640035a2SMahipal Challa 	u64 u_reg64;
990640035a2SMahipal Challa 	struct zip_quex_done_wait_s {
991640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
992640035a2SMahipal Challa 		u64 reserved_48_63              : 16;
993640035a2SMahipal Challa 		u64 time_wait                   : 16;
994640035a2SMahipal Challa 		u64 reserved_20_31              : 12;
995640035a2SMahipal Challa 		u64 num_wait                    : 20;
996640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
997640035a2SMahipal Challa 		u64 num_wait                    : 20;
998640035a2SMahipal Challa 		u64 reserved_20_31              : 12;
999640035a2SMahipal Challa 		u64 time_wait                   : 16;
1000640035a2SMahipal Challa 		u64 reserved_48_63              : 16;
1001640035a2SMahipal Challa #endif
1002640035a2SMahipal Challa 	} s;
1003640035a2SMahipal Challa };
1004640035a2SMahipal Challa 
ZIP_QUEX_DONE_WAIT(u64 param1)1005640035a2SMahipal Challa static inline u64 ZIP_QUEX_DONE_WAIT(u64 param1)
1006640035a2SMahipal Challa {
10075b0aa255SVarsha Rao 	if (param1 <= 7)
1008640035a2SMahipal Challa 		return 0x2800ull + (param1 & 7) * 0x8ull;
1009640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DONE_WAIT: %llu\n", param1);
1010640035a2SMahipal Challa 	return 0;
1011640035a2SMahipal Challa }
1012640035a2SMahipal Challa 
1013640035a2SMahipal Challa /**
1014640035a2SMahipal Challa  * union zip_quex_doorbell - Represents doorbell registers for the ZIP
1015640035a2SMahipal Challa  * instruction queues.
1016640035a2SMahipal Challa  */
1017640035a2SMahipal Challa union zip_quex_doorbell {
1018640035a2SMahipal Challa 	u64 u_reg64;
1019640035a2SMahipal Challa 	struct zip_quex_doorbell_s {
1020640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1021640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
1022640035a2SMahipal Challa 		u64 dbell_cnt                   : 20;
1023640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1024640035a2SMahipal Challa 		u64 dbell_cnt                   : 20;
1025640035a2SMahipal Challa 		u64 reserved_20_63              : 44;
1026640035a2SMahipal Challa #endif
1027640035a2SMahipal Challa 	} s;
1028640035a2SMahipal Challa };
1029640035a2SMahipal Challa 
ZIP_QUEX_DOORBELL(u64 param1)1030640035a2SMahipal Challa static inline u64 ZIP_QUEX_DOORBELL(u64 param1)
1031640035a2SMahipal Challa {
10325b0aa255SVarsha Rao 	if (param1 <= 7)
1033640035a2SMahipal Challa 		return 0x4000ull + (param1 & 7) * 0x8ull;
1034640035a2SMahipal Challa 	pr_err("ZIP_QUEX_DOORBELL: %llu\n", param1);
1035640035a2SMahipal Challa 	return 0;
1036640035a2SMahipal Challa }
1037640035a2SMahipal Challa 
1038640035a2SMahipal Challa union zip_quex_err_ena_w1c {
1039640035a2SMahipal Challa 	u64 u_reg64;
1040640035a2SMahipal Challa 	struct zip_quex_err_ena_w1c_s {
1041640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1042640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1043640035a2SMahipal Challa 		u64 mdbe                        : 1;
1044640035a2SMahipal Challa 		u64 nwrp                        : 1;
1045640035a2SMahipal Challa 		u64 nrrp                        : 1;
1046640035a2SMahipal Challa 		u64 irde                        : 1;
1047640035a2SMahipal Challa 		u64 dovf                        : 1;
1048640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1049640035a2SMahipal Challa 		u64 dovf                        : 1;
1050640035a2SMahipal Challa 		u64 irde                        : 1;
1051640035a2SMahipal Challa 		u64 nrrp                        : 1;
1052640035a2SMahipal Challa 		u64 nwrp                        : 1;
1053640035a2SMahipal Challa 		u64 mdbe                        : 1;
1054640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1055640035a2SMahipal Challa #endif
1056640035a2SMahipal Challa 	} s;
1057640035a2SMahipal Challa };
1058640035a2SMahipal Challa 
ZIP_QUEX_ERR_ENA_W1C(u64 param1)1059640035a2SMahipal Challa static inline u64 ZIP_QUEX_ERR_ENA_W1C(u64 param1)
1060640035a2SMahipal Challa {
10615b0aa255SVarsha Rao 	if (param1 <= 7)
1062640035a2SMahipal Challa 		return 0x3600ull + (param1 & 7) * 0x8ull;
1063640035a2SMahipal Challa 	pr_err("ZIP_QUEX_ERR_ENA_W1C: %llu\n", param1);
1064640035a2SMahipal Challa 	return 0;
1065640035a2SMahipal Challa }
1066640035a2SMahipal Challa 
1067640035a2SMahipal Challa union zip_quex_err_ena_w1s {
1068640035a2SMahipal Challa 	u64 u_reg64;
1069640035a2SMahipal Challa 	struct zip_quex_err_ena_w1s_s {
1070640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1071640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1072640035a2SMahipal Challa 		u64 mdbe                        : 1;
1073640035a2SMahipal Challa 		u64 nwrp                        : 1;
1074640035a2SMahipal Challa 		u64 nrrp                        : 1;
1075640035a2SMahipal Challa 		u64 irde                        : 1;
1076640035a2SMahipal Challa 		u64 dovf                        : 1;
1077640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1078640035a2SMahipal Challa 		u64 dovf                        : 1;
1079640035a2SMahipal Challa 		u64 irde                        : 1;
1080640035a2SMahipal Challa 		u64 nrrp                        : 1;
1081640035a2SMahipal Challa 		u64 nwrp                        : 1;
1082640035a2SMahipal Challa 		u64 mdbe                        : 1;
1083640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1084640035a2SMahipal Challa #endif
1085640035a2SMahipal Challa 	} s;
1086640035a2SMahipal Challa };
1087640035a2SMahipal Challa 
ZIP_QUEX_ERR_ENA_W1S(u64 param1)1088640035a2SMahipal Challa static inline u64 ZIP_QUEX_ERR_ENA_W1S(u64 param1)
1089640035a2SMahipal Challa {
10905b0aa255SVarsha Rao 	if (param1 <= 7)
1091640035a2SMahipal Challa 		return 0x3400ull + (param1 & 7) * 0x8ull;
1092640035a2SMahipal Challa 	pr_err("ZIP_QUEX_ERR_ENA_W1S: %llu\n", param1);
1093640035a2SMahipal Challa 	return 0;
1094640035a2SMahipal Challa }
1095640035a2SMahipal Challa 
1096640035a2SMahipal Challa /**
1097640035a2SMahipal Challa  * union zip_quex_err_int - Represents registers that contain the per-queue
1098640035a2SMahipal Challa  * error interrupts.
1099640035a2SMahipal Challa  */
1100640035a2SMahipal Challa union zip_quex_err_int {
1101640035a2SMahipal Challa 	u64 u_reg64;
1102640035a2SMahipal Challa 	struct zip_quex_err_int_s {
1103640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1104640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1105640035a2SMahipal Challa 		u64 mdbe                        : 1;
1106640035a2SMahipal Challa 		u64 nwrp                        : 1;
1107640035a2SMahipal Challa 		u64 nrrp                        : 1;
1108640035a2SMahipal Challa 		u64 irde                        : 1;
1109640035a2SMahipal Challa 		u64 dovf                        : 1;
1110640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1111640035a2SMahipal Challa 		u64 dovf                        : 1;
1112640035a2SMahipal Challa 		u64 irde                        : 1;
1113640035a2SMahipal Challa 		u64 nrrp                        : 1;
1114640035a2SMahipal Challa 		u64 nwrp                        : 1;
1115640035a2SMahipal Challa 		u64 mdbe                        : 1;
1116640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1117640035a2SMahipal Challa #endif
1118640035a2SMahipal Challa 	} s;
1119640035a2SMahipal Challa };
1120640035a2SMahipal Challa 
ZIP_QUEX_ERR_INT(u64 param1)1121640035a2SMahipal Challa static inline u64 ZIP_QUEX_ERR_INT(u64 param1)
1122640035a2SMahipal Challa {
11235b0aa255SVarsha Rao 	if (param1 <= 7)
1124640035a2SMahipal Challa 		return 0x3000ull + (param1 & 7) * 0x8ull;
1125640035a2SMahipal Challa 	pr_err("ZIP_QUEX_ERR_INT: %llu\n", param1);
1126640035a2SMahipal Challa 	return 0;
1127640035a2SMahipal Challa }
1128640035a2SMahipal Challa 
1129640035a2SMahipal Challa /* NCB - zip_que#_err_int_w1s */
1130640035a2SMahipal Challa union zip_quex_err_int_w1s {
1131640035a2SMahipal Challa 	u64 u_reg64;
1132640035a2SMahipal Challa 	struct zip_quex_err_int_w1s_s {
1133640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1134640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1135640035a2SMahipal Challa 		u64 mdbe                        : 1;
1136640035a2SMahipal Challa 		u64 nwrp                        : 1;
1137640035a2SMahipal Challa 		u64 nrrp                        : 1;
1138640035a2SMahipal Challa 		u64 irde                        : 1;
1139640035a2SMahipal Challa 		u64 dovf                        : 1;
1140640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1141640035a2SMahipal Challa 		u64 dovf                        : 1;
1142640035a2SMahipal Challa 		u64 irde                        : 1;
1143640035a2SMahipal Challa 		u64 nrrp                        : 1;
1144640035a2SMahipal Challa 		u64 nwrp                        : 1;
1145640035a2SMahipal Challa 		u64 mdbe                        : 1;
1146640035a2SMahipal Challa 		u64 reserved_5_63               : 59;
1147640035a2SMahipal Challa #endif
1148640035a2SMahipal Challa 	} s;
1149640035a2SMahipal Challa };
1150640035a2SMahipal Challa 
ZIP_QUEX_ERR_INT_W1S(u64 param1)1151640035a2SMahipal Challa static inline u64 ZIP_QUEX_ERR_INT_W1S(u64 param1)
1152640035a2SMahipal Challa {
11535b0aa255SVarsha Rao 	if (param1 <= 7)
1154640035a2SMahipal Challa 		return 0x3200ull + (param1 & 7) * 0x8ull;
1155640035a2SMahipal Challa 	pr_err("ZIP_QUEX_ERR_INT_W1S: %llu\n", param1);
1156640035a2SMahipal Challa 	return 0;
1157640035a2SMahipal Challa }
1158640035a2SMahipal Challa 
1159640035a2SMahipal Challa /**
1160640035a2SMahipal Challa  * union zip_quex_gcfg - Represents the registers that reflect status of the
1161640035a2SMahipal Challa  * zip instruction queues,debug use only.
1162640035a2SMahipal Challa  */
1163640035a2SMahipal Challa union zip_quex_gcfg {
1164640035a2SMahipal Challa 	u64 u_reg64;
1165640035a2SMahipal Challa 	struct zip_quex_gcfg_s {
1166640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1167640035a2SMahipal Challa 		u64 reserved_4_63               : 60;
1168640035a2SMahipal Challa 		u64 iqb_ldwb                    : 1;
1169640035a2SMahipal Challa 		u64 cbw_sty                     : 1;
1170640035a2SMahipal Challa 		u64 l2ld_cmd                    : 2;
1171640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1172640035a2SMahipal Challa 		u64 l2ld_cmd                    : 2;
1173640035a2SMahipal Challa 		u64 cbw_sty                     : 1;
1174640035a2SMahipal Challa 		u64 iqb_ldwb                    : 1;
1175640035a2SMahipal Challa 		u64 reserved_4_63               : 60;
1176640035a2SMahipal Challa #endif
1177640035a2SMahipal Challa 	} s;
1178640035a2SMahipal Challa };
1179640035a2SMahipal Challa 
ZIP_QUEX_GCFG(u64 param1)1180640035a2SMahipal Challa static inline u64 ZIP_QUEX_GCFG(u64 param1)
1181640035a2SMahipal Challa {
11825b0aa255SVarsha Rao 	if (param1 <= 7)
1183640035a2SMahipal Challa 		return 0x1A00ull + (param1 & 7) * 0x8ull;
1184640035a2SMahipal Challa 	pr_err("ZIP_QUEX_GCFG: %llu\n", param1);
1185640035a2SMahipal Challa 	return 0;
1186640035a2SMahipal Challa }
1187640035a2SMahipal Challa 
1188640035a2SMahipal Challa /**
1189640035a2SMahipal Challa  * union zip_quex_map - Represents the registers that control how each
1190640035a2SMahipal Challa  * instruction queue maps to zip cores.
1191640035a2SMahipal Challa  */
1192640035a2SMahipal Challa union zip_quex_map {
1193640035a2SMahipal Challa 	u64 u_reg64;
1194640035a2SMahipal Challa 	struct zip_quex_map_s {
1195640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1196640035a2SMahipal Challa 		u64 reserved_2_63               : 62;
1197640035a2SMahipal Challa 		u64 zce                         : 2;
1198640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1199640035a2SMahipal Challa 		u64 zce                         : 2;
1200640035a2SMahipal Challa 		u64 reserved_2_63               : 62;
1201640035a2SMahipal Challa #endif
1202640035a2SMahipal Challa 	} s;
1203640035a2SMahipal Challa };
1204640035a2SMahipal Challa 
ZIP_QUEX_MAP(u64 param1)1205640035a2SMahipal Challa static inline u64 ZIP_QUEX_MAP(u64 param1)
1206640035a2SMahipal Challa {
12075b0aa255SVarsha Rao 	if (param1 <= 7)
1208640035a2SMahipal Challa 		return 0x1400ull + (param1 & 7) * 0x8ull;
1209640035a2SMahipal Challa 	pr_err("ZIP_QUEX_MAP: %llu\n", param1);
1210640035a2SMahipal Challa 	return 0;
1211640035a2SMahipal Challa }
1212640035a2SMahipal Challa 
1213640035a2SMahipal Challa /**
1214640035a2SMahipal Challa  * union zip_quex_sbuf_addr - Represents the registers that set the buffer
1215640035a2SMahipal Challa  * parameters for the instruction queues.
1216640035a2SMahipal Challa  *
1217640035a2SMahipal Challa  * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
1218640035a2SMahipal Challa  * this register to effectively reset the command buffer state machine.
1219640035a2SMahipal Challa  * These registers must be programmed after SW programs the corresponding
1220640035a2SMahipal Challa  * ZIP_QUE(0..7)_SBUF_CTL.
1221640035a2SMahipal Challa  */
1222640035a2SMahipal Challa union zip_quex_sbuf_addr {
1223640035a2SMahipal Challa 	u64 u_reg64;
1224640035a2SMahipal Challa 	struct zip_quex_sbuf_addr_s {
1225640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1226640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
1227640035a2SMahipal Challa 		u64 ptr                         : 42;
1228640035a2SMahipal Challa 		u64 off                         : 7;
1229640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1230640035a2SMahipal Challa 		u64 off                         : 7;
1231640035a2SMahipal Challa 		u64 ptr                         : 42;
1232640035a2SMahipal Challa 		u64 reserved_49_63              : 15;
1233640035a2SMahipal Challa #endif
1234640035a2SMahipal Challa 	} s;
1235640035a2SMahipal Challa };
1236640035a2SMahipal Challa 
ZIP_QUEX_SBUF_ADDR(u64 param1)1237640035a2SMahipal Challa static inline u64 ZIP_QUEX_SBUF_ADDR(u64 param1)
1238640035a2SMahipal Challa {
12395b0aa255SVarsha Rao 	if (param1 <= 7)
1240640035a2SMahipal Challa 		return 0x1000ull + (param1 & 7) * 0x8ull;
1241640035a2SMahipal Challa 	pr_err("ZIP_QUEX_SBUF_ADDR: %llu\n", param1);
1242640035a2SMahipal Challa 	return 0;
1243640035a2SMahipal Challa }
1244640035a2SMahipal Challa 
1245640035a2SMahipal Challa /**
1246640035a2SMahipal Challa  * union zip_quex_sbuf_ctl - Represents the registers that set the buffer
1247640035a2SMahipal Challa  * parameters for the instruction queues.
1248640035a2SMahipal Challa  *
1249640035a2SMahipal Challa  * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
1250640035a2SMahipal Challa  * this register to effectively reset the command buffer state machine.
1251640035a2SMahipal Challa  * These registers must be programmed before SW programs the corresponding
1252640035a2SMahipal Challa  * ZIP_QUE(0..7)_SBUF_ADDR.
1253640035a2SMahipal Challa  */
1254640035a2SMahipal Challa union zip_quex_sbuf_ctl {
1255640035a2SMahipal Challa 	u64 u_reg64;
1256640035a2SMahipal Challa 	struct zip_quex_sbuf_ctl_s {
1257640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1258640035a2SMahipal Challa 		u64 reserved_45_63              : 19;
1259640035a2SMahipal Challa 		u64 size                        : 13;
1260640035a2SMahipal Challa 		u64 inst_be                     : 1;
1261640035a2SMahipal Challa 		u64 reserved_24_30              : 7;
1262640035a2SMahipal Challa 		u64 stream_id                   : 8;
1263640035a2SMahipal Challa 		u64 reserved_12_15              : 4;
1264640035a2SMahipal Challa 		u64 aura                        : 12;
1265640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1266640035a2SMahipal Challa 		u64 aura                        : 12;
1267640035a2SMahipal Challa 		u64 reserved_12_15              : 4;
1268640035a2SMahipal Challa 		u64 stream_id                   : 8;
1269640035a2SMahipal Challa 		u64 reserved_24_30              : 7;
1270640035a2SMahipal Challa 		u64 inst_be                     : 1;
1271640035a2SMahipal Challa 		u64 size                        : 13;
1272640035a2SMahipal Challa 		u64 reserved_45_63              : 19;
1273640035a2SMahipal Challa #endif
1274640035a2SMahipal Challa 	} s;
1275640035a2SMahipal Challa };
1276640035a2SMahipal Challa 
ZIP_QUEX_SBUF_CTL(u64 param1)1277640035a2SMahipal Challa static inline u64 ZIP_QUEX_SBUF_CTL(u64 param1)
1278640035a2SMahipal Challa {
12795b0aa255SVarsha Rao 	if (param1 <= 7)
1280640035a2SMahipal Challa 		return 0x1200ull + (param1 & 7) * 0x8ull;
1281640035a2SMahipal Challa 	pr_err("ZIP_QUEX_SBUF_CTL: %llu\n", param1);
1282640035a2SMahipal Challa 	return 0;
1283640035a2SMahipal Challa }
1284640035a2SMahipal Challa 
1285640035a2SMahipal Challa /**
1286640035a2SMahipal Challa  * union zip_que_ena - Represents queue enable register
1287640035a2SMahipal Challa  *
1288640035a2SMahipal Challa  * If a queue is disabled, ZIP_CTL stops fetching instructions from the queue.
1289640035a2SMahipal Challa  */
1290640035a2SMahipal Challa union zip_que_ena {
1291640035a2SMahipal Challa 	u64 u_reg64;
1292640035a2SMahipal Challa 	struct zip_que_ena_s {
1293640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1294640035a2SMahipal Challa 		u64 reserved_8_63               : 56;
1295640035a2SMahipal Challa 		u64 ena                         : 8;
1296640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1297640035a2SMahipal Challa 		u64 ena                         : 8;
1298640035a2SMahipal Challa 		u64 reserved_8_63               : 56;
1299640035a2SMahipal Challa #endif
1300640035a2SMahipal Challa 	} s;
1301640035a2SMahipal Challa };
1302640035a2SMahipal Challa 
1303640035a2SMahipal Challa #define ZIP_QUE_ENA 0x0500ull
1304640035a2SMahipal Challa 
1305640035a2SMahipal Challa /**
1306640035a2SMahipal Challa  * union zip_que_pri - Represents the register that defines the priority
1307640035a2SMahipal Challa  * between instruction queues.
1308640035a2SMahipal Challa  */
1309640035a2SMahipal Challa union zip_que_pri {
1310640035a2SMahipal Challa 	u64 u_reg64;
1311640035a2SMahipal Challa 	struct zip_que_pri_s {
1312640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1313640035a2SMahipal Challa 		u64 reserved_8_63               : 56;
1314640035a2SMahipal Challa 		u64 pri                         : 8;
1315640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1316640035a2SMahipal Challa 		u64 pri                         : 8;
1317640035a2SMahipal Challa 		u64 reserved_8_63               : 56;
1318640035a2SMahipal Challa #endif
1319640035a2SMahipal Challa 	} s;
1320640035a2SMahipal Challa };
1321640035a2SMahipal Challa 
1322640035a2SMahipal Challa #define ZIP_QUE_PRI 0x0508ull
1323640035a2SMahipal Challa 
1324640035a2SMahipal Challa /**
1325640035a2SMahipal Challa  * union zip_throttle - Represents the register that controls the maximum
1326640035a2SMahipal Challa  * number of in-flight X2I data fetch transactions.
1327640035a2SMahipal Challa  *
1328640035a2SMahipal Challa  * Writing 0 to this register causes the ZIP module to temporarily suspend NCB
1329640035a2SMahipal Challa  * accesses; it is not recommended for normal operation, but may be useful for
1330640035a2SMahipal Challa  * diagnostics.
1331640035a2SMahipal Challa  */
1332640035a2SMahipal Challa union zip_throttle {
1333640035a2SMahipal Challa 	u64 u_reg64;
1334640035a2SMahipal Challa 	struct zip_throttle_s {
1335640035a2SMahipal Challa #if defined(__BIG_ENDIAN_BITFIELD)
1336640035a2SMahipal Challa 		u64 reserved_6_63               : 58;
1337640035a2SMahipal Challa 		u64 ld_infl                     : 6;
1338640035a2SMahipal Challa #elif defined(__LITTLE_ENDIAN_BITFIELD)
1339640035a2SMahipal Challa 		u64 ld_infl                     : 6;
1340640035a2SMahipal Challa 		u64 reserved_6_63               : 58;
1341640035a2SMahipal Challa #endif
1342640035a2SMahipal Challa 	} s;
1343640035a2SMahipal Challa };
1344640035a2SMahipal Challa 
1345640035a2SMahipal Challa #define ZIP_THROTTLE 0x0010ull
1346640035a2SMahipal Challa 
1347640035a2SMahipal Challa #endif /* _CSRS_ZIP__ */
1348