18c2ecf20Sopenharmony_ci/***********************license start************************************
28c2ecf20Sopenharmony_ci * Copyright (c) 2003-2017 Cavium, Inc.
38c2ecf20Sopenharmony_ci * All rights reserved.
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * License: one of 'Cavium License' or 'GNU General Public License Version 2'
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * This file is provided under the terms of the Cavium License (see below)
88c2ecf20Sopenharmony_ci * or under the terms of GNU General Public License, Version 2, as
98c2ecf20Sopenharmony_ci * published by the Free Software Foundation. When using or redistributing
108c2ecf20Sopenharmony_ci * this file, you may do so under either license.
118c2ecf20Sopenharmony_ci *
128c2ecf20Sopenharmony_ci * Cavium License:  Redistribution and use in source and binary forms, with
138c2ecf20Sopenharmony_ci * or without modification, are permitted provided that the following
148c2ecf20Sopenharmony_ci * conditions are met:
158c2ecf20Sopenharmony_ci *
168c2ecf20Sopenharmony_ci *  * Redistributions of source code must retain the above copyright
178c2ecf20Sopenharmony_ci *    notice, this list of conditions and the following disclaimer.
188c2ecf20Sopenharmony_ci *
198c2ecf20Sopenharmony_ci *  * Redistributions in binary form must reproduce the above
208c2ecf20Sopenharmony_ci *    copyright notice, this list of conditions and the following
218c2ecf20Sopenharmony_ci *    disclaimer in the documentation and/or other materials provided
228c2ecf20Sopenharmony_ci *    with the distribution.
238c2ecf20Sopenharmony_ci *
248c2ecf20Sopenharmony_ci *  * Neither the name of Cavium Inc. nor the names of its contributors may be
258c2ecf20Sopenharmony_ci *    used to endorse or promote products derived from this software without
268c2ecf20Sopenharmony_ci *    specific prior written permission.
278c2ecf20Sopenharmony_ci *
288c2ecf20Sopenharmony_ci * This Software, including technical data, may be subject to U.S. export
298c2ecf20Sopenharmony_ci * control laws, including the U.S. Export Administration Act and its
308c2ecf20Sopenharmony_ci * associated regulations, and may be subject to export or import
318c2ecf20Sopenharmony_ci * regulations in other countries.
328c2ecf20Sopenharmony_ci *
338c2ecf20Sopenharmony_ci * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
348c2ecf20Sopenharmony_ci * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS
358c2ecf20Sopenharmony_ci * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
368c2ecf20Sopenharmony_ci * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY
378c2ecf20Sopenharmony_ci * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT
388c2ecf20Sopenharmony_ci * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY)
398c2ecf20Sopenharmony_ci * WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A
408c2ecf20Sopenharmony_ci * PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET
418c2ecf20Sopenharmony_ci * ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE
428c2ecf20Sopenharmony_ci * ENTIRE  RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES
438c2ecf20Sopenharmony_ci * WITH YOU.
448c2ecf20Sopenharmony_ci ***********************license end**************************************/
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci#ifndef __ZIP_REGS_H__
478c2ecf20Sopenharmony_ci#define __ZIP_REGS_H__
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci/*
508c2ecf20Sopenharmony_ci * Configuration and status register (CSR) address and type definitions for
518c2ecf20Sopenharmony_ci * Cavium ZIP.
528c2ecf20Sopenharmony_ci */
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci#include <linux/kern_levels.h>
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci/* ZIP invocation result completion status codes */
578c2ecf20Sopenharmony_ci#define ZIP_CMD_NOTDONE        0x0
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci/* Successful completion. */
608c2ecf20Sopenharmony_ci#define ZIP_CMD_SUCCESS        0x1
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci/* Output truncated */
638c2ecf20Sopenharmony_ci#define ZIP_CMD_DTRUNC         0x2
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci/* Dynamic Stop */
668c2ecf20Sopenharmony_ci#define ZIP_CMD_DYNAMIC_STOP   0x3
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci/* Uncompress ran out of input data when IWORD0[EF] was set */
698c2ecf20Sopenharmony_ci#define ZIP_CMD_ITRUNC         0x4
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci/* Uncompress found the reserved block type 3 */
728c2ecf20Sopenharmony_ci#define ZIP_CMD_RBLOCK         0x5
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci/*
758c2ecf20Sopenharmony_ci * Uncompress found LEN != ZIP_CMD_NLEN in an uncompressed block in the input.
768c2ecf20Sopenharmony_ci */
778c2ecf20Sopenharmony_ci#define ZIP_CMD_NLEN           0x6
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci/* Uncompress found a bad code in the main Huffman codes. */
808c2ecf20Sopenharmony_ci#define ZIP_CMD_BADCODE        0x7
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci/* Uncompress found a bad code in the 19 Huffman codes encoding lengths. */
838c2ecf20Sopenharmony_ci#define ZIP_CMD_BADCODE2       0x8
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci/* Compress found a zero-length input. */
868c2ecf20Sopenharmony_ci#define ZIP_CMD_ZERO_LEN       0x9
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci/* The compress or decompress encountered an internal parity error. */
898c2ecf20Sopenharmony_ci#define ZIP_CMD_PARITY         0xA
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci/*
928c2ecf20Sopenharmony_ci * Uncompress found a string identifier that precedes the uncompressed data and
938c2ecf20Sopenharmony_ci * decompression history.
948c2ecf20Sopenharmony_ci */
958c2ecf20Sopenharmony_ci#define ZIP_CMD_FATAL          0xB
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci/**
988c2ecf20Sopenharmony_ci * enum zip_int_vec_e - ZIP MSI-X Vector Enumeration, enumerates the MSI-X
998c2ecf20Sopenharmony_ci * interrupt vectors.
1008c2ecf20Sopenharmony_ci */
1018c2ecf20Sopenharmony_cienum zip_int_vec_e {
1028c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_ECCE = 0x10,
1038c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_FIFE = 0x11,
1048c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE0_DONE = 0x0,
1058c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE0_ERR = 0x8,
1068c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE1_DONE = 0x1,
1078c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE1_ERR = 0x9,
1088c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE2_DONE = 0x2,
1098c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE2_ERR = 0xa,
1108c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE3_DONE = 0x3,
1118c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE3_ERR = 0xb,
1128c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE4_DONE = 0x4,
1138c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE4_ERR = 0xc,
1148c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE5_DONE = 0x5,
1158c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE5_ERR = 0xd,
1168c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE6_DONE = 0x6,
1178c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE6_ERR = 0xe,
1188c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE7_DONE = 0x7,
1198c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_QUE7_ERR = 0xf,
1208c2ecf20Sopenharmony_ci	ZIP_INT_VEC_E_ENUM_LAST = 0x12,
1218c2ecf20Sopenharmony_ci};
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci/**
1248c2ecf20Sopenharmony_ci * union zip_zptr_addr_s - ZIP Generic Pointer Structure for ADDR.
1258c2ecf20Sopenharmony_ci *
1268c2ecf20Sopenharmony_ci * It is the generic format of pointers in ZIP_INST_S.
1278c2ecf20Sopenharmony_ci */
1288c2ecf20Sopenharmony_ciunion zip_zptr_addr_s {
1298c2ecf20Sopenharmony_ci	u64 u_reg64;
1308c2ecf20Sopenharmony_ci	struct {
1318c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
1328c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
1338c2ecf20Sopenharmony_ci		u64 addr                        : 49;
1348c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
1358c2ecf20Sopenharmony_ci		u64 addr                        : 49;
1368c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
1378c2ecf20Sopenharmony_ci#endif
1388c2ecf20Sopenharmony_ci	} s;
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci};
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci/**
1438c2ecf20Sopenharmony_ci * union zip_zptr_ctl_s - ZIP Generic Pointer Structure for CTL.
1448c2ecf20Sopenharmony_ci *
1458c2ecf20Sopenharmony_ci * It is the generic format of pointers in ZIP_INST_S.
1468c2ecf20Sopenharmony_ci */
1478c2ecf20Sopenharmony_ciunion zip_zptr_ctl_s {
1488c2ecf20Sopenharmony_ci	u64 u_reg64;
1498c2ecf20Sopenharmony_ci	struct {
1508c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
1518c2ecf20Sopenharmony_ci		u64 reserved_112_127            : 16;
1528c2ecf20Sopenharmony_ci		u64 length                      : 16;
1538c2ecf20Sopenharmony_ci		u64 reserved_67_95              : 29;
1548c2ecf20Sopenharmony_ci		u64 fw                          : 1;
1558c2ecf20Sopenharmony_ci		u64 nc                          : 1;
1568c2ecf20Sopenharmony_ci		u64 data_be                     : 1;
1578c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
1588c2ecf20Sopenharmony_ci		u64 data_be                     : 1;
1598c2ecf20Sopenharmony_ci		u64 nc                          : 1;
1608c2ecf20Sopenharmony_ci		u64 fw                          : 1;
1618c2ecf20Sopenharmony_ci		u64 reserved_67_95              : 29;
1628c2ecf20Sopenharmony_ci		u64 length                      : 16;
1638c2ecf20Sopenharmony_ci		u64 reserved_112_127            : 16;
1648c2ecf20Sopenharmony_ci#endif
1658c2ecf20Sopenharmony_ci	} s;
1668c2ecf20Sopenharmony_ci};
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ci/**
1698c2ecf20Sopenharmony_ci * union zip_inst_s - ZIP Instruction Structure.
1708c2ecf20Sopenharmony_ci * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 within
1718c2ecf20Sopenharmony_ci * the structure).
1728c2ecf20Sopenharmony_ci */
1738c2ecf20Sopenharmony_ciunion zip_inst_s {
1748c2ecf20Sopenharmony_ci	u64 u_reg64[16];
1758c2ecf20Sopenharmony_ci	struct {
1768c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
1778c2ecf20Sopenharmony_ci		u64 doneint                     : 1;
1788c2ecf20Sopenharmony_ci		u64 reserved_56_62              : 7;
1798c2ecf20Sopenharmony_ci		u64 totaloutputlength           : 24;
1808c2ecf20Sopenharmony_ci		u64 reserved_27_31              : 5;
1818c2ecf20Sopenharmony_ci		u64 exn                         : 3;
1828c2ecf20Sopenharmony_ci		u64 reserved_23_23              : 1;
1838c2ecf20Sopenharmony_ci		u64 exbits                      : 7;
1848c2ecf20Sopenharmony_ci		u64 reserved_12_15              : 4;
1858c2ecf20Sopenharmony_ci		u64 sf                          : 1;
1868c2ecf20Sopenharmony_ci		u64 ss                          : 2;
1878c2ecf20Sopenharmony_ci		u64 cc                          : 2;
1888c2ecf20Sopenharmony_ci		u64 ef                          : 1;
1898c2ecf20Sopenharmony_ci		u64 bf                          : 1;
1908c2ecf20Sopenharmony_ci		u64 ce                          : 1;
1918c2ecf20Sopenharmony_ci		u64 reserved_3_3                : 1;
1928c2ecf20Sopenharmony_ci		u64 ds                          : 1;
1938c2ecf20Sopenharmony_ci		u64 dg                          : 1;
1948c2ecf20Sopenharmony_ci		u64 hg                          : 1;
1958c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
1968c2ecf20Sopenharmony_ci		u64 hg                          : 1;
1978c2ecf20Sopenharmony_ci		u64 dg                          : 1;
1988c2ecf20Sopenharmony_ci		u64 ds                          : 1;
1998c2ecf20Sopenharmony_ci		u64 reserved_3_3                : 1;
2008c2ecf20Sopenharmony_ci		u64 ce                          : 1;
2018c2ecf20Sopenharmony_ci		u64 bf                          : 1;
2028c2ecf20Sopenharmony_ci		u64 ef                          : 1;
2038c2ecf20Sopenharmony_ci		u64 cc                          : 2;
2048c2ecf20Sopenharmony_ci		u64 ss                          : 2;
2058c2ecf20Sopenharmony_ci		u64 sf                          : 1;
2068c2ecf20Sopenharmony_ci		u64 reserved_12_15              : 4;
2078c2ecf20Sopenharmony_ci		u64 exbits                      : 7;
2088c2ecf20Sopenharmony_ci		u64 reserved_23_23              : 1;
2098c2ecf20Sopenharmony_ci		u64 exn                         : 3;
2108c2ecf20Sopenharmony_ci		u64 reserved_27_31              : 5;
2118c2ecf20Sopenharmony_ci		u64 totaloutputlength           : 24;
2128c2ecf20Sopenharmony_ci		u64 reserved_56_62              : 7;
2138c2ecf20Sopenharmony_ci		u64 doneint                     : 1;
2148c2ecf20Sopenharmony_ci#endif
2158c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2168c2ecf20Sopenharmony_ci		u64 historylength               : 16;
2178c2ecf20Sopenharmony_ci		u64 reserved_96_111             : 16;
2188c2ecf20Sopenharmony_ci		u64 adlercrc32                  : 32;
2198c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2208c2ecf20Sopenharmony_ci		u64 adlercrc32                  : 32;
2218c2ecf20Sopenharmony_ci		u64 reserved_96_111             : 16;
2228c2ecf20Sopenharmony_ci		u64 historylength               : 16;
2238c2ecf20Sopenharmony_ci#endif
2248c2ecf20Sopenharmony_ci		union zip_zptr_addr_s ctx_ptr_addr;
2258c2ecf20Sopenharmony_ci		union zip_zptr_ctl_s ctx_ptr_ctl;
2268c2ecf20Sopenharmony_ci		union zip_zptr_addr_s his_ptr_addr;
2278c2ecf20Sopenharmony_ci		union zip_zptr_ctl_s his_ptr_ctl;
2288c2ecf20Sopenharmony_ci		union zip_zptr_addr_s inp_ptr_addr;
2298c2ecf20Sopenharmony_ci		union zip_zptr_ctl_s inp_ptr_ctl;
2308c2ecf20Sopenharmony_ci		union zip_zptr_addr_s out_ptr_addr;
2318c2ecf20Sopenharmony_ci		union zip_zptr_ctl_s out_ptr_ctl;
2328c2ecf20Sopenharmony_ci		union zip_zptr_addr_s res_ptr_addr;
2338c2ecf20Sopenharmony_ci		union zip_zptr_ctl_s res_ptr_ctl;
2348c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2358c2ecf20Sopenharmony_ci		u64 reserved_817_831            : 15;
2368c2ecf20Sopenharmony_ci		u64 wq_ptr                      : 49;
2378c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2388c2ecf20Sopenharmony_ci		u64 wq_ptr                      : 49;
2398c2ecf20Sopenharmony_ci		u64 reserved_817_831            : 15;
2408c2ecf20Sopenharmony_ci#endif
2418c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2428c2ecf20Sopenharmony_ci		u64 reserved_882_895            : 14;
2438c2ecf20Sopenharmony_ci		u64 tt                          : 2;
2448c2ecf20Sopenharmony_ci		u64 reserved_874_879            : 6;
2458c2ecf20Sopenharmony_ci		u64 grp                         : 10;
2468c2ecf20Sopenharmony_ci		u64 tag                         : 32;
2478c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2488c2ecf20Sopenharmony_ci		u64 tag                         : 32;
2498c2ecf20Sopenharmony_ci		u64 grp                         : 10;
2508c2ecf20Sopenharmony_ci		u64 reserved_874_879            : 6;
2518c2ecf20Sopenharmony_ci		u64 tt                          : 2;
2528c2ecf20Sopenharmony_ci		u64 reserved_882_895            : 14;
2538c2ecf20Sopenharmony_ci#endif
2548c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2558c2ecf20Sopenharmony_ci		u64 reserved_896_959            : 64;
2568c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2578c2ecf20Sopenharmony_ci		u64 reserved_896_959            : 64;
2588c2ecf20Sopenharmony_ci#endif
2598c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2608c2ecf20Sopenharmony_ci		u64 reserved_960_1023           : 64;
2618c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2628c2ecf20Sopenharmony_ci		u64 reserved_960_1023           : 64;
2638c2ecf20Sopenharmony_ci#endif
2648c2ecf20Sopenharmony_ci	} s;
2658c2ecf20Sopenharmony_ci};
2668c2ecf20Sopenharmony_ci
2678c2ecf20Sopenharmony_ci/**
2688c2ecf20Sopenharmony_ci * union zip_nptr_s - ZIP Instruction Next-Chunk-Buffer Pointer (NPTR)
2698c2ecf20Sopenharmony_ci * Structure
2708c2ecf20Sopenharmony_ci *
2718c2ecf20Sopenharmony_ci * ZIP_NPTR structure is used to chain all the zip instruction buffers
2728c2ecf20Sopenharmony_ci * together. ZIP instruction buffers are managed (allocated and released) by
2738c2ecf20Sopenharmony_ci * the software.
2748c2ecf20Sopenharmony_ci */
2758c2ecf20Sopenharmony_ciunion zip_nptr_s {
2768c2ecf20Sopenharmony_ci	u64 u_reg64;
2778c2ecf20Sopenharmony_ci	struct {
2788c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2798c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
2808c2ecf20Sopenharmony_ci		u64 addr                        : 49;
2818c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
2828c2ecf20Sopenharmony_ci		u64 addr                        : 49;
2838c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
2848c2ecf20Sopenharmony_ci#endif
2858c2ecf20Sopenharmony_ci	} s;
2868c2ecf20Sopenharmony_ci};
2878c2ecf20Sopenharmony_ci
2888c2ecf20Sopenharmony_ci/**
2898c2ecf20Sopenharmony_ci * union zip_zptr_s - ZIP Generic Pointer Structure.
2908c2ecf20Sopenharmony_ci *
2918c2ecf20Sopenharmony_ci * It is the generic format of pointers in ZIP_INST_S.
2928c2ecf20Sopenharmony_ci */
2938c2ecf20Sopenharmony_ciunion zip_zptr_s {
2948c2ecf20Sopenharmony_ci	u64 u_reg64[2];
2958c2ecf20Sopenharmony_ci	struct {
2968c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
2978c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
2988c2ecf20Sopenharmony_ci		u64 addr                        : 49;
2998c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3008c2ecf20Sopenharmony_ci		u64 addr                        : 49;
3018c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
3028c2ecf20Sopenharmony_ci#endif
3038c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
3048c2ecf20Sopenharmony_ci		u64 reserved_112_127            : 16;
3058c2ecf20Sopenharmony_ci		u64 length                      : 16;
3068c2ecf20Sopenharmony_ci		u64 reserved_67_95              : 29;
3078c2ecf20Sopenharmony_ci		u64 fw                          : 1;
3088c2ecf20Sopenharmony_ci		u64 nc                          : 1;
3098c2ecf20Sopenharmony_ci		u64 data_be                     : 1;
3108c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3118c2ecf20Sopenharmony_ci		u64 data_be                     : 1;
3128c2ecf20Sopenharmony_ci		u64 nc                          : 1;
3138c2ecf20Sopenharmony_ci		u64 fw                          : 1;
3148c2ecf20Sopenharmony_ci		u64 reserved_67_95              : 29;
3158c2ecf20Sopenharmony_ci		u64 length                      : 16;
3168c2ecf20Sopenharmony_ci		u64 reserved_112_127            : 16;
3178c2ecf20Sopenharmony_ci#endif
3188c2ecf20Sopenharmony_ci	} s;
3198c2ecf20Sopenharmony_ci};
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_ci/**
3228c2ecf20Sopenharmony_ci * union zip_zres_s - ZIP Result Structure
3238c2ecf20Sopenharmony_ci *
3248c2ecf20Sopenharmony_ci * The ZIP coprocessor writes the result structure after it completes the
3258c2ecf20Sopenharmony_ci * invocation. The result structure is exactly 24 bytes, and each invocation of
3268c2ecf20Sopenharmony_ci * the ZIP coprocessor produces exactly one result structure.
3278c2ecf20Sopenharmony_ci */
3288c2ecf20Sopenharmony_ciunion zip_zres_s {
3298c2ecf20Sopenharmony_ci	u64 u_reg64[3];
3308c2ecf20Sopenharmony_ci	struct {
3318c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
3328c2ecf20Sopenharmony_ci		u64 crc32                       : 32;
3338c2ecf20Sopenharmony_ci		u64 adler32                     : 32;
3348c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3358c2ecf20Sopenharmony_ci		u64 adler32                     : 32;
3368c2ecf20Sopenharmony_ci		u64 crc32                       : 32;
3378c2ecf20Sopenharmony_ci#endif
3388c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
3398c2ecf20Sopenharmony_ci		u64 totalbyteswritten           : 32;
3408c2ecf20Sopenharmony_ci		u64 totalbytesread              : 32;
3418c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3428c2ecf20Sopenharmony_ci		u64 totalbytesread              : 32;
3438c2ecf20Sopenharmony_ci		u64 totalbyteswritten           : 32;
3448c2ecf20Sopenharmony_ci#endif
3458c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
3468c2ecf20Sopenharmony_ci		u64 totalbitsprocessed          : 32;
3478c2ecf20Sopenharmony_ci		u64 doneint                     : 1;
3488c2ecf20Sopenharmony_ci		u64 reserved_155_158            : 4;
3498c2ecf20Sopenharmony_ci		u64 exn                         : 3;
3508c2ecf20Sopenharmony_ci		u64 reserved_151_151            : 1;
3518c2ecf20Sopenharmony_ci		u64 exbits                      : 7;
3528c2ecf20Sopenharmony_ci		u64 reserved_137_143            : 7;
3538c2ecf20Sopenharmony_ci		u64 ef                          : 1;
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ci		volatile u64 compcode           : 8;
3568c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3578c2ecf20Sopenharmony_ci
3588c2ecf20Sopenharmony_ci		volatile u64 compcode           : 8;
3598c2ecf20Sopenharmony_ci		u64 ef                          : 1;
3608c2ecf20Sopenharmony_ci		u64 reserved_137_143            : 7;
3618c2ecf20Sopenharmony_ci		u64 exbits                      : 7;
3628c2ecf20Sopenharmony_ci		u64 reserved_151_151            : 1;
3638c2ecf20Sopenharmony_ci		u64 exn                         : 3;
3648c2ecf20Sopenharmony_ci		u64 reserved_155_158            : 4;
3658c2ecf20Sopenharmony_ci		u64 doneint                     : 1;
3668c2ecf20Sopenharmony_ci		u64 totalbitsprocessed          : 32;
3678c2ecf20Sopenharmony_ci#endif
3688c2ecf20Sopenharmony_ci	} s;
3698c2ecf20Sopenharmony_ci};
3708c2ecf20Sopenharmony_ci
3718c2ecf20Sopenharmony_ci/**
3728c2ecf20Sopenharmony_ci * union zip_cmd_ctl - Structure representing the register that controls
3738c2ecf20Sopenharmony_ci * clock and reset.
3748c2ecf20Sopenharmony_ci */
3758c2ecf20Sopenharmony_ciunion zip_cmd_ctl {
3768c2ecf20Sopenharmony_ci	u64 u_reg64;
3778c2ecf20Sopenharmony_ci	struct zip_cmd_ctl_s {
3788c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
3798c2ecf20Sopenharmony_ci		u64 reserved_2_63               : 62;
3808c2ecf20Sopenharmony_ci		u64 forceclk                    : 1;
3818c2ecf20Sopenharmony_ci		u64 reset                       : 1;
3828c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
3838c2ecf20Sopenharmony_ci		u64 reset                       : 1;
3848c2ecf20Sopenharmony_ci		u64 forceclk                    : 1;
3858c2ecf20Sopenharmony_ci		u64 reserved_2_63               : 62;
3868c2ecf20Sopenharmony_ci#endif
3878c2ecf20Sopenharmony_ci	} s;
3888c2ecf20Sopenharmony_ci};
3898c2ecf20Sopenharmony_ci
3908c2ecf20Sopenharmony_ci#define ZIP_CMD_CTL 0x0ull
3918c2ecf20Sopenharmony_ci
3928c2ecf20Sopenharmony_ci/**
3938c2ecf20Sopenharmony_ci * union zip_constants - Data structure representing the register that contains
3948c2ecf20Sopenharmony_ci * all of the current implementation-related parameters of the zip core in this
3958c2ecf20Sopenharmony_ci * chip.
3968c2ecf20Sopenharmony_ci */
3978c2ecf20Sopenharmony_ciunion zip_constants {
3988c2ecf20Sopenharmony_ci	u64 u_reg64;
3998c2ecf20Sopenharmony_ci	struct zip_constants_s {
4008c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
4018c2ecf20Sopenharmony_ci		u64 nexec                       : 8;
4028c2ecf20Sopenharmony_ci		u64 reserved_49_55              : 7;
4038c2ecf20Sopenharmony_ci		u64 syncflush_capable           : 1;
4048c2ecf20Sopenharmony_ci		u64 depth                       : 16;
4058c2ecf20Sopenharmony_ci		u64 onfsize                     : 12;
4068c2ecf20Sopenharmony_ci		u64 ctxsize                     : 12;
4078c2ecf20Sopenharmony_ci		u64 reserved_1_7                : 7;
4088c2ecf20Sopenharmony_ci		u64 disabled                    : 1;
4098c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
4108c2ecf20Sopenharmony_ci		u64 disabled                    : 1;
4118c2ecf20Sopenharmony_ci		u64 reserved_1_7                : 7;
4128c2ecf20Sopenharmony_ci		u64 ctxsize                     : 12;
4138c2ecf20Sopenharmony_ci		u64 onfsize                     : 12;
4148c2ecf20Sopenharmony_ci		u64 depth                       : 16;
4158c2ecf20Sopenharmony_ci		u64 syncflush_capable           : 1;
4168c2ecf20Sopenharmony_ci		u64 reserved_49_55              : 7;
4178c2ecf20Sopenharmony_ci		u64 nexec                       : 8;
4188c2ecf20Sopenharmony_ci#endif
4198c2ecf20Sopenharmony_ci	} s;
4208c2ecf20Sopenharmony_ci};
4218c2ecf20Sopenharmony_ci
4228c2ecf20Sopenharmony_ci#define ZIP_CONSTANTS 0x00A0ull
4238c2ecf20Sopenharmony_ci
4248c2ecf20Sopenharmony_ci/**
4258c2ecf20Sopenharmony_ci * union zip_corex_bist_status - Represents registers which have the BIST
4268c2ecf20Sopenharmony_ci * status of memories in zip cores.
4278c2ecf20Sopenharmony_ci *
4288c2ecf20Sopenharmony_ci * Each bit is the BIST result of an individual memory
4298c2ecf20Sopenharmony_ci * (per bit, 0 = pass and 1 = fail).
4308c2ecf20Sopenharmony_ci */
4318c2ecf20Sopenharmony_ciunion zip_corex_bist_status {
4328c2ecf20Sopenharmony_ci	u64 u_reg64;
4338c2ecf20Sopenharmony_ci	struct zip_corex_bist_status_s {
4348c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
4358c2ecf20Sopenharmony_ci		u64 reserved_53_63              : 11;
4368c2ecf20Sopenharmony_ci		u64 bstatus                     : 53;
4378c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
4388c2ecf20Sopenharmony_ci		u64 bstatus                     : 53;
4398c2ecf20Sopenharmony_ci		u64 reserved_53_63              : 11;
4408c2ecf20Sopenharmony_ci#endif
4418c2ecf20Sopenharmony_ci	} s;
4428c2ecf20Sopenharmony_ci};
4438c2ecf20Sopenharmony_ci
4448c2ecf20Sopenharmony_cistatic inline u64 ZIP_COREX_BIST_STATUS(u64 param1)
4458c2ecf20Sopenharmony_ci{
4468c2ecf20Sopenharmony_ci	if (param1 <= 1)
4478c2ecf20Sopenharmony_ci		return 0x0520ull + (param1 & 1) * 0x8ull;
4488c2ecf20Sopenharmony_ci	pr_err("ZIP_COREX_BIST_STATUS: %llu\n", param1);
4498c2ecf20Sopenharmony_ci	return 0;
4508c2ecf20Sopenharmony_ci}
4518c2ecf20Sopenharmony_ci
4528c2ecf20Sopenharmony_ci/**
4538c2ecf20Sopenharmony_ci * union zip_ctl_bist_status - Represents register that has the BIST status of
4548c2ecf20Sopenharmony_ci * memories in ZIP_CTL (instruction buffer, G/S pointer FIFO, input data
4558c2ecf20Sopenharmony_ci * buffer, output data buffers).
4568c2ecf20Sopenharmony_ci *
4578c2ecf20Sopenharmony_ci * Each bit is the BIST result of an individual memory
4588c2ecf20Sopenharmony_ci * (per bit, 0 = pass and 1 = fail).
4598c2ecf20Sopenharmony_ci */
4608c2ecf20Sopenharmony_ciunion zip_ctl_bist_status {
4618c2ecf20Sopenharmony_ci	u64 u_reg64;
4628c2ecf20Sopenharmony_ci	struct zip_ctl_bist_status_s {
4638c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
4648c2ecf20Sopenharmony_ci		u64 reserved_9_63               : 55;
4658c2ecf20Sopenharmony_ci		u64 bstatus                     : 9;
4668c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
4678c2ecf20Sopenharmony_ci		u64 bstatus                     : 9;
4688c2ecf20Sopenharmony_ci		u64 reserved_9_63               : 55;
4698c2ecf20Sopenharmony_ci#endif
4708c2ecf20Sopenharmony_ci	} s;
4718c2ecf20Sopenharmony_ci};
4728c2ecf20Sopenharmony_ci
4738c2ecf20Sopenharmony_ci#define ZIP_CTL_BIST_STATUS 0x0510ull
4748c2ecf20Sopenharmony_ci
4758c2ecf20Sopenharmony_ci/**
4768c2ecf20Sopenharmony_ci * union zip_ctl_cfg - Represents the register that controls the behavior of
4778c2ecf20Sopenharmony_ci * the ZIP DMA engines.
4788c2ecf20Sopenharmony_ci *
4798c2ecf20Sopenharmony_ci * It is recommended to keep default values for normal operation. Changing the
4808c2ecf20Sopenharmony_ci * values of the fields may be useful for diagnostics.
4818c2ecf20Sopenharmony_ci */
4828c2ecf20Sopenharmony_ciunion zip_ctl_cfg {
4838c2ecf20Sopenharmony_ci	u64 u_reg64;
4848c2ecf20Sopenharmony_ci	struct zip_ctl_cfg_s {
4858c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
4868c2ecf20Sopenharmony_ci		u64 reserved_52_63              : 12;
4878c2ecf20Sopenharmony_ci		u64 ildf                        : 4;
4888c2ecf20Sopenharmony_ci		u64 reserved_36_47              : 12;
4898c2ecf20Sopenharmony_ci		u64 drtf                        : 4;
4908c2ecf20Sopenharmony_ci		u64 reserved_27_31              : 5;
4918c2ecf20Sopenharmony_ci		u64 stcf                        : 3;
4928c2ecf20Sopenharmony_ci		u64 reserved_19_23              : 5;
4938c2ecf20Sopenharmony_ci		u64 ldf                         : 3;
4948c2ecf20Sopenharmony_ci		u64 reserved_2_15               : 14;
4958c2ecf20Sopenharmony_ci		u64 busy                        : 1;
4968c2ecf20Sopenharmony_ci		u64 reserved_0_0                : 1;
4978c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
4988c2ecf20Sopenharmony_ci		u64 reserved_0_0                : 1;
4998c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5008c2ecf20Sopenharmony_ci		u64 reserved_2_15               : 14;
5018c2ecf20Sopenharmony_ci		u64 ldf                         : 3;
5028c2ecf20Sopenharmony_ci		u64 reserved_19_23              : 5;
5038c2ecf20Sopenharmony_ci		u64 stcf                        : 3;
5048c2ecf20Sopenharmony_ci		u64 reserved_27_31              : 5;
5058c2ecf20Sopenharmony_ci		u64 drtf                        : 4;
5068c2ecf20Sopenharmony_ci		u64 reserved_36_47              : 12;
5078c2ecf20Sopenharmony_ci		u64 ildf                        : 4;
5088c2ecf20Sopenharmony_ci		u64 reserved_52_63              : 12;
5098c2ecf20Sopenharmony_ci#endif
5108c2ecf20Sopenharmony_ci	} s;
5118c2ecf20Sopenharmony_ci};
5128c2ecf20Sopenharmony_ci
5138c2ecf20Sopenharmony_ci#define ZIP_CTL_CFG 0x0560ull
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_ci/**
5168c2ecf20Sopenharmony_ci * union zip_dbg_corex_inst - Represents the registers that reflect the status
5178c2ecf20Sopenharmony_ci * of the current instruction that the ZIP core is executing or has executed.
5188c2ecf20Sopenharmony_ci *
5198c2ecf20Sopenharmony_ci * These registers are only for debug use.
5208c2ecf20Sopenharmony_ci */
5218c2ecf20Sopenharmony_ciunion zip_dbg_corex_inst {
5228c2ecf20Sopenharmony_ci	u64 u_reg64;
5238c2ecf20Sopenharmony_ci	struct zip_dbg_corex_inst_s {
5248c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5258c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5268c2ecf20Sopenharmony_ci		u64 reserved_35_62              : 28;
5278c2ecf20Sopenharmony_ci		u64 qid                         : 3;
5288c2ecf20Sopenharmony_ci		u64 iid                         : 32;
5298c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
5308c2ecf20Sopenharmony_ci		u64 iid                         : 32;
5318c2ecf20Sopenharmony_ci		u64 qid                         : 3;
5328c2ecf20Sopenharmony_ci		u64 reserved_35_62              : 28;
5338c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5348c2ecf20Sopenharmony_ci#endif
5358c2ecf20Sopenharmony_ci	} s;
5368c2ecf20Sopenharmony_ci};
5378c2ecf20Sopenharmony_ci
5388c2ecf20Sopenharmony_cistatic inline u64 ZIP_DBG_COREX_INST(u64 param1)
5398c2ecf20Sopenharmony_ci{
5408c2ecf20Sopenharmony_ci	if (param1 <= 1)
5418c2ecf20Sopenharmony_ci		return 0x0640ull + (param1 & 1) * 0x8ull;
5428c2ecf20Sopenharmony_ci	pr_err("ZIP_DBG_COREX_INST: %llu\n", param1);
5438c2ecf20Sopenharmony_ci	return 0;
5448c2ecf20Sopenharmony_ci}
5458c2ecf20Sopenharmony_ci
5468c2ecf20Sopenharmony_ci/**
5478c2ecf20Sopenharmony_ci * union zip_dbg_corex_sta - Represents registers that reflect the status of
5488c2ecf20Sopenharmony_ci * the zip cores.
5498c2ecf20Sopenharmony_ci *
5508c2ecf20Sopenharmony_ci * They are for debug use only.
5518c2ecf20Sopenharmony_ci */
5528c2ecf20Sopenharmony_ciunion zip_dbg_corex_sta {
5538c2ecf20Sopenharmony_ci	u64 u_reg64;
5548c2ecf20Sopenharmony_ci	struct zip_dbg_corex_sta_s {
5558c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5568c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5578c2ecf20Sopenharmony_ci		u64 reserved_37_62              : 26;
5588c2ecf20Sopenharmony_ci		u64 ist                         : 5;
5598c2ecf20Sopenharmony_ci		u64 nie                         : 32;
5608c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
5618c2ecf20Sopenharmony_ci		u64 nie                         : 32;
5628c2ecf20Sopenharmony_ci		u64 ist                         : 5;
5638c2ecf20Sopenharmony_ci		u64 reserved_37_62              : 26;
5648c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5658c2ecf20Sopenharmony_ci#endif
5668c2ecf20Sopenharmony_ci	} s;
5678c2ecf20Sopenharmony_ci};
5688c2ecf20Sopenharmony_ci
5698c2ecf20Sopenharmony_cistatic inline u64 ZIP_DBG_COREX_STA(u64 param1)
5708c2ecf20Sopenharmony_ci{
5718c2ecf20Sopenharmony_ci	if (param1 <= 1)
5728c2ecf20Sopenharmony_ci		return 0x0680ull + (param1 & 1) * 0x8ull;
5738c2ecf20Sopenharmony_ci	pr_err("ZIP_DBG_COREX_STA: %llu\n", param1);
5748c2ecf20Sopenharmony_ci	return 0;
5758c2ecf20Sopenharmony_ci}
5768c2ecf20Sopenharmony_ci
5778c2ecf20Sopenharmony_ci/**
5788c2ecf20Sopenharmony_ci * union zip_dbg_quex_sta - Represets registers that reflect status of the zip
5798c2ecf20Sopenharmony_ci * instruction queues.
5808c2ecf20Sopenharmony_ci *
5818c2ecf20Sopenharmony_ci * They are for debug use only.
5828c2ecf20Sopenharmony_ci */
5838c2ecf20Sopenharmony_ciunion zip_dbg_quex_sta {
5848c2ecf20Sopenharmony_ci	u64 u_reg64;
5858c2ecf20Sopenharmony_ci	struct zip_dbg_quex_sta_s {
5868c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
5878c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5888c2ecf20Sopenharmony_ci		u64 reserved_56_62              : 7;
5898c2ecf20Sopenharmony_ci		u64 rqwc                        : 24;
5908c2ecf20Sopenharmony_ci		u64 nii                         : 32;
5918c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
5928c2ecf20Sopenharmony_ci		u64 nii                         : 32;
5938c2ecf20Sopenharmony_ci		u64 rqwc                        : 24;
5948c2ecf20Sopenharmony_ci		u64 reserved_56_62              : 7;
5958c2ecf20Sopenharmony_ci		u64 busy                        : 1;
5968c2ecf20Sopenharmony_ci#endif
5978c2ecf20Sopenharmony_ci	} s;
5988c2ecf20Sopenharmony_ci};
5998c2ecf20Sopenharmony_ci
6008c2ecf20Sopenharmony_cistatic inline u64 ZIP_DBG_QUEX_STA(u64 param1)
6018c2ecf20Sopenharmony_ci{
6028c2ecf20Sopenharmony_ci	if (param1 <= 7)
6038c2ecf20Sopenharmony_ci		return 0x1800ull + (param1 & 7) * 0x8ull;
6048c2ecf20Sopenharmony_ci	pr_err("ZIP_DBG_QUEX_STA: %llu\n", param1);
6058c2ecf20Sopenharmony_ci	return 0;
6068c2ecf20Sopenharmony_ci}
6078c2ecf20Sopenharmony_ci
6088c2ecf20Sopenharmony_ci/**
6098c2ecf20Sopenharmony_ci * union zip_ecc_ctl - Represents the register that enables ECC for each
6108c2ecf20Sopenharmony_ci * individual internal memory that requires ECC.
6118c2ecf20Sopenharmony_ci *
6128c2ecf20Sopenharmony_ci * For debug purpose, it can also flip one or two bits in the ECC data.
6138c2ecf20Sopenharmony_ci */
6148c2ecf20Sopenharmony_ciunion zip_ecc_ctl {
6158c2ecf20Sopenharmony_ci	u64 u_reg64;
6168c2ecf20Sopenharmony_ci	struct zip_ecc_ctl_s {
6178c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
6188c2ecf20Sopenharmony_ci		u64 reserved_19_63              : 45;
6198c2ecf20Sopenharmony_ci		u64 vmem_cdis                   : 1;
6208c2ecf20Sopenharmony_ci		u64 vmem_fs                     : 2;
6218c2ecf20Sopenharmony_ci		u64 reserved_15_15              : 1;
6228c2ecf20Sopenharmony_ci		u64 idf1_cdis                   : 1;
6238c2ecf20Sopenharmony_ci		u64 idf1_fs                     : 2;
6248c2ecf20Sopenharmony_ci		u64 reserved_11_11              : 1;
6258c2ecf20Sopenharmony_ci		u64 idf0_cdis                   : 1;
6268c2ecf20Sopenharmony_ci		u64 idf0_fs                     : 2;
6278c2ecf20Sopenharmony_ci		u64 reserved_7_7                : 1;
6288c2ecf20Sopenharmony_ci		u64 gspf_cdis                   : 1;
6298c2ecf20Sopenharmony_ci		u64 gspf_fs                     : 2;
6308c2ecf20Sopenharmony_ci		u64 reserved_3_3                : 1;
6318c2ecf20Sopenharmony_ci		u64 iqf_cdis                    : 1;
6328c2ecf20Sopenharmony_ci		u64 iqf_fs                      : 2;
6338c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
6348c2ecf20Sopenharmony_ci		u64 iqf_fs                      : 2;
6358c2ecf20Sopenharmony_ci		u64 iqf_cdis                    : 1;
6368c2ecf20Sopenharmony_ci		u64 reserved_3_3                : 1;
6378c2ecf20Sopenharmony_ci		u64 gspf_fs                     : 2;
6388c2ecf20Sopenharmony_ci		u64 gspf_cdis                   : 1;
6398c2ecf20Sopenharmony_ci		u64 reserved_7_7                : 1;
6408c2ecf20Sopenharmony_ci		u64 idf0_fs                     : 2;
6418c2ecf20Sopenharmony_ci		u64 idf0_cdis                   : 1;
6428c2ecf20Sopenharmony_ci		u64 reserved_11_11              : 1;
6438c2ecf20Sopenharmony_ci		u64 idf1_fs                     : 2;
6448c2ecf20Sopenharmony_ci		u64 idf1_cdis                   : 1;
6458c2ecf20Sopenharmony_ci		u64 reserved_15_15              : 1;
6468c2ecf20Sopenharmony_ci		u64 vmem_fs                     : 2;
6478c2ecf20Sopenharmony_ci		u64 vmem_cdis                   : 1;
6488c2ecf20Sopenharmony_ci		u64 reserved_19_63              : 45;
6498c2ecf20Sopenharmony_ci#endif
6508c2ecf20Sopenharmony_ci	} s;
6518c2ecf20Sopenharmony_ci};
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_ci#define ZIP_ECC_CTL 0x0568ull
6548c2ecf20Sopenharmony_ci
6558c2ecf20Sopenharmony_ci/* NCB - zip_ecce_ena_w1c */
6568c2ecf20Sopenharmony_ciunion zip_ecce_ena_w1c {
6578c2ecf20Sopenharmony_ci	u64 u_reg64;
6588c2ecf20Sopenharmony_ci	struct zip_ecce_ena_w1c_s {
6598c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
6608c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
6618c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
6628c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
6638c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
6648c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
6658c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
6668c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
6678c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
6688c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
6698c2ecf20Sopenharmony_ci#endif
6708c2ecf20Sopenharmony_ci	} s;
6718c2ecf20Sopenharmony_ci};
6728c2ecf20Sopenharmony_ci
6738c2ecf20Sopenharmony_ci#define ZIP_ECCE_ENA_W1C 0x0598ull
6748c2ecf20Sopenharmony_ci
6758c2ecf20Sopenharmony_ci/* NCB - zip_ecce_ena_w1s */
6768c2ecf20Sopenharmony_ciunion zip_ecce_ena_w1s {
6778c2ecf20Sopenharmony_ci	u64 u_reg64;
6788c2ecf20Sopenharmony_ci	struct zip_ecce_ena_w1s_s {
6798c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
6808c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
6818c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
6828c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
6838c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
6848c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
6858c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
6868c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
6878c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
6888c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
6898c2ecf20Sopenharmony_ci#endif
6908c2ecf20Sopenharmony_ci	} s;
6918c2ecf20Sopenharmony_ci};
6928c2ecf20Sopenharmony_ci
6938c2ecf20Sopenharmony_ci#define ZIP_ECCE_ENA_W1S 0x0590ull
6948c2ecf20Sopenharmony_ci
6958c2ecf20Sopenharmony_ci/**
6968c2ecf20Sopenharmony_ci * union zip_ecce_int - Represents the register that contains the status of the
6978c2ecf20Sopenharmony_ci * ECC interrupt sources.
6988c2ecf20Sopenharmony_ci */
6998c2ecf20Sopenharmony_ciunion zip_ecce_int {
7008c2ecf20Sopenharmony_ci	u64 u_reg64;
7018c2ecf20Sopenharmony_ci	struct zip_ecce_int_s {
7028c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7038c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
7048c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
7058c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
7068c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
7078c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7088c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
7098c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
7108c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
7118c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
7128c2ecf20Sopenharmony_ci#endif
7138c2ecf20Sopenharmony_ci	} s;
7148c2ecf20Sopenharmony_ci};
7158c2ecf20Sopenharmony_ci
7168c2ecf20Sopenharmony_ci#define ZIP_ECCE_INT 0x0580ull
7178c2ecf20Sopenharmony_ci
7188c2ecf20Sopenharmony_ci/* NCB - zip_ecce_int_w1s */
7198c2ecf20Sopenharmony_ciunion zip_ecce_int_w1s {
7208c2ecf20Sopenharmony_ci	u64 u_reg64;
7218c2ecf20Sopenharmony_ci	struct zip_ecce_int_w1s_s {
7228c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7238c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
7248c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
7258c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
7268c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
7278c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7288c2ecf20Sopenharmony_ci		u64 sbe                         : 5;
7298c2ecf20Sopenharmony_ci		u64 reserved_5_31               : 27;
7308c2ecf20Sopenharmony_ci		u64 dbe                         : 5;
7318c2ecf20Sopenharmony_ci		u64 reserved_37_63              : 27;
7328c2ecf20Sopenharmony_ci#endif
7338c2ecf20Sopenharmony_ci	} s;
7348c2ecf20Sopenharmony_ci};
7358c2ecf20Sopenharmony_ci
7368c2ecf20Sopenharmony_ci#define ZIP_ECCE_INT_W1S 0x0588ull
7378c2ecf20Sopenharmony_ci
7388c2ecf20Sopenharmony_ci/* NCB - zip_fife_ena_w1c */
7398c2ecf20Sopenharmony_ciunion zip_fife_ena_w1c {
7408c2ecf20Sopenharmony_ci	u64 u_reg64;
7418c2ecf20Sopenharmony_ci	struct zip_fife_ena_w1c_s {
7428c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7438c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7448c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7458c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7468c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7478c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7488c2ecf20Sopenharmony_ci#endif
7498c2ecf20Sopenharmony_ci	} s;
7508c2ecf20Sopenharmony_ci};
7518c2ecf20Sopenharmony_ci
7528c2ecf20Sopenharmony_ci#define ZIP_FIFE_ENA_W1C 0x0090ull
7538c2ecf20Sopenharmony_ci
7548c2ecf20Sopenharmony_ci/* NCB - zip_fife_ena_w1s */
7558c2ecf20Sopenharmony_ciunion zip_fife_ena_w1s {
7568c2ecf20Sopenharmony_ci	u64 u_reg64;
7578c2ecf20Sopenharmony_ci	struct zip_fife_ena_w1s_s {
7588c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7598c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7608c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7618c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7628c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7638c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7648c2ecf20Sopenharmony_ci#endif
7658c2ecf20Sopenharmony_ci	} s;
7668c2ecf20Sopenharmony_ci};
7678c2ecf20Sopenharmony_ci
7688c2ecf20Sopenharmony_ci#define ZIP_FIFE_ENA_W1S 0x0088ull
7698c2ecf20Sopenharmony_ci
7708c2ecf20Sopenharmony_ci/* NCB - zip_fife_int */
7718c2ecf20Sopenharmony_ciunion zip_fife_int {
7728c2ecf20Sopenharmony_ci	u64 u_reg64;
7738c2ecf20Sopenharmony_ci	struct zip_fife_int_s {
7748c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7758c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7768c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7778c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7788c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7798c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7808c2ecf20Sopenharmony_ci#endif
7818c2ecf20Sopenharmony_ci	} s;
7828c2ecf20Sopenharmony_ci};
7838c2ecf20Sopenharmony_ci
7848c2ecf20Sopenharmony_ci#define ZIP_FIFE_INT 0x0078ull
7858c2ecf20Sopenharmony_ci
7868c2ecf20Sopenharmony_ci/* NCB - zip_fife_int_w1s */
7878c2ecf20Sopenharmony_ciunion zip_fife_int_w1s {
7888c2ecf20Sopenharmony_ci	u64 u_reg64;
7898c2ecf20Sopenharmony_ci	struct zip_fife_int_w1s_s {
7908c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
7918c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7928c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7938c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
7948c2ecf20Sopenharmony_ci		u64 asserts                     : 42;
7958c2ecf20Sopenharmony_ci		u64 reserved_42_63              : 22;
7968c2ecf20Sopenharmony_ci#endif
7978c2ecf20Sopenharmony_ci	} s;
7988c2ecf20Sopenharmony_ci};
7998c2ecf20Sopenharmony_ci
8008c2ecf20Sopenharmony_ci#define ZIP_FIFE_INT_W1S 0x0080ull
8018c2ecf20Sopenharmony_ci
8028c2ecf20Sopenharmony_ci/**
8038c2ecf20Sopenharmony_ci * union zip_msix_pbax - Represents the register that is the MSI-X PBA table
8048c2ecf20Sopenharmony_ci *
8058c2ecf20Sopenharmony_ci * The bit number is indexed by the ZIP_INT_VEC_E enumeration.
8068c2ecf20Sopenharmony_ci */
8078c2ecf20Sopenharmony_ciunion zip_msix_pbax {
8088c2ecf20Sopenharmony_ci	u64 u_reg64;
8098c2ecf20Sopenharmony_ci	struct zip_msix_pbax_s {
8108c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
8118c2ecf20Sopenharmony_ci		u64 pend                        : 64;
8128c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
8138c2ecf20Sopenharmony_ci		u64 pend                        : 64;
8148c2ecf20Sopenharmony_ci#endif
8158c2ecf20Sopenharmony_ci	} s;
8168c2ecf20Sopenharmony_ci};
8178c2ecf20Sopenharmony_ci
8188c2ecf20Sopenharmony_cistatic inline u64 ZIP_MSIX_PBAX(u64 param1)
8198c2ecf20Sopenharmony_ci{
8208c2ecf20Sopenharmony_ci	if (param1 == 0)
8218c2ecf20Sopenharmony_ci		return 0x0000838000FF0000ull;
8228c2ecf20Sopenharmony_ci	pr_err("ZIP_MSIX_PBAX: %llu\n", param1);
8238c2ecf20Sopenharmony_ci	return 0;
8248c2ecf20Sopenharmony_ci}
8258c2ecf20Sopenharmony_ci
8268c2ecf20Sopenharmony_ci/**
8278c2ecf20Sopenharmony_ci * union zip_msix_vecx_addr - Represents the register that is the MSI-X vector
8288c2ecf20Sopenharmony_ci * table, indexed by the ZIP_INT_VEC_E enumeration.
8298c2ecf20Sopenharmony_ci */
8308c2ecf20Sopenharmony_ciunion zip_msix_vecx_addr {
8318c2ecf20Sopenharmony_ci	u64 u_reg64;
8328c2ecf20Sopenharmony_ci	struct zip_msix_vecx_addr_s {
8338c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
8348c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
8358c2ecf20Sopenharmony_ci		u64 addr                        : 47;
8368c2ecf20Sopenharmony_ci		u64 reserved_1_1                : 1;
8378c2ecf20Sopenharmony_ci		u64 secvec                      : 1;
8388c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
8398c2ecf20Sopenharmony_ci		u64 secvec                      : 1;
8408c2ecf20Sopenharmony_ci		u64 reserved_1_1                : 1;
8418c2ecf20Sopenharmony_ci		u64 addr                        : 47;
8428c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
8438c2ecf20Sopenharmony_ci#endif
8448c2ecf20Sopenharmony_ci	} s;
8458c2ecf20Sopenharmony_ci};
8468c2ecf20Sopenharmony_ci
8478c2ecf20Sopenharmony_cistatic inline u64 ZIP_MSIX_VECX_ADDR(u64 param1)
8488c2ecf20Sopenharmony_ci{
8498c2ecf20Sopenharmony_ci	if (param1 <= 17)
8508c2ecf20Sopenharmony_ci		return 0x0000838000F00000ull + (param1 & 31) * 0x10ull;
8518c2ecf20Sopenharmony_ci	pr_err("ZIP_MSIX_VECX_ADDR: %llu\n", param1);
8528c2ecf20Sopenharmony_ci	return 0;
8538c2ecf20Sopenharmony_ci}
8548c2ecf20Sopenharmony_ci
8558c2ecf20Sopenharmony_ci/**
8568c2ecf20Sopenharmony_ci * union zip_msix_vecx_ctl - Represents the register that is the MSI-X vector
8578c2ecf20Sopenharmony_ci * table, indexed by the ZIP_INT_VEC_E enumeration.
8588c2ecf20Sopenharmony_ci */
8598c2ecf20Sopenharmony_ciunion zip_msix_vecx_ctl {
8608c2ecf20Sopenharmony_ci	u64 u_reg64;
8618c2ecf20Sopenharmony_ci	struct zip_msix_vecx_ctl_s {
8628c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
8638c2ecf20Sopenharmony_ci		u64 reserved_33_63              : 31;
8648c2ecf20Sopenharmony_ci		u64 mask                        : 1;
8658c2ecf20Sopenharmony_ci		u64 reserved_20_31              : 12;
8668c2ecf20Sopenharmony_ci		u64 data                        : 20;
8678c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
8688c2ecf20Sopenharmony_ci		u64 data                        : 20;
8698c2ecf20Sopenharmony_ci		u64 reserved_20_31              : 12;
8708c2ecf20Sopenharmony_ci		u64 mask                        : 1;
8718c2ecf20Sopenharmony_ci		u64 reserved_33_63              : 31;
8728c2ecf20Sopenharmony_ci#endif
8738c2ecf20Sopenharmony_ci	} s;
8748c2ecf20Sopenharmony_ci};
8758c2ecf20Sopenharmony_ci
8768c2ecf20Sopenharmony_cistatic inline u64 ZIP_MSIX_VECX_CTL(u64 param1)
8778c2ecf20Sopenharmony_ci{
8788c2ecf20Sopenharmony_ci	if (param1 <= 17)
8798c2ecf20Sopenharmony_ci		return 0x0000838000F00008ull + (param1 & 31) * 0x10ull;
8808c2ecf20Sopenharmony_ci	pr_err("ZIP_MSIX_VECX_CTL: %llu\n", param1);
8818c2ecf20Sopenharmony_ci	return 0;
8828c2ecf20Sopenharmony_ci}
8838c2ecf20Sopenharmony_ci
8848c2ecf20Sopenharmony_ci/**
8858c2ecf20Sopenharmony_ci * union zip_quex_done - Represents the registers that contain the per-queue
8868c2ecf20Sopenharmony_ci * instruction done count.
8878c2ecf20Sopenharmony_ci */
8888c2ecf20Sopenharmony_ciunion zip_quex_done {
8898c2ecf20Sopenharmony_ci	u64 u_reg64;
8908c2ecf20Sopenharmony_ci	struct zip_quex_done_s {
8918c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
8928c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
8938c2ecf20Sopenharmony_ci		u64 done                        : 20;
8948c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
8958c2ecf20Sopenharmony_ci		u64 done                        : 20;
8968c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
8978c2ecf20Sopenharmony_ci#endif
8988c2ecf20Sopenharmony_ci	} s;
8998c2ecf20Sopenharmony_ci};
9008c2ecf20Sopenharmony_ci
9018c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DONE(u64 param1)
9028c2ecf20Sopenharmony_ci{
9038c2ecf20Sopenharmony_ci	if (param1 <= 7)
9048c2ecf20Sopenharmony_ci		return 0x2000ull + (param1 & 7) * 0x8ull;
9058c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DONE: %llu\n", param1);
9068c2ecf20Sopenharmony_ci	return 0;
9078c2ecf20Sopenharmony_ci}
9088c2ecf20Sopenharmony_ci
9098c2ecf20Sopenharmony_ci/**
9108c2ecf20Sopenharmony_ci * union zip_quex_done_ack - Represents the registers on write to which will
9118c2ecf20Sopenharmony_ci * decrement the per-queue instructiona done count.
9128c2ecf20Sopenharmony_ci */
9138c2ecf20Sopenharmony_ciunion zip_quex_done_ack {
9148c2ecf20Sopenharmony_ci	u64 u_reg64;
9158c2ecf20Sopenharmony_ci	struct zip_quex_done_ack_s {
9168c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
9178c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
9188c2ecf20Sopenharmony_ci		u64 done_ack                    : 20;
9198c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
9208c2ecf20Sopenharmony_ci		u64 done_ack                    : 20;
9218c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
9228c2ecf20Sopenharmony_ci#endif
9238c2ecf20Sopenharmony_ci	} s;
9248c2ecf20Sopenharmony_ci};
9258c2ecf20Sopenharmony_ci
9268c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DONE_ACK(u64 param1)
9278c2ecf20Sopenharmony_ci{
9288c2ecf20Sopenharmony_ci	if (param1 <= 7)
9298c2ecf20Sopenharmony_ci		return 0x2200ull + (param1 & 7) * 0x8ull;
9308c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DONE_ACK: %llu\n", param1);
9318c2ecf20Sopenharmony_ci	return 0;
9328c2ecf20Sopenharmony_ci}
9338c2ecf20Sopenharmony_ci
9348c2ecf20Sopenharmony_ci/**
9358c2ecf20Sopenharmony_ci * union zip_quex_done_ena_w1c - Represents the register which when written
9368c2ecf20Sopenharmony_ci * 1 to will disable the DONEINT interrupt for the queue.
9378c2ecf20Sopenharmony_ci */
9388c2ecf20Sopenharmony_ciunion zip_quex_done_ena_w1c {
9398c2ecf20Sopenharmony_ci	u64 u_reg64;
9408c2ecf20Sopenharmony_ci	struct zip_quex_done_ena_w1c_s {
9418c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
9428c2ecf20Sopenharmony_ci		u64 reserved_1_63               : 63;
9438c2ecf20Sopenharmony_ci		u64 done_ena                    : 1;
9448c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
9458c2ecf20Sopenharmony_ci		u64 done_ena                    : 1;
9468c2ecf20Sopenharmony_ci		u64 reserved_1_63               : 63;
9478c2ecf20Sopenharmony_ci#endif
9488c2ecf20Sopenharmony_ci	} s;
9498c2ecf20Sopenharmony_ci};
9508c2ecf20Sopenharmony_ci
9518c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DONE_ENA_W1C(u64 param1)
9528c2ecf20Sopenharmony_ci{
9538c2ecf20Sopenharmony_ci	if (param1 <= 7)
9548c2ecf20Sopenharmony_ci		return 0x2600ull + (param1 & 7) * 0x8ull;
9558c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DONE_ENA_W1C: %llu\n", param1);
9568c2ecf20Sopenharmony_ci	return 0;
9578c2ecf20Sopenharmony_ci}
9588c2ecf20Sopenharmony_ci
9598c2ecf20Sopenharmony_ci/**
9608c2ecf20Sopenharmony_ci * union zip_quex_done_ena_w1s - Represents the register that when written 1 to
9618c2ecf20Sopenharmony_ci * will enable the DONEINT interrupt for the queue.
9628c2ecf20Sopenharmony_ci */
9638c2ecf20Sopenharmony_ciunion zip_quex_done_ena_w1s {
9648c2ecf20Sopenharmony_ci	u64 u_reg64;
9658c2ecf20Sopenharmony_ci	struct zip_quex_done_ena_w1s_s {
9668c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
9678c2ecf20Sopenharmony_ci		u64 reserved_1_63               : 63;
9688c2ecf20Sopenharmony_ci		u64 done_ena                    : 1;
9698c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
9708c2ecf20Sopenharmony_ci		u64 done_ena                    : 1;
9718c2ecf20Sopenharmony_ci		u64 reserved_1_63               : 63;
9728c2ecf20Sopenharmony_ci#endif
9738c2ecf20Sopenharmony_ci	} s;
9748c2ecf20Sopenharmony_ci};
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DONE_ENA_W1S(u64 param1)
9778c2ecf20Sopenharmony_ci{
9788c2ecf20Sopenharmony_ci	if (param1 <= 7)
9798c2ecf20Sopenharmony_ci		return 0x2400ull + (param1 & 7) * 0x8ull;
9808c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DONE_ENA_W1S: %llu\n", param1);
9818c2ecf20Sopenharmony_ci	return 0;
9828c2ecf20Sopenharmony_ci}
9838c2ecf20Sopenharmony_ci
9848c2ecf20Sopenharmony_ci/**
9858c2ecf20Sopenharmony_ci * union zip_quex_done_wait - Represents the register that specifies the per
9868c2ecf20Sopenharmony_ci * queue interrupt coalescing settings.
9878c2ecf20Sopenharmony_ci */
9888c2ecf20Sopenharmony_ciunion zip_quex_done_wait {
9898c2ecf20Sopenharmony_ci	u64 u_reg64;
9908c2ecf20Sopenharmony_ci	struct zip_quex_done_wait_s {
9918c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
9928c2ecf20Sopenharmony_ci		u64 reserved_48_63              : 16;
9938c2ecf20Sopenharmony_ci		u64 time_wait                   : 16;
9948c2ecf20Sopenharmony_ci		u64 reserved_20_31              : 12;
9958c2ecf20Sopenharmony_ci		u64 num_wait                    : 20;
9968c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
9978c2ecf20Sopenharmony_ci		u64 num_wait                    : 20;
9988c2ecf20Sopenharmony_ci		u64 reserved_20_31              : 12;
9998c2ecf20Sopenharmony_ci		u64 time_wait                   : 16;
10008c2ecf20Sopenharmony_ci		u64 reserved_48_63              : 16;
10018c2ecf20Sopenharmony_ci#endif
10028c2ecf20Sopenharmony_ci	} s;
10038c2ecf20Sopenharmony_ci};
10048c2ecf20Sopenharmony_ci
10058c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DONE_WAIT(u64 param1)
10068c2ecf20Sopenharmony_ci{
10078c2ecf20Sopenharmony_ci	if (param1 <= 7)
10088c2ecf20Sopenharmony_ci		return 0x2800ull + (param1 & 7) * 0x8ull;
10098c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DONE_WAIT: %llu\n", param1);
10108c2ecf20Sopenharmony_ci	return 0;
10118c2ecf20Sopenharmony_ci}
10128c2ecf20Sopenharmony_ci
10138c2ecf20Sopenharmony_ci/**
10148c2ecf20Sopenharmony_ci * union zip_quex_doorbell - Represents doorbell registers for the ZIP
10158c2ecf20Sopenharmony_ci * instruction queues.
10168c2ecf20Sopenharmony_ci */
10178c2ecf20Sopenharmony_ciunion zip_quex_doorbell {
10188c2ecf20Sopenharmony_ci	u64 u_reg64;
10198c2ecf20Sopenharmony_ci	struct zip_quex_doorbell_s {
10208c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
10218c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
10228c2ecf20Sopenharmony_ci		u64 dbell_cnt                   : 20;
10238c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
10248c2ecf20Sopenharmony_ci		u64 dbell_cnt                   : 20;
10258c2ecf20Sopenharmony_ci		u64 reserved_20_63              : 44;
10268c2ecf20Sopenharmony_ci#endif
10278c2ecf20Sopenharmony_ci	} s;
10288c2ecf20Sopenharmony_ci};
10298c2ecf20Sopenharmony_ci
10308c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_DOORBELL(u64 param1)
10318c2ecf20Sopenharmony_ci{
10328c2ecf20Sopenharmony_ci	if (param1 <= 7)
10338c2ecf20Sopenharmony_ci		return 0x4000ull + (param1 & 7) * 0x8ull;
10348c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_DOORBELL: %llu\n", param1);
10358c2ecf20Sopenharmony_ci	return 0;
10368c2ecf20Sopenharmony_ci}
10378c2ecf20Sopenharmony_ci
10388c2ecf20Sopenharmony_ciunion zip_quex_err_ena_w1c {
10398c2ecf20Sopenharmony_ci	u64 u_reg64;
10408c2ecf20Sopenharmony_ci	struct zip_quex_err_ena_w1c_s {
10418c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
10428c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
10438c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
10448c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
10458c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
10468c2ecf20Sopenharmony_ci		u64 irde                        : 1;
10478c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
10488c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
10498c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
10508c2ecf20Sopenharmony_ci		u64 irde                        : 1;
10518c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
10528c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
10538c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
10548c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
10558c2ecf20Sopenharmony_ci#endif
10568c2ecf20Sopenharmony_ci	} s;
10578c2ecf20Sopenharmony_ci};
10588c2ecf20Sopenharmony_ci
10598c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_ERR_ENA_W1C(u64 param1)
10608c2ecf20Sopenharmony_ci{
10618c2ecf20Sopenharmony_ci	if (param1 <= 7)
10628c2ecf20Sopenharmony_ci		return 0x3600ull + (param1 & 7) * 0x8ull;
10638c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_ERR_ENA_W1C: %llu\n", param1);
10648c2ecf20Sopenharmony_ci	return 0;
10658c2ecf20Sopenharmony_ci}
10668c2ecf20Sopenharmony_ci
10678c2ecf20Sopenharmony_ciunion zip_quex_err_ena_w1s {
10688c2ecf20Sopenharmony_ci	u64 u_reg64;
10698c2ecf20Sopenharmony_ci	struct zip_quex_err_ena_w1s_s {
10708c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
10718c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
10728c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
10738c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
10748c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
10758c2ecf20Sopenharmony_ci		u64 irde                        : 1;
10768c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
10778c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
10788c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
10798c2ecf20Sopenharmony_ci		u64 irde                        : 1;
10808c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
10818c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
10828c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
10838c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
10848c2ecf20Sopenharmony_ci#endif
10858c2ecf20Sopenharmony_ci	} s;
10868c2ecf20Sopenharmony_ci};
10878c2ecf20Sopenharmony_ci
10888c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_ERR_ENA_W1S(u64 param1)
10898c2ecf20Sopenharmony_ci{
10908c2ecf20Sopenharmony_ci	if (param1 <= 7)
10918c2ecf20Sopenharmony_ci		return 0x3400ull + (param1 & 7) * 0x8ull;
10928c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_ERR_ENA_W1S: %llu\n", param1);
10938c2ecf20Sopenharmony_ci	return 0;
10948c2ecf20Sopenharmony_ci}
10958c2ecf20Sopenharmony_ci
10968c2ecf20Sopenharmony_ci/**
10978c2ecf20Sopenharmony_ci * union zip_quex_err_int - Represents registers that contain the per-queue
10988c2ecf20Sopenharmony_ci * error interrupts.
10998c2ecf20Sopenharmony_ci */
11008c2ecf20Sopenharmony_ciunion zip_quex_err_int {
11018c2ecf20Sopenharmony_ci	u64 u_reg64;
11028c2ecf20Sopenharmony_ci	struct zip_quex_err_int_s {
11038c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
11048c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
11058c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
11068c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
11078c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
11088c2ecf20Sopenharmony_ci		u64 irde                        : 1;
11098c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
11108c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
11118c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
11128c2ecf20Sopenharmony_ci		u64 irde                        : 1;
11138c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
11148c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
11158c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
11168c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
11178c2ecf20Sopenharmony_ci#endif
11188c2ecf20Sopenharmony_ci	} s;
11198c2ecf20Sopenharmony_ci};
11208c2ecf20Sopenharmony_ci
11218c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_ERR_INT(u64 param1)
11228c2ecf20Sopenharmony_ci{
11238c2ecf20Sopenharmony_ci	if (param1 <= 7)
11248c2ecf20Sopenharmony_ci		return 0x3000ull + (param1 & 7) * 0x8ull;
11258c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_ERR_INT: %llu\n", param1);
11268c2ecf20Sopenharmony_ci	return 0;
11278c2ecf20Sopenharmony_ci}
11288c2ecf20Sopenharmony_ci
11298c2ecf20Sopenharmony_ci/* NCB - zip_que#_err_int_w1s */
11308c2ecf20Sopenharmony_ciunion zip_quex_err_int_w1s {
11318c2ecf20Sopenharmony_ci	u64 u_reg64;
11328c2ecf20Sopenharmony_ci	struct zip_quex_err_int_w1s_s {
11338c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
11348c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
11358c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
11368c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
11378c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
11388c2ecf20Sopenharmony_ci		u64 irde                        : 1;
11398c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
11408c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
11418c2ecf20Sopenharmony_ci		u64 dovf                        : 1;
11428c2ecf20Sopenharmony_ci		u64 irde                        : 1;
11438c2ecf20Sopenharmony_ci		u64 nrrp                        : 1;
11448c2ecf20Sopenharmony_ci		u64 nwrp                        : 1;
11458c2ecf20Sopenharmony_ci		u64 mdbe                        : 1;
11468c2ecf20Sopenharmony_ci		u64 reserved_5_63               : 59;
11478c2ecf20Sopenharmony_ci#endif
11488c2ecf20Sopenharmony_ci	} s;
11498c2ecf20Sopenharmony_ci};
11508c2ecf20Sopenharmony_ci
11518c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_ERR_INT_W1S(u64 param1)
11528c2ecf20Sopenharmony_ci{
11538c2ecf20Sopenharmony_ci	if (param1 <= 7)
11548c2ecf20Sopenharmony_ci		return 0x3200ull + (param1 & 7) * 0x8ull;
11558c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_ERR_INT_W1S: %llu\n", param1);
11568c2ecf20Sopenharmony_ci	return 0;
11578c2ecf20Sopenharmony_ci}
11588c2ecf20Sopenharmony_ci
11598c2ecf20Sopenharmony_ci/**
11608c2ecf20Sopenharmony_ci * union zip_quex_gcfg - Represents the registers that reflect status of the
11618c2ecf20Sopenharmony_ci * zip instruction queues,debug use only.
11628c2ecf20Sopenharmony_ci */
11638c2ecf20Sopenharmony_ciunion zip_quex_gcfg {
11648c2ecf20Sopenharmony_ci	u64 u_reg64;
11658c2ecf20Sopenharmony_ci	struct zip_quex_gcfg_s {
11668c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
11678c2ecf20Sopenharmony_ci		u64 reserved_4_63               : 60;
11688c2ecf20Sopenharmony_ci		u64 iqb_ldwb                    : 1;
11698c2ecf20Sopenharmony_ci		u64 cbw_sty                     : 1;
11708c2ecf20Sopenharmony_ci		u64 l2ld_cmd                    : 2;
11718c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
11728c2ecf20Sopenharmony_ci		u64 l2ld_cmd                    : 2;
11738c2ecf20Sopenharmony_ci		u64 cbw_sty                     : 1;
11748c2ecf20Sopenharmony_ci		u64 iqb_ldwb                    : 1;
11758c2ecf20Sopenharmony_ci		u64 reserved_4_63               : 60;
11768c2ecf20Sopenharmony_ci#endif
11778c2ecf20Sopenharmony_ci	} s;
11788c2ecf20Sopenharmony_ci};
11798c2ecf20Sopenharmony_ci
11808c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_GCFG(u64 param1)
11818c2ecf20Sopenharmony_ci{
11828c2ecf20Sopenharmony_ci	if (param1 <= 7)
11838c2ecf20Sopenharmony_ci		return 0x1A00ull + (param1 & 7) * 0x8ull;
11848c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_GCFG: %llu\n", param1);
11858c2ecf20Sopenharmony_ci	return 0;
11868c2ecf20Sopenharmony_ci}
11878c2ecf20Sopenharmony_ci
11888c2ecf20Sopenharmony_ci/**
11898c2ecf20Sopenharmony_ci * union zip_quex_map - Represents the registers that control how each
11908c2ecf20Sopenharmony_ci * instruction queue maps to zip cores.
11918c2ecf20Sopenharmony_ci */
11928c2ecf20Sopenharmony_ciunion zip_quex_map {
11938c2ecf20Sopenharmony_ci	u64 u_reg64;
11948c2ecf20Sopenharmony_ci	struct zip_quex_map_s {
11958c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
11968c2ecf20Sopenharmony_ci		u64 reserved_2_63               : 62;
11978c2ecf20Sopenharmony_ci		u64 zce                         : 2;
11988c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
11998c2ecf20Sopenharmony_ci		u64 zce                         : 2;
12008c2ecf20Sopenharmony_ci		u64 reserved_2_63               : 62;
12018c2ecf20Sopenharmony_ci#endif
12028c2ecf20Sopenharmony_ci	} s;
12038c2ecf20Sopenharmony_ci};
12048c2ecf20Sopenharmony_ci
12058c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_MAP(u64 param1)
12068c2ecf20Sopenharmony_ci{
12078c2ecf20Sopenharmony_ci	if (param1 <= 7)
12088c2ecf20Sopenharmony_ci		return 0x1400ull + (param1 & 7) * 0x8ull;
12098c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_MAP: %llu\n", param1);
12108c2ecf20Sopenharmony_ci	return 0;
12118c2ecf20Sopenharmony_ci}
12128c2ecf20Sopenharmony_ci
12138c2ecf20Sopenharmony_ci/**
12148c2ecf20Sopenharmony_ci * union zip_quex_sbuf_addr - Represents the registers that set the buffer
12158c2ecf20Sopenharmony_ci * parameters for the instruction queues.
12168c2ecf20Sopenharmony_ci *
12178c2ecf20Sopenharmony_ci * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
12188c2ecf20Sopenharmony_ci * this register to effectively reset the command buffer state machine.
12198c2ecf20Sopenharmony_ci * These registers must be programmed after SW programs the corresponding
12208c2ecf20Sopenharmony_ci * ZIP_QUE(0..7)_SBUF_CTL.
12218c2ecf20Sopenharmony_ci */
12228c2ecf20Sopenharmony_ciunion zip_quex_sbuf_addr {
12238c2ecf20Sopenharmony_ci	u64 u_reg64;
12248c2ecf20Sopenharmony_ci	struct zip_quex_sbuf_addr_s {
12258c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
12268c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
12278c2ecf20Sopenharmony_ci		u64 ptr                         : 42;
12288c2ecf20Sopenharmony_ci		u64 off                         : 7;
12298c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
12308c2ecf20Sopenharmony_ci		u64 off                         : 7;
12318c2ecf20Sopenharmony_ci		u64 ptr                         : 42;
12328c2ecf20Sopenharmony_ci		u64 reserved_49_63              : 15;
12338c2ecf20Sopenharmony_ci#endif
12348c2ecf20Sopenharmony_ci	} s;
12358c2ecf20Sopenharmony_ci};
12368c2ecf20Sopenharmony_ci
12378c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_SBUF_ADDR(u64 param1)
12388c2ecf20Sopenharmony_ci{
12398c2ecf20Sopenharmony_ci	if (param1 <= 7)
12408c2ecf20Sopenharmony_ci		return 0x1000ull + (param1 & 7) * 0x8ull;
12418c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_SBUF_ADDR: %llu\n", param1);
12428c2ecf20Sopenharmony_ci	return 0;
12438c2ecf20Sopenharmony_ci}
12448c2ecf20Sopenharmony_ci
12458c2ecf20Sopenharmony_ci/**
12468c2ecf20Sopenharmony_ci * union zip_quex_sbuf_ctl - Represents the registers that set the buffer
12478c2ecf20Sopenharmony_ci * parameters for the instruction queues.
12488c2ecf20Sopenharmony_ci *
12498c2ecf20Sopenharmony_ci * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
12508c2ecf20Sopenharmony_ci * this register to effectively reset the command buffer state machine.
12518c2ecf20Sopenharmony_ci * These registers must be programmed before SW programs the corresponding
12528c2ecf20Sopenharmony_ci * ZIP_QUE(0..7)_SBUF_ADDR.
12538c2ecf20Sopenharmony_ci */
12548c2ecf20Sopenharmony_ciunion zip_quex_sbuf_ctl {
12558c2ecf20Sopenharmony_ci	u64 u_reg64;
12568c2ecf20Sopenharmony_ci	struct zip_quex_sbuf_ctl_s {
12578c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
12588c2ecf20Sopenharmony_ci		u64 reserved_45_63              : 19;
12598c2ecf20Sopenharmony_ci		u64 size                        : 13;
12608c2ecf20Sopenharmony_ci		u64 inst_be                     : 1;
12618c2ecf20Sopenharmony_ci		u64 reserved_24_30              : 7;
12628c2ecf20Sopenharmony_ci		u64 stream_id                   : 8;
12638c2ecf20Sopenharmony_ci		u64 reserved_12_15              : 4;
12648c2ecf20Sopenharmony_ci		u64 aura                        : 12;
12658c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
12668c2ecf20Sopenharmony_ci		u64 aura                        : 12;
12678c2ecf20Sopenharmony_ci		u64 reserved_12_15              : 4;
12688c2ecf20Sopenharmony_ci		u64 stream_id                   : 8;
12698c2ecf20Sopenharmony_ci		u64 reserved_24_30              : 7;
12708c2ecf20Sopenharmony_ci		u64 inst_be                     : 1;
12718c2ecf20Sopenharmony_ci		u64 size                        : 13;
12728c2ecf20Sopenharmony_ci		u64 reserved_45_63              : 19;
12738c2ecf20Sopenharmony_ci#endif
12748c2ecf20Sopenharmony_ci	} s;
12758c2ecf20Sopenharmony_ci};
12768c2ecf20Sopenharmony_ci
12778c2ecf20Sopenharmony_cistatic inline u64 ZIP_QUEX_SBUF_CTL(u64 param1)
12788c2ecf20Sopenharmony_ci{
12798c2ecf20Sopenharmony_ci	if (param1 <= 7)
12808c2ecf20Sopenharmony_ci		return 0x1200ull + (param1 & 7) * 0x8ull;
12818c2ecf20Sopenharmony_ci	pr_err("ZIP_QUEX_SBUF_CTL: %llu\n", param1);
12828c2ecf20Sopenharmony_ci	return 0;
12838c2ecf20Sopenharmony_ci}
12848c2ecf20Sopenharmony_ci
12858c2ecf20Sopenharmony_ci/**
12868c2ecf20Sopenharmony_ci * union zip_que_ena - Represents queue enable register
12878c2ecf20Sopenharmony_ci *
12888c2ecf20Sopenharmony_ci * If a queue is disabled, ZIP_CTL stops fetching instructions from the queue.
12898c2ecf20Sopenharmony_ci */
12908c2ecf20Sopenharmony_ciunion zip_que_ena {
12918c2ecf20Sopenharmony_ci	u64 u_reg64;
12928c2ecf20Sopenharmony_ci	struct zip_que_ena_s {
12938c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
12948c2ecf20Sopenharmony_ci		u64 reserved_8_63               : 56;
12958c2ecf20Sopenharmony_ci		u64 ena                         : 8;
12968c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
12978c2ecf20Sopenharmony_ci		u64 ena                         : 8;
12988c2ecf20Sopenharmony_ci		u64 reserved_8_63               : 56;
12998c2ecf20Sopenharmony_ci#endif
13008c2ecf20Sopenharmony_ci	} s;
13018c2ecf20Sopenharmony_ci};
13028c2ecf20Sopenharmony_ci
13038c2ecf20Sopenharmony_ci#define ZIP_QUE_ENA 0x0500ull
13048c2ecf20Sopenharmony_ci
13058c2ecf20Sopenharmony_ci/**
13068c2ecf20Sopenharmony_ci * union zip_que_pri - Represents the register that defines the priority
13078c2ecf20Sopenharmony_ci * between instruction queues.
13088c2ecf20Sopenharmony_ci */
13098c2ecf20Sopenharmony_ciunion zip_que_pri {
13108c2ecf20Sopenharmony_ci	u64 u_reg64;
13118c2ecf20Sopenharmony_ci	struct zip_que_pri_s {
13128c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
13138c2ecf20Sopenharmony_ci		u64 reserved_8_63               : 56;
13148c2ecf20Sopenharmony_ci		u64 pri                         : 8;
13158c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
13168c2ecf20Sopenharmony_ci		u64 pri                         : 8;
13178c2ecf20Sopenharmony_ci		u64 reserved_8_63               : 56;
13188c2ecf20Sopenharmony_ci#endif
13198c2ecf20Sopenharmony_ci	} s;
13208c2ecf20Sopenharmony_ci};
13218c2ecf20Sopenharmony_ci
13228c2ecf20Sopenharmony_ci#define ZIP_QUE_PRI 0x0508ull
13238c2ecf20Sopenharmony_ci
13248c2ecf20Sopenharmony_ci/**
13258c2ecf20Sopenharmony_ci * union zip_throttle - Represents the register that controls the maximum
13268c2ecf20Sopenharmony_ci * number of in-flight X2I data fetch transactions.
13278c2ecf20Sopenharmony_ci *
13288c2ecf20Sopenharmony_ci * Writing 0 to this register causes the ZIP module to temporarily suspend NCB
13298c2ecf20Sopenharmony_ci * accesses; it is not recommended for normal operation, but may be useful for
13308c2ecf20Sopenharmony_ci * diagnostics.
13318c2ecf20Sopenharmony_ci */
13328c2ecf20Sopenharmony_ciunion zip_throttle {
13338c2ecf20Sopenharmony_ci	u64 u_reg64;
13348c2ecf20Sopenharmony_ci	struct zip_throttle_s {
13358c2ecf20Sopenharmony_ci#if defined(__BIG_ENDIAN_BITFIELD)
13368c2ecf20Sopenharmony_ci		u64 reserved_6_63               : 58;
13378c2ecf20Sopenharmony_ci		u64 ld_infl                     : 6;
13388c2ecf20Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD)
13398c2ecf20Sopenharmony_ci		u64 ld_infl                     : 6;
13408c2ecf20Sopenharmony_ci		u64 reserved_6_63               : 58;
13418c2ecf20Sopenharmony_ci#endif
13428c2ecf20Sopenharmony_ci	} s;
13438c2ecf20Sopenharmony_ci};
13448c2ecf20Sopenharmony_ci
13458c2ecf20Sopenharmony_ci#define ZIP_THROTTLE 0x0010ull
13468c2ecf20Sopenharmony_ci
13478c2ecf20Sopenharmony_ci#endif /* _CSRS_ZIP__ */
1348