cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

zip_regs.h (38612B)


      1/***********************license start************************************
      2 * Copyright (c) 2003-2017 Cavium, Inc.
      3 * All rights reserved.
      4 *
      5 * License: one of 'Cavium License' or 'GNU General Public License Version 2'
      6 *
      7 * This file is provided under the terms of the Cavium License (see below)
      8 * or under the terms of GNU General Public License, Version 2, as
      9 * published by the Free Software Foundation. When using or redistributing
     10 * this file, you may do so under either license.
     11 *
     12 * Cavium License:  Redistribution and use in source and binary forms, with
     13 * or without modification, are permitted provided that the following
     14 * conditions are met:
     15 *
     16 *  * Redistributions of source code must retain the above copyright
     17 *    notice, this list of conditions and the following disclaimer.
     18 *
     19 *  * Redistributions in binary form must reproduce the above
     20 *    copyright notice, this list of conditions and the following
     21 *    disclaimer in the documentation and/or other materials provided
     22 *    with the distribution.
     23 *
     24 *  * Neither the name of Cavium Inc. nor the names of its contributors may be
     25 *    used to endorse or promote products derived from this software without
     26 *    specific prior written permission.
     27 *
     28 * This Software, including technical data, may be subject to U.S. export
     29 * control laws, including the U.S. Export Administration Act and its
     30 * associated regulations, and may be subject to export or import
     31 * regulations in other countries.
     32 *
     33 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
     34 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS
     35 * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
     36 * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY
     37 * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT
     38 * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY)
     39 * WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A
     40 * PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET
     41 * ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE
     42 * ENTIRE  RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES
     43 * WITH YOU.
     44 ***********************license end**************************************/
     45
     46#ifndef __ZIP_REGS_H__
     47#define __ZIP_REGS_H__
     48
     49/*
     50 * Configuration and status register (CSR) address and type definitions for
     51 * Cavium ZIP.
     52 */
     53
     54#include <linux/kern_levels.h>
     55
     56/* ZIP invocation result completion status codes */
     57#define ZIP_CMD_NOTDONE        0x0
     58
     59/* Successful completion. */
     60#define ZIP_CMD_SUCCESS        0x1
     61
     62/* Output truncated */
     63#define ZIP_CMD_DTRUNC         0x2
     64
     65/* Dynamic Stop */
     66#define ZIP_CMD_DYNAMIC_STOP   0x3
     67
     68/* Uncompress ran out of input data when IWORD0[EF] was set */
     69#define ZIP_CMD_ITRUNC         0x4
     70
     71/* Uncompress found the reserved block type 3 */
     72#define ZIP_CMD_RBLOCK         0x5
     73
     74/*
     75 * Uncompress found LEN != ZIP_CMD_NLEN in an uncompressed block in the input.
     76 */
     77#define ZIP_CMD_NLEN           0x6
     78
     79/* Uncompress found a bad code in the main Huffman codes. */
     80#define ZIP_CMD_BADCODE        0x7
     81
     82/* Uncompress found a bad code in the 19 Huffman codes encoding lengths. */
     83#define ZIP_CMD_BADCODE2       0x8
     84
     85/* Compress found a zero-length input. */
     86#define ZIP_CMD_ZERO_LEN       0x9
     87
     88/* The compress or decompress encountered an internal parity error. */
     89#define ZIP_CMD_PARITY         0xA
     90
     91/*
     92 * Uncompress found a string identifier that precedes the uncompressed data and
     93 * decompression history.
     94 */
     95#define ZIP_CMD_FATAL          0xB
     96
     97/**
     98 * enum zip_int_vec_e - ZIP MSI-X Vector Enumeration, enumerates the MSI-X
     99 * interrupt vectors.
    100 */
    101enum zip_int_vec_e {
    102	ZIP_INT_VEC_E_ECCE = 0x10,
    103	ZIP_INT_VEC_E_FIFE = 0x11,
    104	ZIP_INT_VEC_E_QUE0_DONE = 0x0,
    105	ZIP_INT_VEC_E_QUE0_ERR = 0x8,
    106	ZIP_INT_VEC_E_QUE1_DONE = 0x1,
    107	ZIP_INT_VEC_E_QUE1_ERR = 0x9,
    108	ZIP_INT_VEC_E_QUE2_DONE = 0x2,
    109	ZIP_INT_VEC_E_QUE2_ERR = 0xa,
    110	ZIP_INT_VEC_E_QUE3_DONE = 0x3,
    111	ZIP_INT_VEC_E_QUE3_ERR = 0xb,
    112	ZIP_INT_VEC_E_QUE4_DONE = 0x4,
    113	ZIP_INT_VEC_E_QUE4_ERR = 0xc,
    114	ZIP_INT_VEC_E_QUE5_DONE = 0x5,
    115	ZIP_INT_VEC_E_QUE5_ERR = 0xd,
    116	ZIP_INT_VEC_E_QUE6_DONE = 0x6,
    117	ZIP_INT_VEC_E_QUE6_ERR = 0xe,
    118	ZIP_INT_VEC_E_QUE7_DONE = 0x7,
    119	ZIP_INT_VEC_E_QUE7_ERR = 0xf,
    120	ZIP_INT_VEC_E_ENUM_LAST = 0x12,
    121};
    122
    123/**
    124 * union zip_zptr_addr_s - ZIP Generic Pointer Structure for ADDR.
    125 *
    126 * It is the generic format of pointers in ZIP_INST_S.
    127 */
    128union zip_zptr_addr_s {
    129	u64 u_reg64;
    130	struct {
    131#if defined(__BIG_ENDIAN_BITFIELD)
    132		u64 reserved_49_63              : 15;
    133		u64 addr                        : 49;
    134#elif defined(__LITTLE_ENDIAN_BITFIELD)
    135		u64 addr                        : 49;
    136		u64 reserved_49_63              : 15;
    137#endif
    138	} s;
    139
    140};
    141
    142/**
    143 * union zip_zptr_ctl_s - ZIP Generic Pointer Structure for CTL.
    144 *
    145 * It is the generic format of pointers in ZIP_INST_S.
    146 */
    147union zip_zptr_ctl_s {
    148	u64 u_reg64;
    149	struct {
    150#if defined(__BIG_ENDIAN_BITFIELD)
    151		u64 reserved_112_127            : 16;
    152		u64 length                      : 16;
    153		u64 reserved_67_95              : 29;
    154		u64 fw                          : 1;
    155		u64 nc                          : 1;
    156		u64 data_be                     : 1;
    157#elif defined(__LITTLE_ENDIAN_BITFIELD)
    158		u64 data_be                     : 1;
    159		u64 nc                          : 1;
    160		u64 fw                          : 1;
    161		u64 reserved_67_95              : 29;
    162		u64 length                      : 16;
    163		u64 reserved_112_127            : 16;
    164#endif
    165	} s;
    166};
    167
    168/**
    169 * union zip_inst_s - ZIP Instruction Structure.
    170 * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 within
    171 * the structure).
    172 */
    173union zip_inst_s {
    174	u64 u_reg64[16];
    175	struct {
    176#if defined(__BIG_ENDIAN_BITFIELD)
    177		u64 doneint                     : 1;
    178		u64 reserved_56_62              : 7;
    179		u64 totaloutputlength           : 24;
    180		u64 reserved_27_31              : 5;
    181		u64 exn                         : 3;
    182		u64 reserved_23_23              : 1;
    183		u64 exbits                      : 7;
    184		u64 reserved_12_15              : 4;
    185		u64 sf                          : 1;
    186		u64 ss                          : 2;
    187		u64 cc                          : 2;
    188		u64 ef                          : 1;
    189		u64 bf                          : 1;
    190		u64 ce                          : 1;
    191		u64 reserved_3_3                : 1;
    192		u64 ds                          : 1;
    193		u64 dg                          : 1;
    194		u64 hg                          : 1;
    195#elif defined(__LITTLE_ENDIAN_BITFIELD)
    196		u64 hg                          : 1;
    197		u64 dg                          : 1;
    198		u64 ds                          : 1;
    199		u64 reserved_3_3                : 1;
    200		u64 ce                          : 1;
    201		u64 bf                          : 1;
    202		u64 ef                          : 1;
    203		u64 cc                          : 2;
    204		u64 ss                          : 2;
    205		u64 sf                          : 1;
    206		u64 reserved_12_15              : 4;
    207		u64 exbits                      : 7;
    208		u64 reserved_23_23              : 1;
    209		u64 exn                         : 3;
    210		u64 reserved_27_31              : 5;
    211		u64 totaloutputlength           : 24;
    212		u64 reserved_56_62              : 7;
    213		u64 doneint                     : 1;
    214#endif
    215#if defined(__BIG_ENDIAN_BITFIELD)
    216		u64 historylength               : 16;
    217		u64 reserved_96_111             : 16;
    218		u64 adlercrc32                  : 32;
    219#elif defined(__LITTLE_ENDIAN_BITFIELD)
    220		u64 adlercrc32                  : 32;
    221		u64 reserved_96_111             : 16;
    222		u64 historylength               : 16;
    223#endif
    224		union zip_zptr_addr_s ctx_ptr_addr;
    225		union zip_zptr_ctl_s ctx_ptr_ctl;
    226		union zip_zptr_addr_s his_ptr_addr;
    227		union zip_zptr_ctl_s his_ptr_ctl;
    228		union zip_zptr_addr_s inp_ptr_addr;
    229		union zip_zptr_ctl_s inp_ptr_ctl;
    230		union zip_zptr_addr_s out_ptr_addr;
    231		union zip_zptr_ctl_s out_ptr_ctl;
    232		union zip_zptr_addr_s res_ptr_addr;
    233		union zip_zptr_ctl_s res_ptr_ctl;
    234#if defined(__BIG_ENDIAN_BITFIELD)
    235		u64 reserved_817_831            : 15;
    236		u64 wq_ptr                      : 49;
    237#elif defined(__LITTLE_ENDIAN_BITFIELD)
    238		u64 wq_ptr                      : 49;
    239		u64 reserved_817_831            : 15;
    240#endif
    241#if defined(__BIG_ENDIAN_BITFIELD)
    242		u64 reserved_882_895            : 14;
    243		u64 tt                          : 2;
    244		u64 reserved_874_879            : 6;
    245		u64 grp                         : 10;
    246		u64 tag                         : 32;
    247#elif defined(__LITTLE_ENDIAN_BITFIELD)
    248		u64 tag                         : 32;
    249		u64 grp                         : 10;
    250		u64 reserved_874_879            : 6;
    251		u64 tt                          : 2;
    252		u64 reserved_882_895            : 14;
    253#endif
    254#if defined(__BIG_ENDIAN_BITFIELD)
    255		u64 reserved_896_959            : 64;
    256#elif defined(__LITTLE_ENDIAN_BITFIELD)
    257		u64 reserved_896_959            : 64;
    258#endif
    259#if defined(__BIG_ENDIAN_BITFIELD)
    260		u64 reserved_960_1023           : 64;
    261#elif defined(__LITTLE_ENDIAN_BITFIELD)
    262		u64 reserved_960_1023           : 64;
    263#endif
    264	} s;
    265};
    266
    267/**
    268 * union zip_nptr_s - ZIP Instruction Next-Chunk-Buffer Pointer (NPTR)
    269 * Structure
    270 *
    271 * ZIP_NPTR structure is used to chain all the zip instruction buffers
    272 * together. ZIP instruction buffers are managed (allocated and released) by
    273 * the software.
    274 */
    275union zip_nptr_s {
    276	u64 u_reg64;
    277	struct {
    278#if defined(__BIG_ENDIAN_BITFIELD)
    279		u64 reserved_49_63              : 15;
    280		u64 addr                        : 49;
    281#elif defined(__LITTLE_ENDIAN_BITFIELD)
    282		u64 addr                        : 49;
    283		u64 reserved_49_63              : 15;
    284#endif
    285	} s;
    286};
    287
    288/**
    289 * union zip_zptr_s - ZIP Generic Pointer Structure.
    290 *
    291 * It is the generic format of pointers in ZIP_INST_S.
    292 */
    293union zip_zptr_s {
    294	u64 u_reg64[2];
    295	struct {
    296#if defined(__BIG_ENDIAN_BITFIELD)
    297		u64 reserved_49_63              : 15;
    298		u64 addr                        : 49;
    299#elif defined(__LITTLE_ENDIAN_BITFIELD)
    300		u64 addr                        : 49;
    301		u64 reserved_49_63              : 15;
    302#endif
    303#if defined(__BIG_ENDIAN_BITFIELD)
    304		u64 reserved_112_127            : 16;
    305		u64 length                      : 16;
    306		u64 reserved_67_95              : 29;
    307		u64 fw                          : 1;
    308		u64 nc                          : 1;
    309		u64 data_be                     : 1;
    310#elif defined(__LITTLE_ENDIAN_BITFIELD)
    311		u64 data_be                     : 1;
    312		u64 nc                          : 1;
    313		u64 fw                          : 1;
    314		u64 reserved_67_95              : 29;
    315		u64 length                      : 16;
    316		u64 reserved_112_127            : 16;
    317#endif
    318	} s;
    319};
    320
    321/**
    322 * union zip_zres_s - ZIP Result Structure
    323 *
    324 * The ZIP coprocessor writes the result structure after it completes the
    325 * invocation. The result structure is exactly 24 bytes, and each invocation of
    326 * the ZIP coprocessor produces exactly one result structure.
    327 */
    328union zip_zres_s {
    329	u64 u_reg64[3];
    330	struct {
    331#if defined(__BIG_ENDIAN_BITFIELD)
    332		u64 crc32                       : 32;
    333		u64 adler32                     : 32;
    334#elif defined(__LITTLE_ENDIAN_BITFIELD)
    335		u64 adler32                     : 32;
    336		u64 crc32                       : 32;
    337#endif
    338#if defined(__BIG_ENDIAN_BITFIELD)
    339		u64 totalbyteswritten           : 32;
    340		u64 totalbytesread              : 32;
    341#elif defined(__LITTLE_ENDIAN_BITFIELD)
    342		u64 totalbytesread              : 32;
    343		u64 totalbyteswritten           : 32;
    344#endif
    345#if defined(__BIG_ENDIAN_BITFIELD)
    346		u64 totalbitsprocessed          : 32;
    347		u64 doneint                     : 1;
    348		u64 reserved_155_158            : 4;
    349		u64 exn                         : 3;
    350		u64 reserved_151_151            : 1;
    351		u64 exbits                      : 7;
    352		u64 reserved_137_143            : 7;
    353		u64 ef                          : 1;
    354
    355		volatile u64 compcode           : 8;
    356#elif defined(__LITTLE_ENDIAN_BITFIELD)
    357
    358		volatile u64 compcode           : 8;
    359		u64 ef                          : 1;
    360		u64 reserved_137_143            : 7;
    361		u64 exbits                      : 7;
    362		u64 reserved_151_151            : 1;
    363		u64 exn                         : 3;
    364		u64 reserved_155_158            : 4;
    365		u64 doneint                     : 1;
    366		u64 totalbitsprocessed          : 32;
    367#endif
    368	} s;
    369};
    370
    371/**
    372 * union zip_cmd_ctl - Structure representing the register that controls
    373 * clock and reset.
    374 */
    375union zip_cmd_ctl {
    376	u64 u_reg64;
    377	struct zip_cmd_ctl_s {
    378#if defined(__BIG_ENDIAN_BITFIELD)
    379		u64 reserved_2_63               : 62;
    380		u64 forceclk                    : 1;
    381		u64 reset                       : 1;
    382#elif defined(__LITTLE_ENDIAN_BITFIELD)
    383		u64 reset                       : 1;
    384		u64 forceclk                    : 1;
    385		u64 reserved_2_63               : 62;
    386#endif
    387	} s;
    388};
    389
    390#define ZIP_CMD_CTL 0x0ull
    391
    392/**
    393 * union zip_constants - Data structure representing the register that contains
    394 * all of the current implementation-related parameters of the zip core in this
    395 * chip.
    396 */
    397union zip_constants {
    398	u64 u_reg64;
    399	struct zip_constants_s {
    400#if defined(__BIG_ENDIAN_BITFIELD)
    401		u64 nexec                       : 8;
    402		u64 reserved_49_55              : 7;
    403		u64 syncflush_capable           : 1;
    404		u64 depth                       : 16;
    405		u64 onfsize                     : 12;
    406		u64 ctxsize                     : 12;
    407		u64 reserved_1_7                : 7;
    408		u64 disabled                    : 1;
    409#elif defined(__LITTLE_ENDIAN_BITFIELD)
    410		u64 disabled                    : 1;
    411		u64 reserved_1_7                : 7;
    412		u64 ctxsize                     : 12;
    413		u64 onfsize                     : 12;
    414		u64 depth                       : 16;
    415		u64 syncflush_capable           : 1;
    416		u64 reserved_49_55              : 7;
    417		u64 nexec                       : 8;
    418#endif
    419	} s;
    420};
    421
    422#define ZIP_CONSTANTS 0x00A0ull
    423
    424/**
    425 * union zip_corex_bist_status - Represents registers which have the BIST
    426 * status of memories in zip cores.
    427 *
    428 * Each bit is the BIST result of an individual memory
    429 * (per bit, 0 = pass and 1 = fail).
    430 */
    431union zip_corex_bist_status {
    432	u64 u_reg64;
    433	struct zip_corex_bist_status_s {
    434#if defined(__BIG_ENDIAN_BITFIELD)
    435		u64 reserved_53_63              : 11;
    436		u64 bstatus                     : 53;
    437#elif defined(__LITTLE_ENDIAN_BITFIELD)
    438		u64 bstatus                     : 53;
    439		u64 reserved_53_63              : 11;
    440#endif
    441	} s;
    442};
    443
    444static inline u64 ZIP_COREX_BIST_STATUS(u64 param1)
    445{
    446	if (param1 <= 1)
    447		return 0x0520ull + (param1 & 1) * 0x8ull;
    448	pr_err("ZIP_COREX_BIST_STATUS: %llu\n", param1);
    449	return 0;
    450}
    451
    452/**
    453 * union zip_ctl_bist_status - Represents register that has the BIST status of
    454 * memories in ZIP_CTL (instruction buffer, G/S pointer FIFO, input data
    455 * buffer, output data buffers).
    456 *
    457 * Each bit is the BIST result of an individual memory
    458 * (per bit, 0 = pass and 1 = fail).
    459 */
    460union zip_ctl_bist_status {
    461	u64 u_reg64;
    462	struct zip_ctl_bist_status_s {
    463#if defined(__BIG_ENDIAN_BITFIELD)
    464		u64 reserved_9_63               : 55;
    465		u64 bstatus                     : 9;
    466#elif defined(__LITTLE_ENDIAN_BITFIELD)
    467		u64 bstatus                     : 9;
    468		u64 reserved_9_63               : 55;
    469#endif
    470	} s;
    471};
    472
    473#define ZIP_CTL_BIST_STATUS 0x0510ull
    474
    475/**
    476 * union zip_ctl_cfg - Represents the register that controls the behavior of
    477 * the ZIP DMA engines.
    478 *
    479 * It is recommended to keep default values for normal operation. Changing the
    480 * values of the fields may be useful for diagnostics.
    481 */
    482union zip_ctl_cfg {
    483	u64 u_reg64;
    484	struct zip_ctl_cfg_s {
    485#if defined(__BIG_ENDIAN_BITFIELD)
    486		u64 reserved_52_63              : 12;
    487		u64 ildf                        : 4;
    488		u64 reserved_36_47              : 12;
    489		u64 drtf                        : 4;
    490		u64 reserved_27_31              : 5;
    491		u64 stcf                        : 3;
    492		u64 reserved_19_23              : 5;
    493		u64 ldf                         : 3;
    494		u64 reserved_2_15               : 14;
    495		u64 busy                        : 1;
    496		u64 reserved_0_0                : 1;
    497#elif defined(__LITTLE_ENDIAN_BITFIELD)
    498		u64 reserved_0_0                : 1;
    499		u64 busy                        : 1;
    500		u64 reserved_2_15               : 14;
    501		u64 ldf                         : 3;
    502		u64 reserved_19_23              : 5;
    503		u64 stcf                        : 3;
    504		u64 reserved_27_31              : 5;
    505		u64 drtf                        : 4;
    506		u64 reserved_36_47              : 12;
    507		u64 ildf                        : 4;
    508		u64 reserved_52_63              : 12;
    509#endif
    510	} s;
    511};
    512
    513#define ZIP_CTL_CFG 0x0560ull
    514
    515/**
    516 * union zip_dbg_corex_inst - Represents the registers that reflect the status
    517 * of the current instruction that the ZIP core is executing or has executed.
    518 *
    519 * These registers are only for debug use.
    520 */
    521union zip_dbg_corex_inst {
    522	u64 u_reg64;
    523	struct zip_dbg_corex_inst_s {
    524#if defined(__BIG_ENDIAN_BITFIELD)
    525		u64 busy                        : 1;
    526		u64 reserved_35_62              : 28;
    527		u64 qid                         : 3;
    528		u64 iid                         : 32;
    529#elif defined(__LITTLE_ENDIAN_BITFIELD)
    530		u64 iid                         : 32;
    531		u64 qid                         : 3;
    532		u64 reserved_35_62              : 28;
    533		u64 busy                        : 1;
    534#endif
    535	} s;
    536};
    537
    538static inline u64 ZIP_DBG_COREX_INST(u64 param1)
    539{
    540	if (param1 <= 1)
    541		return 0x0640ull + (param1 & 1) * 0x8ull;
    542	pr_err("ZIP_DBG_COREX_INST: %llu\n", param1);
    543	return 0;
    544}
    545
    546/**
    547 * union zip_dbg_corex_sta - Represents registers that reflect the status of
    548 * the zip cores.
    549 *
    550 * They are for debug use only.
    551 */
    552union zip_dbg_corex_sta {
    553	u64 u_reg64;
    554	struct zip_dbg_corex_sta_s {
    555#if defined(__BIG_ENDIAN_BITFIELD)
    556		u64 busy                        : 1;
    557		u64 reserved_37_62              : 26;
    558		u64 ist                         : 5;
    559		u64 nie                         : 32;
    560#elif defined(__LITTLE_ENDIAN_BITFIELD)
    561		u64 nie                         : 32;
    562		u64 ist                         : 5;
    563		u64 reserved_37_62              : 26;
    564		u64 busy                        : 1;
    565#endif
    566	} s;
    567};
    568
    569static inline u64 ZIP_DBG_COREX_STA(u64 param1)
    570{
    571	if (param1 <= 1)
    572		return 0x0680ull + (param1 & 1) * 0x8ull;
    573	pr_err("ZIP_DBG_COREX_STA: %llu\n", param1);
    574	return 0;
    575}
    576
    577/**
    578 * union zip_dbg_quex_sta - Represets registers that reflect status of the zip
    579 * instruction queues.
    580 *
    581 * They are for debug use only.
    582 */
    583union zip_dbg_quex_sta {
    584	u64 u_reg64;
    585	struct zip_dbg_quex_sta_s {
    586#if defined(__BIG_ENDIAN_BITFIELD)
    587		u64 busy                        : 1;
    588		u64 reserved_56_62              : 7;
    589		u64 rqwc                        : 24;
    590		u64 nii                         : 32;
    591#elif defined(__LITTLE_ENDIAN_BITFIELD)
    592		u64 nii                         : 32;
    593		u64 rqwc                        : 24;
    594		u64 reserved_56_62              : 7;
    595		u64 busy                        : 1;
    596#endif
    597	} s;
    598};
    599
    600static inline u64 ZIP_DBG_QUEX_STA(u64 param1)
    601{
    602	if (param1 <= 7)
    603		return 0x1800ull + (param1 & 7) * 0x8ull;
    604	pr_err("ZIP_DBG_QUEX_STA: %llu\n", param1);
    605	return 0;
    606}
    607
    608/**
    609 * union zip_ecc_ctl - Represents the register that enables ECC for each
    610 * individual internal memory that requires ECC.
    611 *
    612 * For debug purpose, it can also flip one or two bits in the ECC data.
    613 */
    614union zip_ecc_ctl {
    615	u64 u_reg64;
    616	struct zip_ecc_ctl_s {
    617#if defined(__BIG_ENDIAN_BITFIELD)
    618		u64 reserved_19_63              : 45;
    619		u64 vmem_cdis                   : 1;
    620		u64 vmem_fs                     : 2;
    621		u64 reserved_15_15              : 1;
    622		u64 idf1_cdis                   : 1;
    623		u64 idf1_fs                     : 2;
    624		u64 reserved_11_11              : 1;
    625		u64 idf0_cdis                   : 1;
    626		u64 idf0_fs                     : 2;
    627		u64 reserved_7_7                : 1;
    628		u64 gspf_cdis                   : 1;
    629		u64 gspf_fs                     : 2;
    630		u64 reserved_3_3                : 1;
    631		u64 iqf_cdis                    : 1;
    632		u64 iqf_fs                      : 2;
    633#elif defined(__LITTLE_ENDIAN_BITFIELD)
    634		u64 iqf_fs                      : 2;
    635		u64 iqf_cdis                    : 1;
    636		u64 reserved_3_3                : 1;
    637		u64 gspf_fs                     : 2;
    638		u64 gspf_cdis                   : 1;
    639		u64 reserved_7_7                : 1;
    640		u64 idf0_fs                     : 2;
    641		u64 idf0_cdis                   : 1;
    642		u64 reserved_11_11              : 1;
    643		u64 idf1_fs                     : 2;
    644		u64 idf1_cdis                   : 1;
    645		u64 reserved_15_15              : 1;
    646		u64 vmem_fs                     : 2;
    647		u64 vmem_cdis                   : 1;
    648		u64 reserved_19_63              : 45;
    649#endif
    650	} s;
    651};
    652
    653#define ZIP_ECC_CTL 0x0568ull
    654
    655/* NCB - zip_ecce_ena_w1c */
    656union zip_ecce_ena_w1c {
    657	u64 u_reg64;
    658	struct zip_ecce_ena_w1c_s {
    659#if defined(__BIG_ENDIAN_BITFIELD)
    660		u64 reserved_37_63              : 27;
    661		u64 dbe                         : 5;
    662		u64 reserved_5_31               : 27;
    663		u64 sbe                         : 5;
    664#elif defined(__LITTLE_ENDIAN_BITFIELD)
    665		u64 sbe                         : 5;
    666		u64 reserved_5_31               : 27;
    667		u64 dbe                         : 5;
    668		u64 reserved_37_63              : 27;
    669#endif
    670	} s;
    671};
    672
    673#define ZIP_ECCE_ENA_W1C 0x0598ull
    674
    675/* NCB - zip_ecce_ena_w1s */
    676union zip_ecce_ena_w1s {
    677	u64 u_reg64;
    678	struct zip_ecce_ena_w1s_s {
    679#if defined(__BIG_ENDIAN_BITFIELD)
    680		u64 reserved_37_63              : 27;
    681		u64 dbe                         : 5;
    682		u64 reserved_5_31               : 27;
    683		u64 sbe                         : 5;
    684#elif defined(__LITTLE_ENDIAN_BITFIELD)
    685		u64 sbe                         : 5;
    686		u64 reserved_5_31               : 27;
    687		u64 dbe                         : 5;
    688		u64 reserved_37_63              : 27;
    689#endif
    690	} s;
    691};
    692
    693#define ZIP_ECCE_ENA_W1S 0x0590ull
    694
    695/**
    696 * union zip_ecce_int - Represents the register that contains the status of the
    697 * ECC interrupt sources.
    698 */
    699union zip_ecce_int {
    700	u64 u_reg64;
    701	struct zip_ecce_int_s {
    702#if defined(__BIG_ENDIAN_BITFIELD)
    703		u64 reserved_37_63              : 27;
    704		u64 dbe                         : 5;
    705		u64 reserved_5_31               : 27;
    706		u64 sbe                         : 5;
    707#elif defined(__LITTLE_ENDIAN_BITFIELD)
    708		u64 sbe                         : 5;
    709		u64 reserved_5_31               : 27;
    710		u64 dbe                         : 5;
    711		u64 reserved_37_63              : 27;
    712#endif
    713	} s;
    714};
    715
    716#define ZIP_ECCE_INT 0x0580ull
    717
    718/* NCB - zip_ecce_int_w1s */
    719union zip_ecce_int_w1s {
    720	u64 u_reg64;
    721	struct zip_ecce_int_w1s_s {
    722#if defined(__BIG_ENDIAN_BITFIELD)
    723		u64 reserved_37_63              : 27;
    724		u64 dbe                         : 5;
    725		u64 reserved_5_31               : 27;
    726		u64 sbe                         : 5;
    727#elif defined(__LITTLE_ENDIAN_BITFIELD)
    728		u64 sbe                         : 5;
    729		u64 reserved_5_31               : 27;
    730		u64 dbe                         : 5;
    731		u64 reserved_37_63              : 27;
    732#endif
    733	} s;
    734};
    735
    736#define ZIP_ECCE_INT_W1S 0x0588ull
    737
    738/* NCB - zip_fife_ena_w1c */
    739union zip_fife_ena_w1c {
    740	u64 u_reg64;
    741	struct zip_fife_ena_w1c_s {
    742#if defined(__BIG_ENDIAN_BITFIELD)
    743		u64 reserved_42_63              : 22;
    744		u64 asserts                     : 42;
    745#elif defined(__LITTLE_ENDIAN_BITFIELD)
    746		u64 asserts                     : 42;
    747		u64 reserved_42_63              : 22;
    748#endif
    749	} s;
    750};
    751
    752#define ZIP_FIFE_ENA_W1C 0x0090ull
    753
    754/* NCB - zip_fife_ena_w1s */
    755union zip_fife_ena_w1s {
    756	u64 u_reg64;
    757	struct zip_fife_ena_w1s_s {
    758#if defined(__BIG_ENDIAN_BITFIELD)
    759		u64 reserved_42_63              : 22;
    760		u64 asserts                     : 42;
    761#elif defined(__LITTLE_ENDIAN_BITFIELD)
    762		u64 asserts                     : 42;
    763		u64 reserved_42_63              : 22;
    764#endif
    765	} s;
    766};
    767
    768#define ZIP_FIFE_ENA_W1S 0x0088ull
    769
    770/* NCB - zip_fife_int */
    771union zip_fife_int {
    772	u64 u_reg64;
    773	struct zip_fife_int_s {
    774#if defined(__BIG_ENDIAN_BITFIELD)
    775		u64 reserved_42_63              : 22;
    776		u64 asserts                     : 42;
    777#elif defined(__LITTLE_ENDIAN_BITFIELD)
    778		u64 asserts                     : 42;
    779		u64 reserved_42_63              : 22;
    780#endif
    781	} s;
    782};
    783
    784#define ZIP_FIFE_INT 0x0078ull
    785
    786/* NCB - zip_fife_int_w1s */
    787union zip_fife_int_w1s {
    788	u64 u_reg64;
    789	struct zip_fife_int_w1s_s {
    790#if defined(__BIG_ENDIAN_BITFIELD)
    791		u64 reserved_42_63              : 22;
    792		u64 asserts                     : 42;
    793#elif defined(__LITTLE_ENDIAN_BITFIELD)
    794		u64 asserts                     : 42;
    795		u64 reserved_42_63              : 22;
    796#endif
    797	} s;
    798};
    799
    800#define ZIP_FIFE_INT_W1S 0x0080ull
    801
    802/**
    803 * union zip_msix_pbax - Represents the register that is the MSI-X PBA table
    804 *
    805 * The bit number is indexed by the ZIP_INT_VEC_E enumeration.
    806 */
    807union zip_msix_pbax {
    808	u64 u_reg64;
    809	struct zip_msix_pbax_s {
    810#if defined(__BIG_ENDIAN_BITFIELD)
    811		u64 pend                        : 64;
    812#elif defined(__LITTLE_ENDIAN_BITFIELD)
    813		u64 pend                        : 64;
    814#endif
    815	} s;
    816};
    817
    818static inline u64 ZIP_MSIX_PBAX(u64 param1)
    819{
    820	if (param1 == 0)
    821		return 0x0000838000FF0000ull;
    822	pr_err("ZIP_MSIX_PBAX: %llu\n", param1);
    823	return 0;
    824}
    825
    826/**
    827 * union zip_msix_vecx_addr - Represents the register that is the MSI-X vector
    828 * table, indexed by the ZIP_INT_VEC_E enumeration.
    829 */
    830union zip_msix_vecx_addr {
    831	u64 u_reg64;
    832	struct zip_msix_vecx_addr_s {
    833#if defined(__BIG_ENDIAN_BITFIELD)
    834		u64 reserved_49_63              : 15;
    835		u64 addr                        : 47;
    836		u64 reserved_1_1                : 1;
    837		u64 secvec                      : 1;
    838#elif defined(__LITTLE_ENDIAN_BITFIELD)
    839		u64 secvec                      : 1;
    840		u64 reserved_1_1                : 1;
    841		u64 addr                        : 47;
    842		u64 reserved_49_63              : 15;
    843#endif
    844	} s;
    845};
    846
    847static inline u64 ZIP_MSIX_VECX_ADDR(u64 param1)
    848{
    849	if (param1 <= 17)
    850		return 0x0000838000F00000ull + (param1 & 31) * 0x10ull;
    851	pr_err("ZIP_MSIX_VECX_ADDR: %llu\n", param1);
    852	return 0;
    853}
    854
    855/**
    856 * union zip_msix_vecx_ctl - Represents the register that is the MSI-X vector
    857 * table, indexed by the ZIP_INT_VEC_E enumeration.
    858 */
    859union zip_msix_vecx_ctl {
    860	u64 u_reg64;
    861	struct zip_msix_vecx_ctl_s {
    862#if defined(__BIG_ENDIAN_BITFIELD)
    863		u64 reserved_33_63              : 31;
    864		u64 mask                        : 1;
    865		u64 reserved_20_31              : 12;
    866		u64 data                        : 20;
    867#elif defined(__LITTLE_ENDIAN_BITFIELD)
    868		u64 data                        : 20;
    869		u64 reserved_20_31              : 12;
    870		u64 mask                        : 1;
    871		u64 reserved_33_63              : 31;
    872#endif
    873	} s;
    874};
    875
    876static inline u64 ZIP_MSIX_VECX_CTL(u64 param1)
    877{
    878	if (param1 <= 17)
    879		return 0x0000838000F00008ull + (param1 & 31) * 0x10ull;
    880	pr_err("ZIP_MSIX_VECX_CTL: %llu\n", param1);
    881	return 0;
    882}
    883
    884/**
    885 * union zip_quex_done - Represents the registers that contain the per-queue
    886 * instruction done count.
    887 */
    888union zip_quex_done {
    889	u64 u_reg64;
    890	struct zip_quex_done_s {
    891#if defined(__BIG_ENDIAN_BITFIELD)
    892		u64 reserved_20_63              : 44;
    893		u64 done                        : 20;
    894#elif defined(__LITTLE_ENDIAN_BITFIELD)
    895		u64 done                        : 20;
    896		u64 reserved_20_63              : 44;
    897#endif
    898	} s;
    899};
    900
    901static inline u64 ZIP_QUEX_DONE(u64 param1)
    902{
    903	if (param1 <= 7)
    904		return 0x2000ull + (param1 & 7) * 0x8ull;
    905	pr_err("ZIP_QUEX_DONE: %llu\n", param1);
    906	return 0;
    907}
    908
    909/**
    910 * union zip_quex_done_ack - Represents the registers on write to which will
    911 * decrement the per-queue instructiona done count.
    912 */
    913union zip_quex_done_ack {
    914	u64 u_reg64;
    915	struct zip_quex_done_ack_s {
    916#if defined(__BIG_ENDIAN_BITFIELD)
    917		u64 reserved_20_63              : 44;
    918		u64 done_ack                    : 20;
    919#elif defined(__LITTLE_ENDIAN_BITFIELD)
    920		u64 done_ack                    : 20;
    921		u64 reserved_20_63              : 44;
    922#endif
    923	} s;
    924};
    925
    926static inline u64 ZIP_QUEX_DONE_ACK(u64 param1)
    927{
    928	if (param1 <= 7)
    929		return 0x2200ull + (param1 & 7) * 0x8ull;
    930	pr_err("ZIP_QUEX_DONE_ACK: %llu\n", param1);
    931	return 0;
    932}
    933
    934/**
    935 * union zip_quex_done_ena_w1c - Represents the register which when written
    936 * 1 to will disable the DONEINT interrupt for the queue.
    937 */
    938union zip_quex_done_ena_w1c {
    939	u64 u_reg64;
    940	struct zip_quex_done_ena_w1c_s {
    941#if defined(__BIG_ENDIAN_BITFIELD)
    942		u64 reserved_1_63               : 63;
    943		u64 done_ena                    : 1;
    944#elif defined(__LITTLE_ENDIAN_BITFIELD)
    945		u64 done_ena                    : 1;
    946		u64 reserved_1_63               : 63;
    947#endif
    948	} s;
    949};
    950
    951static inline u64 ZIP_QUEX_DONE_ENA_W1C(u64 param1)
    952{
    953	if (param1 <= 7)
    954		return 0x2600ull + (param1 & 7) * 0x8ull;
    955	pr_err("ZIP_QUEX_DONE_ENA_W1C: %llu\n", param1);
    956	return 0;
    957}
    958
    959/**
    960 * union zip_quex_done_ena_w1s - Represents the register that when written 1 to
    961 * will enable the DONEINT interrupt for the queue.
    962 */
    963union zip_quex_done_ena_w1s {
    964	u64 u_reg64;
    965	struct zip_quex_done_ena_w1s_s {
    966#if defined(__BIG_ENDIAN_BITFIELD)
    967		u64 reserved_1_63               : 63;
    968		u64 done_ena                    : 1;
    969#elif defined(__LITTLE_ENDIAN_BITFIELD)
    970		u64 done_ena                    : 1;
    971		u64 reserved_1_63               : 63;
    972#endif
    973	} s;
    974};
    975
    976static inline u64 ZIP_QUEX_DONE_ENA_W1S(u64 param1)
    977{
    978	if (param1 <= 7)
    979		return 0x2400ull + (param1 & 7) * 0x8ull;
    980	pr_err("ZIP_QUEX_DONE_ENA_W1S: %llu\n", param1);
    981	return 0;
    982}
    983
    984/**
    985 * union zip_quex_done_wait - Represents the register that specifies the per
    986 * queue interrupt coalescing settings.
    987 */
    988union zip_quex_done_wait {
    989	u64 u_reg64;
    990	struct zip_quex_done_wait_s {
    991#if defined(__BIG_ENDIAN_BITFIELD)
    992		u64 reserved_48_63              : 16;
    993		u64 time_wait                   : 16;
    994		u64 reserved_20_31              : 12;
    995		u64 num_wait                    : 20;
    996#elif defined(__LITTLE_ENDIAN_BITFIELD)
    997		u64 num_wait                    : 20;
    998		u64 reserved_20_31              : 12;
    999		u64 time_wait                   : 16;
   1000		u64 reserved_48_63              : 16;
   1001#endif
   1002	} s;
   1003};
   1004
   1005static inline u64 ZIP_QUEX_DONE_WAIT(u64 param1)
   1006{
   1007	if (param1 <= 7)
   1008		return 0x2800ull + (param1 & 7) * 0x8ull;
   1009	pr_err("ZIP_QUEX_DONE_WAIT: %llu\n", param1);
   1010	return 0;
   1011}
   1012
   1013/**
   1014 * union zip_quex_doorbell - Represents doorbell registers for the ZIP
   1015 * instruction queues.
   1016 */
   1017union zip_quex_doorbell {
   1018	u64 u_reg64;
   1019	struct zip_quex_doorbell_s {
   1020#if defined(__BIG_ENDIAN_BITFIELD)
   1021		u64 reserved_20_63              : 44;
   1022		u64 dbell_cnt                   : 20;
   1023#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1024		u64 dbell_cnt                   : 20;
   1025		u64 reserved_20_63              : 44;
   1026#endif
   1027	} s;
   1028};
   1029
   1030static inline u64 ZIP_QUEX_DOORBELL(u64 param1)
   1031{
   1032	if (param1 <= 7)
   1033		return 0x4000ull + (param1 & 7) * 0x8ull;
   1034	pr_err("ZIP_QUEX_DOORBELL: %llu\n", param1);
   1035	return 0;
   1036}
   1037
   1038union zip_quex_err_ena_w1c {
   1039	u64 u_reg64;
   1040	struct zip_quex_err_ena_w1c_s {
   1041#if defined(__BIG_ENDIAN_BITFIELD)
   1042		u64 reserved_5_63               : 59;
   1043		u64 mdbe                        : 1;
   1044		u64 nwrp                        : 1;
   1045		u64 nrrp                        : 1;
   1046		u64 irde                        : 1;
   1047		u64 dovf                        : 1;
   1048#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1049		u64 dovf                        : 1;
   1050		u64 irde                        : 1;
   1051		u64 nrrp                        : 1;
   1052		u64 nwrp                        : 1;
   1053		u64 mdbe                        : 1;
   1054		u64 reserved_5_63               : 59;
   1055#endif
   1056	} s;
   1057};
   1058
   1059static inline u64 ZIP_QUEX_ERR_ENA_W1C(u64 param1)
   1060{
   1061	if (param1 <= 7)
   1062		return 0x3600ull + (param1 & 7) * 0x8ull;
   1063	pr_err("ZIP_QUEX_ERR_ENA_W1C: %llu\n", param1);
   1064	return 0;
   1065}
   1066
   1067union zip_quex_err_ena_w1s {
   1068	u64 u_reg64;
   1069	struct zip_quex_err_ena_w1s_s {
   1070#if defined(__BIG_ENDIAN_BITFIELD)
   1071		u64 reserved_5_63               : 59;
   1072		u64 mdbe                        : 1;
   1073		u64 nwrp                        : 1;
   1074		u64 nrrp                        : 1;
   1075		u64 irde                        : 1;
   1076		u64 dovf                        : 1;
   1077#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1078		u64 dovf                        : 1;
   1079		u64 irde                        : 1;
   1080		u64 nrrp                        : 1;
   1081		u64 nwrp                        : 1;
   1082		u64 mdbe                        : 1;
   1083		u64 reserved_5_63               : 59;
   1084#endif
   1085	} s;
   1086};
   1087
   1088static inline u64 ZIP_QUEX_ERR_ENA_W1S(u64 param1)
   1089{
   1090	if (param1 <= 7)
   1091		return 0x3400ull + (param1 & 7) * 0x8ull;
   1092	pr_err("ZIP_QUEX_ERR_ENA_W1S: %llu\n", param1);
   1093	return 0;
   1094}
   1095
   1096/**
   1097 * union zip_quex_err_int - Represents registers that contain the per-queue
   1098 * error interrupts.
   1099 */
   1100union zip_quex_err_int {
   1101	u64 u_reg64;
   1102	struct zip_quex_err_int_s {
   1103#if defined(__BIG_ENDIAN_BITFIELD)
   1104		u64 reserved_5_63               : 59;
   1105		u64 mdbe                        : 1;
   1106		u64 nwrp                        : 1;
   1107		u64 nrrp                        : 1;
   1108		u64 irde                        : 1;
   1109		u64 dovf                        : 1;
   1110#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1111		u64 dovf                        : 1;
   1112		u64 irde                        : 1;
   1113		u64 nrrp                        : 1;
   1114		u64 nwrp                        : 1;
   1115		u64 mdbe                        : 1;
   1116		u64 reserved_5_63               : 59;
   1117#endif
   1118	} s;
   1119};
   1120
   1121static inline u64 ZIP_QUEX_ERR_INT(u64 param1)
   1122{
   1123	if (param1 <= 7)
   1124		return 0x3000ull + (param1 & 7) * 0x8ull;
   1125	pr_err("ZIP_QUEX_ERR_INT: %llu\n", param1);
   1126	return 0;
   1127}
   1128
   1129/* NCB - zip_que#_err_int_w1s */
   1130union zip_quex_err_int_w1s {
   1131	u64 u_reg64;
   1132	struct zip_quex_err_int_w1s_s {
   1133#if defined(__BIG_ENDIAN_BITFIELD)
   1134		u64 reserved_5_63               : 59;
   1135		u64 mdbe                        : 1;
   1136		u64 nwrp                        : 1;
   1137		u64 nrrp                        : 1;
   1138		u64 irde                        : 1;
   1139		u64 dovf                        : 1;
   1140#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1141		u64 dovf                        : 1;
   1142		u64 irde                        : 1;
   1143		u64 nrrp                        : 1;
   1144		u64 nwrp                        : 1;
   1145		u64 mdbe                        : 1;
   1146		u64 reserved_5_63               : 59;
   1147#endif
   1148	} s;
   1149};
   1150
   1151static inline u64 ZIP_QUEX_ERR_INT_W1S(u64 param1)
   1152{
   1153	if (param1 <= 7)
   1154		return 0x3200ull + (param1 & 7) * 0x8ull;
   1155	pr_err("ZIP_QUEX_ERR_INT_W1S: %llu\n", param1);
   1156	return 0;
   1157}
   1158
   1159/**
   1160 * union zip_quex_gcfg - Represents the registers that reflect status of the
   1161 * zip instruction queues,debug use only.
   1162 */
   1163union zip_quex_gcfg {
   1164	u64 u_reg64;
   1165	struct zip_quex_gcfg_s {
   1166#if defined(__BIG_ENDIAN_BITFIELD)
   1167		u64 reserved_4_63               : 60;
   1168		u64 iqb_ldwb                    : 1;
   1169		u64 cbw_sty                     : 1;
   1170		u64 l2ld_cmd                    : 2;
   1171#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1172		u64 l2ld_cmd                    : 2;
   1173		u64 cbw_sty                     : 1;
   1174		u64 iqb_ldwb                    : 1;
   1175		u64 reserved_4_63               : 60;
   1176#endif
   1177	} s;
   1178};
   1179
   1180static inline u64 ZIP_QUEX_GCFG(u64 param1)
   1181{
   1182	if (param1 <= 7)
   1183		return 0x1A00ull + (param1 & 7) * 0x8ull;
   1184	pr_err("ZIP_QUEX_GCFG: %llu\n", param1);
   1185	return 0;
   1186}
   1187
   1188/**
   1189 * union zip_quex_map - Represents the registers that control how each
   1190 * instruction queue maps to zip cores.
   1191 */
   1192union zip_quex_map {
   1193	u64 u_reg64;
   1194	struct zip_quex_map_s {
   1195#if defined(__BIG_ENDIAN_BITFIELD)
   1196		u64 reserved_2_63               : 62;
   1197		u64 zce                         : 2;
   1198#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1199		u64 zce                         : 2;
   1200		u64 reserved_2_63               : 62;
   1201#endif
   1202	} s;
   1203};
   1204
   1205static inline u64 ZIP_QUEX_MAP(u64 param1)
   1206{
   1207	if (param1 <= 7)
   1208		return 0x1400ull + (param1 & 7) * 0x8ull;
   1209	pr_err("ZIP_QUEX_MAP: %llu\n", param1);
   1210	return 0;
   1211}
   1212
   1213/**
   1214 * union zip_quex_sbuf_addr - Represents the registers that set the buffer
   1215 * parameters for the instruction queues.
   1216 *
   1217 * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
   1218 * this register to effectively reset the command buffer state machine.
   1219 * These registers must be programmed after SW programs the corresponding
   1220 * ZIP_QUE(0..7)_SBUF_CTL.
   1221 */
   1222union zip_quex_sbuf_addr {
   1223	u64 u_reg64;
   1224	struct zip_quex_sbuf_addr_s {
   1225#if defined(__BIG_ENDIAN_BITFIELD)
   1226		u64 reserved_49_63              : 15;
   1227		u64 ptr                         : 42;
   1228		u64 off                         : 7;
   1229#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1230		u64 off                         : 7;
   1231		u64 ptr                         : 42;
   1232		u64 reserved_49_63              : 15;
   1233#endif
   1234	} s;
   1235};
   1236
   1237static inline u64 ZIP_QUEX_SBUF_ADDR(u64 param1)
   1238{
   1239	if (param1 <= 7)
   1240		return 0x1000ull + (param1 & 7) * 0x8ull;
   1241	pr_err("ZIP_QUEX_SBUF_ADDR: %llu\n", param1);
   1242	return 0;
   1243}
   1244
   1245/**
   1246 * union zip_quex_sbuf_ctl - Represents the registers that set the buffer
   1247 * parameters for the instruction queues.
   1248 *
   1249 * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite
   1250 * this register to effectively reset the command buffer state machine.
   1251 * These registers must be programmed before SW programs the corresponding
   1252 * ZIP_QUE(0..7)_SBUF_ADDR.
   1253 */
   1254union zip_quex_sbuf_ctl {
   1255	u64 u_reg64;
   1256	struct zip_quex_sbuf_ctl_s {
   1257#if defined(__BIG_ENDIAN_BITFIELD)
   1258		u64 reserved_45_63              : 19;
   1259		u64 size                        : 13;
   1260		u64 inst_be                     : 1;
   1261		u64 reserved_24_30              : 7;
   1262		u64 stream_id                   : 8;
   1263		u64 reserved_12_15              : 4;
   1264		u64 aura                        : 12;
   1265#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1266		u64 aura                        : 12;
   1267		u64 reserved_12_15              : 4;
   1268		u64 stream_id                   : 8;
   1269		u64 reserved_24_30              : 7;
   1270		u64 inst_be                     : 1;
   1271		u64 size                        : 13;
   1272		u64 reserved_45_63              : 19;
   1273#endif
   1274	} s;
   1275};
   1276
   1277static inline u64 ZIP_QUEX_SBUF_CTL(u64 param1)
   1278{
   1279	if (param1 <= 7)
   1280		return 0x1200ull + (param1 & 7) * 0x8ull;
   1281	pr_err("ZIP_QUEX_SBUF_CTL: %llu\n", param1);
   1282	return 0;
   1283}
   1284
   1285/**
   1286 * union zip_que_ena - Represents queue enable register
   1287 *
   1288 * If a queue is disabled, ZIP_CTL stops fetching instructions from the queue.
   1289 */
   1290union zip_que_ena {
   1291	u64 u_reg64;
   1292	struct zip_que_ena_s {
   1293#if defined(__BIG_ENDIAN_BITFIELD)
   1294		u64 reserved_8_63               : 56;
   1295		u64 ena                         : 8;
   1296#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1297		u64 ena                         : 8;
   1298		u64 reserved_8_63               : 56;
   1299#endif
   1300	} s;
   1301};
   1302
   1303#define ZIP_QUE_ENA 0x0500ull
   1304
   1305/**
   1306 * union zip_que_pri - Represents the register that defines the priority
   1307 * between instruction queues.
   1308 */
   1309union zip_que_pri {
   1310	u64 u_reg64;
   1311	struct zip_que_pri_s {
   1312#if defined(__BIG_ENDIAN_BITFIELD)
   1313		u64 reserved_8_63               : 56;
   1314		u64 pri                         : 8;
   1315#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1316		u64 pri                         : 8;
   1317		u64 reserved_8_63               : 56;
   1318#endif
   1319	} s;
   1320};
   1321
   1322#define ZIP_QUE_PRI 0x0508ull
   1323
   1324/**
   1325 * union zip_throttle - Represents the register that controls the maximum
   1326 * number of in-flight X2I data fetch transactions.
   1327 *
   1328 * Writing 0 to this register causes the ZIP module to temporarily suspend NCB
   1329 * accesses; it is not recommended for normal operation, but may be useful for
   1330 * diagnostics.
   1331 */
   1332union zip_throttle {
   1333	u64 u_reg64;
   1334	struct zip_throttle_s {
   1335#if defined(__BIG_ENDIAN_BITFIELD)
   1336		u64 reserved_6_63               : 58;
   1337		u64 ld_infl                     : 6;
   1338#elif defined(__LITTLE_ENDIAN_BITFIELD)
   1339		u64 ld_infl                     : 6;
   1340		u64 reserved_6_63               : 58;
   1341#endif
   1342	} s;
   1343};
   1344
   1345#define ZIP_THROTTLE 0x0010ull
   1346
   1347#endif /* _CSRS_ZIP__ */