| /***********************license start************************************ |
| * Copyright (c) 2003-2017 Cavium, Inc. |
| * All rights reserved. |
| * |
| * License: one of 'Cavium License' or 'GNU General Public License Version 2' |
| * |
| * This file is provided under the terms of the Cavium License (see below) |
| * or under the terms of GNU General Public License, Version 2, as |
| * published by the Free Software Foundation. When using or redistributing |
| * this file, you may do so under either license. |
| * |
| * Cavium License: Redistribution and use in source and binary forms, with |
| * or without modification, are permitted provided that the following |
| * conditions are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * * Redistributions in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials provided |
| * with the distribution. |
| * |
| * * Neither the name of Cavium Inc. nor the names of its contributors may be |
| * used to endorse or promote products derived from this software without |
| * specific prior written permission. |
| * |
| * This Software, including technical data, may be subject to U.S. export |
| * control laws, including the U.S. Export Administration Act and its |
| * associated regulations, and may be subject to export or import |
| * regulations in other countries. |
| * |
| * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" |
| * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS |
| * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH |
| * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY |
| * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT |
| * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) |
| * WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A |
| * PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET |
| * ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE |
| * ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES |
| * WITH YOU. |
| ***********************license end**************************************/ |
| |
| #ifndef __ZIP_REGS_H__ |
| #define __ZIP_REGS_H__ |
| |
| /* |
| * Configuration and status register (CSR) address and type definitions for |
| * Cavium ZIP. |
| */ |
| |
| #include <linux/kern_levels.h> |
| |
| /* ZIP invocation result completion status codes */ |
| #define ZIP_CMD_NOTDONE 0x0 |
| |
| /* Successful completion. */ |
| #define ZIP_CMD_SUCCESS 0x1 |
| |
| /* Output truncated */ |
| #define ZIP_CMD_DTRUNC 0x2 |
| |
| /* Dynamic Stop */ |
| #define ZIP_CMD_DYNAMIC_STOP 0x3 |
| |
| /* Uncompress ran out of input data when IWORD0[EF] was set */ |
| #define ZIP_CMD_ITRUNC 0x4 |
| |
| /* Uncompress found the reserved block type 3 */ |
| #define ZIP_CMD_RBLOCK 0x5 |
| |
| /* |
| * Uncompress found LEN != ZIP_CMD_NLEN in an uncompressed block in the input. |
| */ |
| #define ZIP_CMD_NLEN 0x6 |
| |
| /* Uncompress found a bad code in the main Huffman codes. */ |
| #define ZIP_CMD_BADCODE 0x7 |
| |
| /* Uncompress found a bad code in the 19 Huffman codes encoding lengths. */ |
| #define ZIP_CMD_BADCODE2 0x8 |
| |
| /* Compress found a zero-length input. */ |
| #define ZIP_CMD_ZERO_LEN 0x9 |
| |
| /* The compress or decompress encountered an internal parity error. */ |
| #define ZIP_CMD_PARITY 0xA |
| |
| /* |
| * Uncompress found a string identifier that precedes the uncompressed data and |
| * decompression history. |
| */ |
| #define ZIP_CMD_FATAL 0xB |
| |
| /** |
| * enum zip_int_vec_e - ZIP MSI-X Vector Enumeration, enumerates the MSI-X |
| * interrupt vectors. |
| */ |
| enum zip_int_vec_e { |
| ZIP_INT_VEC_E_ECCE = 0x10, |
| ZIP_INT_VEC_E_FIFE = 0x11, |
| ZIP_INT_VEC_E_QUE0_DONE = 0x0, |
| ZIP_INT_VEC_E_QUE0_ERR = 0x8, |
| ZIP_INT_VEC_E_QUE1_DONE = 0x1, |
| ZIP_INT_VEC_E_QUE1_ERR = 0x9, |
| ZIP_INT_VEC_E_QUE2_DONE = 0x2, |
| ZIP_INT_VEC_E_QUE2_ERR = 0xa, |
| ZIP_INT_VEC_E_QUE3_DONE = 0x3, |
| ZIP_INT_VEC_E_QUE3_ERR = 0xb, |
| ZIP_INT_VEC_E_QUE4_DONE = 0x4, |
| ZIP_INT_VEC_E_QUE4_ERR = 0xc, |
| ZIP_INT_VEC_E_QUE5_DONE = 0x5, |
| ZIP_INT_VEC_E_QUE5_ERR = 0xd, |
| ZIP_INT_VEC_E_QUE6_DONE = 0x6, |
| ZIP_INT_VEC_E_QUE6_ERR = 0xe, |
| ZIP_INT_VEC_E_QUE7_DONE = 0x7, |
| ZIP_INT_VEC_E_QUE7_ERR = 0xf, |
| ZIP_INT_VEC_E_ENUM_LAST = 0x12, |
| }; |
| |
| /** |
| * union zip_zptr_addr_s - ZIP Generic Pointer Structure for ADDR. |
| * |
| * It is the generic format of pointers in ZIP_INST_S. |
| */ |
| union zip_zptr_addr_s { |
| u64 u_reg64; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_49_63 : 15; |
| u64 addr : 49; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 addr : 49; |
| u64 reserved_49_63 : 15; |
| #endif |
| } s; |
| |
| }; |
| |
| /** |
| * union zip_zptr_ctl_s - ZIP Generic Pointer Structure for CTL. |
| * |
| * It is the generic format of pointers in ZIP_INST_S. |
| */ |
| union zip_zptr_ctl_s { |
| u64 u_reg64; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_112_127 : 16; |
| u64 length : 16; |
| u64 reserved_67_95 : 29; |
| u64 fw : 1; |
| u64 nc : 1; |
| u64 data_be : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 data_be : 1; |
| u64 nc : 1; |
| u64 fw : 1; |
| u64 reserved_67_95 : 29; |
| u64 length : 16; |
| u64 reserved_112_127 : 16; |
| #endif |
| } s; |
| }; |
| |
| /** |
| * union zip_inst_s - ZIP Instruction Structure. |
| * Each ZIP instruction has 16 words (they are called IWORD0 to IWORD15 within |
| * the structure). |
| */ |
| union zip_inst_s { |
| u64 u_reg64[16]; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 doneint : 1; |
| u64 reserved_56_62 : 7; |
| u64 totaloutputlength : 24; |
| u64 reserved_27_31 : 5; |
| u64 exn : 3; |
| u64 reserved_23_23 : 1; |
| u64 exbits : 7; |
| u64 reserved_12_15 : 4; |
| u64 sf : 1; |
| u64 ss : 2; |
| u64 cc : 2; |
| u64 ef : 1; |
| u64 bf : 1; |
| u64 ce : 1; |
| u64 reserved_3_3 : 1; |
| u64 ds : 1; |
| u64 dg : 1; |
| u64 hg : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 hg : 1; |
| u64 dg : 1; |
| u64 ds : 1; |
| u64 reserved_3_3 : 1; |
| u64 ce : 1; |
| u64 bf : 1; |
| u64 ef : 1; |
| u64 cc : 2; |
| u64 ss : 2; |
| u64 sf : 1; |
| u64 reserved_12_15 : 4; |
| u64 exbits : 7; |
| u64 reserved_23_23 : 1; |
| u64 exn : 3; |
| u64 reserved_27_31 : 5; |
| u64 totaloutputlength : 24; |
| u64 reserved_56_62 : 7; |
| u64 doneint : 1; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 historylength : 16; |
| u64 reserved_96_111 : 16; |
| u64 adlercrc32 : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 adlercrc32 : 32; |
| u64 reserved_96_111 : 16; |
| u64 historylength : 16; |
| #endif |
| union zip_zptr_addr_s ctx_ptr_addr; |
| union zip_zptr_ctl_s ctx_ptr_ctl; |
| union zip_zptr_addr_s his_ptr_addr; |
| union zip_zptr_ctl_s his_ptr_ctl; |
| union zip_zptr_addr_s inp_ptr_addr; |
| union zip_zptr_ctl_s inp_ptr_ctl; |
| union zip_zptr_addr_s out_ptr_addr; |
| union zip_zptr_ctl_s out_ptr_ctl; |
| union zip_zptr_addr_s res_ptr_addr; |
| union zip_zptr_ctl_s res_ptr_ctl; |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_817_831 : 15; |
| u64 wq_ptr : 49; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 wq_ptr : 49; |
| u64 reserved_817_831 : 15; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_882_895 : 14; |
| u64 tt : 2; |
| u64 reserved_874_879 : 6; |
| u64 grp : 10; |
| u64 tag : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 tag : 32; |
| u64 grp : 10; |
| u64 reserved_874_879 : 6; |
| u64 tt : 2; |
| u64 reserved_882_895 : 14; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_896_959 : 64; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 reserved_896_959 : 64; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_960_1023 : 64; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 reserved_960_1023 : 64; |
| #endif |
| } s; |
| }; |
| |
| /** |
| * union zip_nptr_s - ZIP Instruction Next-Chunk-Buffer Pointer (NPTR) |
| * Structure |
| * |
| * ZIP_NPTR structure is used to chain all the zip instruction buffers |
| * together. ZIP instruction buffers are managed (allocated and released) by |
| * the software. |
| */ |
| union zip_nptr_s { |
| u64 u_reg64; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_49_63 : 15; |
| u64 addr : 49; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 addr : 49; |
| u64 reserved_49_63 : 15; |
| #endif |
| } s; |
| }; |
| |
| /** |
| * union zip_zptr_s - ZIP Generic Pointer Structure. |
| * |
| * It is the generic format of pointers in ZIP_INST_S. |
| */ |
| union zip_zptr_s { |
| u64 u_reg64[2]; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_49_63 : 15; |
| u64 addr : 49; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 addr : 49; |
| u64 reserved_49_63 : 15; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_112_127 : 16; |
| u64 length : 16; |
| u64 reserved_67_95 : 29; |
| u64 fw : 1; |
| u64 nc : 1; |
| u64 data_be : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 data_be : 1; |
| u64 nc : 1; |
| u64 fw : 1; |
| u64 reserved_67_95 : 29; |
| u64 length : 16; |
| u64 reserved_112_127 : 16; |
| #endif |
| } s; |
| }; |
| |
| /** |
| * union zip_zres_s - ZIP Result Structure |
| * |
| * The ZIP coprocessor writes the result structure after it completes the |
| * invocation. The result structure is exactly 24 bytes, and each invocation of |
| * the ZIP coprocessor produces exactly one result structure. |
| */ |
| union zip_zres_s { |
| u64 u_reg64[3]; |
| struct { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 crc32 : 32; |
| u64 adler32 : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 adler32 : 32; |
| u64 crc32 : 32; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 totalbyteswritten : 32; |
| u64 totalbytesread : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 totalbytesread : 32; |
| u64 totalbyteswritten : 32; |
| #endif |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 totalbitsprocessed : 32; |
| u64 doneint : 1; |
| u64 reserved_155_158 : 4; |
| u64 exn : 3; |
| u64 reserved_151_151 : 1; |
| u64 exbits : 7; |
| u64 reserved_137_143 : 7; |
| u64 ef : 1; |
| |
| volatile u64 compcode : 8; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| |
| volatile u64 compcode : 8; |
| u64 ef : 1; |
| u64 reserved_137_143 : 7; |
| u64 exbits : 7; |
| u64 reserved_151_151 : 1; |
| u64 exn : 3; |
| u64 reserved_155_158 : 4; |
| u64 doneint : 1; |
| u64 totalbitsprocessed : 32; |
| #endif |
| } s; |
| }; |
| |
| /** |
| * union zip_cmd_ctl - Structure representing the register that controls |
| * clock and reset. |
| */ |
| union zip_cmd_ctl { |
| u64 u_reg64; |
| struct zip_cmd_ctl_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_2_63 : 62; |
| u64 forceclk : 1; |
| u64 reset : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 reset : 1; |
| u64 forceclk : 1; |
| u64 reserved_2_63 : 62; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_CMD_CTL 0x0ull |
| |
| /** |
| * union zip_constants - Data structure representing the register that contains |
| * all of the current implementation-related parameters of the zip core in this |
| * chip. |
| */ |
| union zip_constants { |
| u64 u_reg64; |
| struct zip_constants_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 nexec : 8; |
| u64 reserved_49_55 : 7; |
| u64 syncflush_capable : 1; |
| u64 depth : 16; |
| u64 onfsize : 12; |
| u64 ctxsize : 12; |
| u64 reserved_1_7 : 7; |
| u64 disabled : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 disabled : 1; |
| u64 reserved_1_7 : 7; |
| u64 ctxsize : 12; |
| u64 onfsize : 12; |
| u64 depth : 16; |
| u64 syncflush_capable : 1; |
| u64 reserved_49_55 : 7; |
| u64 nexec : 8; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_CONSTANTS 0x00A0ull |
| |
| /** |
| * union zip_corex_bist_status - Represents registers which have the BIST |
| * status of memories in zip cores. |
| * |
| * Each bit is the BIST result of an individual memory |
| * (per bit, 0 = pass and 1 = fail). |
| */ |
| union zip_corex_bist_status { |
| u64 u_reg64; |
| struct zip_corex_bist_status_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_53_63 : 11; |
| u64 bstatus : 53; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 bstatus : 53; |
| u64 reserved_53_63 : 11; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_COREX_BIST_STATUS(u64 param1) |
| { |
| if (param1 <= 1) |
| return 0x0520ull + (param1 & 1) * 0x8ull; |
| pr_err("ZIP_COREX_BIST_STATUS: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_ctl_bist_status - Represents register that has the BIST status of |
| * memories in ZIP_CTL (instruction buffer, G/S pointer FIFO, input data |
| * buffer, output data buffers). |
| * |
| * Each bit is the BIST result of an individual memory |
| * (per bit, 0 = pass and 1 = fail). |
| */ |
| union zip_ctl_bist_status { |
| u64 u_reg64; |
| struct zip_ctl_bist_status_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_9_63 : 55; |
| u64 bstatus : 9; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 bstatus : 9; |
| u64 reserved_9_63 : 55; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_CTL_BIST_STATUS 0x0510ull |
| |
| /** |
| * union zip_ctl_cfg - Represents the register that controls the behavior of |
| * the ZIP DMA engines. |
| * |
| * It is recommended to keep default values for normal operation. Changing the |
| * values of the fields may be useful for diagnostics. |
| */ |
| union zip_ctl_cfg { |
| u64 u_reg64; |
| struct zip_ctl_cfg_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_52_63 : 12; |
| u64 ildf : 4; |
| u64 reserved_36_47 : 12; |
| u64 drtf : 4; |
| u64 reserved_27_31 : 5; |
| u64 stcf : 3; |
| u64 reserved_19_23 : 5; |
| u64 ldf : 3; |
| u64 reserved_2_15 : 14; |
| u64 busy : 1; |
| u64 reserved_0_0 : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 reserved_0_0 : 1; |
| u64 busy : 1; |
| u64 reserved_2_15 : 14; |
| u64 ldf : 3; |
| u64 reserved_19_23 : 5; |
| u64 stcf : 3; |
| u64 reserved_27_31 : 5; |
| u64 drtf : 4; |
| u64 reserved_36_47 : 12; |
| u64 ildf : 4; |
| u64 reserved_52_63 : 12; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_CTL_CFG 0x0560ull |
| |
| /** |
| * union zip_dbg_corex_inst - Represents the registers that reflect the status |
| * of the current instruction that the ZIP core is executing or has executed. |
| * |
| * These registers are only for debug use. |
| */ |
| union zip_dbg_corex_inst { |
| u64 u_reg64; |
| struct zip_dbg_corex_inst_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 busy : 1; |
| u64 reserved_35_62 : 28; |
| u64 qid : 3; |
| u64 iid : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 iid : 32; |
| u64 qid : 3; |
| u64 reserved_35_62 : 28; |
| u64 busy : 1; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_DBG_COREX_INST(u64 param1) |
| { |
| if (param1 <= 1) |
| return 0x0640ull + (param1 & 1) * 0x8ull; |
| pr_err("ZIP_DBG_COREX_INST: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_dbg_corex_sta - Represents registers that reflect the status of |
| * the zip cores. |
| * |
| * They are for debug use only. |
| */ |
| union zip_dbg_corex_sta { |
| u64 u_reg64; |
| struct zip_dbg_corex_sta_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 busy : 1; |
| u64 reserved_37_62 : 26; |
| u64 ist : 5; |
| u64 nie : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 nie : 32; |
| u64 ist : 5; |
| u64 reserved_37_62 : 26; |
| u64 busy : 1; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_DBG_COREX_STA(u64 param1) |
| { |
| if (param1 <= 1) |
| return 0x0680ull + (param1 & 1) * 0x8ull; |
| pr_err("ZIP_DBG_COREX_STA: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_dbg_quex_sta - Represets registers that reflect status of the zip |
| * instruction queues. |
| * |
| * They are for debug use only. |
| */ |
| union zip_dbg_quex_sta { |
| u64 u_reg64; |
| struct zip_dbg_quex_sta_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 busy : 1; |
| u64 reserved_56_62 : 7; |
| u64 rqwc : 24; |
| u64 nii : 32; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 nii : 32; |
| u64 rqwc : 24; |
| u64 reserved_56_62 : 7; |
| u64 busy : 1; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_DBG_QUEX_STA(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x1800ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_DBG_QUEX_STA: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_ecc_ctl - Represents the register that enables ECC for each |
| * individual internal memory that requires ECC. |
| * |
| * For debug purpose, it can also flip one or two bits in the ECC data. |
| */ |
| union zip_ecc_ctl { |
| u64 u_reg64; |
| struct zip_ecc_ctl_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_19_63 : 45; |
| u64 vmem_cdis : 1; |
| u64 vmem_fs : 2; |
| u64 reserved_15_15 : 1; |
| u64 idf1_cdis : 1; |
| u64 idf1_fs : 2; |
| u64 reserved_11_11 : 1; |
| u64 idf0_cdis : 1; |
| u64 idf0_fs : 2; |
| u64 reserved_7_7 : 1; |
| u64 gspf_cdis : 1; |
| u64 gspf_fs : 2; |
| u64 reserved_3_3 : 1; |
| u64 iqf_cdis : 1; |
| u64 iqf_fs : 2; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 iqf_fs : 2; |
| u64 iqf_cdis : 1; |
| u64 reserved_3_3 : 1; |
| u64 gspf_fs : 2; |
| u64 gspf_cdis : 1; |
| u64 reserved_7_7 : 1; |
| u64 idf0_fs : 2; |
| u64 idf0_cdis : 1; |
| u64 reserved_11_11 : 1; |
| u64 idf1_fs : 2; |
| u64 idf1_cdis : 1; |
| u64 reserved_15_15 : 1; |
| u64 vmem_fs : 2; |
| u64 vmem_cdis : 1; |
| u64 reserved_19_63 : 45; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_ECC_CTL 0x0568ull |
| |
| /* NCB - zip_ecce_ena_w1c */ |
| union zip_ecce_ena_w1c { |
| u64 u_reg64; |
| struct zip_ecce_ena_w1c_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_37_63 : 27; |
| u64 dbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 sbe : 5; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 sbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 dbe : 5; |
| u64 reserved_37_63 : 27; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_ECCE_ENA_W1C 0x0598ull |
| |
| /* NCB - zip_ecce_ena_w1s */ |
| union zip_ecce_ena_w1s { |
| u64 u_reg64; |
| struct zip_ecce_ena_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_37_63 : 27; |
| u64 dbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 sbe : 5; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 sbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 dbe : 5; |
| u64 reserved_37_63 : 27; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_ECCE_ENA_W1S 0x0590ull |
| |
| /** |
| * union zip_ecce_int - Represents the register that contains the status of the |
| * ECC interrupt sources. |
| */ |
| union zip_ecce_int { |
| u64 u_reg64; |
| struct zip_ecce_int_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_37_63 : 27; |
| u64 dbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 sbe : 5; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 sbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 dbe : 5; |
| u64 reserved_37_63 : 27; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_ECCE_INT 0x0580ull |
| |
| /* NCB - zip_ecce_int_w1s */ |
| union zip_ecce_int_w1s { |
| u64 u_reg64; |
| struct zip_ecce_int_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_37_63 : 27; |
| u64 dbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 sbe : 5; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 sbe : 5; |
| u64 reserved_5_31 : 27; |
| u64 dbe : 5; |
| u64 reserved_37_63 : 27; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_ECCE_INT_W1S 0x0588ull |
| |
| /* NCB - zip_fife_ena_w1c */ |
| union zip_fife_ena_w1c { |
| u64 u_reg64; |
| struct zip_fife_ena_w1c_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_42_63 : 22; |
| u64 asserts : 42; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 asserts : 42; |
| u64 reserved_42_63 : 22; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_FIFE_ENA_W1C 0x0090ull |
| |
| /* NCB - zip_fife_ena_w1s */ |
| union zip_fife_ena_w1s { |
| u64 u_reg64; |
| struct zip_fife_ena_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_42_63 : 22; |
| u64 asserts : 42; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 asserts : 42; |
| u64 reserved_42_63 : 22; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_FIFE_ENA_W1S 0x0088ull |
| |
| /* NCB - zip_fife_int */ |
| union zip_fife_int { |
| u64 u_reg64; |
| struct zip_fife_int_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_42_63 : 22; |
| u64 asserts : 42; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 asserts : 42; |
| u64 reserved_42_63 : 22; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_FIFE_INT 0x0078ull |
| |
| /* NCB - zip_fife_int_w1s */ |
| union zip_fife_int_w1s { |
| u64 u_reg64; |
| struct zip_fife_int_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_42_63 : 22; |
| u64 asserts : 42; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 asserts : 42; |
| u64 reserved_42_63 : 22; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_FIFE_INT_W1S 0x0080ull |
| |
| /** |
| * union zip_msix_pbax - Represents the register that is the MSI-X PBA table |
| * |
| * The bit number is indexed by the ZIP_INT_VEC_E enumeration. |
| */ |
| union zip_msix_pbax { |
| u64 u_reg64; |
| struct zip_msix_pbax_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 pend : 64; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 pend : 64; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_MSIX_PBAX(u64 param1) |
| { |
| if (param1 == 0) |
| return 0x0000838000FF0000ull; |
| pr_err("ZIP_MSIX_PBAX: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_msix_vecx_addr - Represents the register that is the MSI-X vector |
| * table, indexed by the ZIP_INT_VEC_E enumeration. |
| */ |
| union zip_msix_vecx_addr { |
| u64 u_reg64; |
| struct zip_msix_vecx_addr_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_49_63 : 15; |
| u64 addr : 47; |
| u64 reserved_1_1 : 1; |
| u64 secvec : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 secvec : 1; |
| u64 reserved_1_1 : 1; |
| u64 addr : 47; |
| u64 reserved_49_63 : 15; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_MSIX_VECX_ADDR(u64 param1) |
| { |
| if (param1 <= 17) |
| return 0x0000838000F00000ull + (param1 & 31) * 0x10ull; |
| pr_err("ZIP_MSIX_VECX_ADDR: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_msix_vecx_ctl - Represents the register that is the MSI-X vector |
| * table, indexed by the ZIP_INT_VEC_E enumeration. |
| */ |
| union zip_msix_vecx_ctl { |
| u64 u_reg64; |
| struct zip_msix_vecx_ctl_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_33_63 : 31; |
| u64 mask : 1; |
| u64 reserved_20_31 : 12; |
| u64 data : 20; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 data : 20; |
| u64 reserved_20_31 : 12; |
| u64 mask : 1; |
| u64 reserved_33_63 : 31; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_MSIX_VECX_CTL(u64 param1) |
| { |
| if (param1 <= 17) |
| return 0x0000838000F00008ull + (param1 & 31) * 0x10ull; |
| pr_err("ZIP_MSIX_VECX_CTL: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_done - Represents the registers that contain the per-queue |
| * instruction done count. |
| */ |
| union zip_quex_done { |
| u64 u_reg64; |
| struct zip_quex_done_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_20_63 : 44; |
| u64 done : 20; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 done : 20; |
| u64 reserved_20_63 : 44; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DONE(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x2000ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DONE: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_done_ack - Represents the registers on write to which will |
| * decrement the per-queue instructiona done count. |
| */ |
| union zip_quex_done_ack { |
| u64 u_reg64; |
| struct zip_quex_done_ack_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_20_63 : 44; |
| u64 done_ack : 20; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 done_ack : 20; |
| u64 reserved_20_63 : 44; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DONE_ACK(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x2200ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DONE_ACK: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_done_ena_w1c - Represents the register which when written |
| * 1 to will disable the DONEINT interrupt for the queue. |
| */ |
| union zip_quex_done_ena_w1c { |
| u64 u_reg64; |
| struct zip_quex_done_ena_w1c_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_1_63 : 63; |
| u64 done_ena : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 done_ena : 1; |
| u64 reserved_1_63 : 63; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DONE_ENA_W1C(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x2600ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DONE_ENA_W1C: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_done_ena_w1s - Represents the register that when written 1 to |
| * will enable the DONEINT interrupt for the queue. |
| */ |
| union zip_quex_done_ena_w1s { |
| u64 u_reg64; |
| struct zip_quex_done_ena_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_1_63 : 63; |
| u64 done_ena : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 done_ena : 1; |
| u64 reserved_1_63 : 63; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DONE_ENA_W1S(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x2400ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DONE_ENA_W1S: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_done_wait - Represents the register that specifies the per |
| * queue interrupt coalescing settings. |
| */ |
| union zip_quex_done_wait { |
| u64 u_reg64; |
| struct zip_quex_done_wait_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_48_63 : 16; |
| u64 time_wait : 16; |
| u64 reserved_20_31 : 12; |
| u64 num_wait : 20; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 num_wait : 20; |
| u64 reserved_20_31 : 12; |
| u64 time_wait : 16; |
| u64 reserved_48_63 : 16; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DONE_WAIT(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x2800ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DONE_WAIT: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_doorbell - Represents doorbell registers for the ZIP |
| * instruction queues. |
| */ |
| union zip_quex_doorbell { |
| u64 u_reg64; |
| struct zip_quex_doorbell_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_20_63 : 44; |
| u64 dbell_cnt : 20; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 dbell_cnt : 20; |
| u64 reserved_20_63 : 44; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_DOORBELL(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x4000ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_DOORBELL: %llu\n", param1); |
| return 0; |
| } |
| |
| union zip_quex_err_ena_w1c { |
| u64 u_reg64; |
| struct zip_quex_err_ena_w1c_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_5_63 : 59; |
| u64 mdbe : 1; |
| u64 nwrp : 1; |
| u64 nrrp : 1; |
| u64 irde : 1; |
| u64 dovf : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 dovf : 1; |
| u64 irde : 1; |
| u64 nrrp : 1; |
| u64 nwrp : 1; |
| u64 mdbe : 1; |
| u64 reserved_5_63 : 59; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_ERR_ENA_W1C(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x3600ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_ERR_ENA_W1C: %llu\n", param1); |
| return 0; |
| } |
| |
| union zip_quex_err_ena_w1s { |
| u64 u_reg64; |
| struct zip_quex_err_ena_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_5_63 : 59; |
| u64 mdbe : 1; |
| u64 nwrp : 1; |
| u64 nrrp : 1; |
| u64 irde : 1; |
| u64 dovf : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 dovf : 1; |
| u64 irde : 1; |
| u64 nrrp : 1; |
| u64 nwrp : 1; |
| u64 mdbe : 1; |
| u64 reserved_5_63 : 59; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_ERR_ENA_W1S(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x3400ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_ERR_ENA_W1S: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_err_int - Represents registers that contain the per-queue |
| * error interrupts. |
| */ |
| union zip_quex_err_int { |
| u64 u_reg64; |
| struct zip_quex_err_int_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_5_63 : 59; |
| u64 mdbe : 1; |
| u64 nwrp : 1; |
| u64 nrrp : 1; |
| u64 irde : 1; |
| u64 dovf : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 dovf : 1; |
| u64 irde : 1; |
| u64 nrrp : 1; |
| u64 nwrp : 1; |
| u64 mdbe : 1; |
| u64 reserved_5_63 : 59; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_ERR_INT(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x3000ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_ERR_INT: %llu\n", param1); |
| return 0; |
| } |
| |
| /* NCB - zip_que#_err_int_w1s */ |
| union zip_quex_err_int_w1s { |
| u64 u_reg64; |
| struct zip_quex_err_int_w1s_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_5_63 : 59; |
| u64 mdbe : 1; |
| u64 nwrp : 1; |
| u64 nrrp : 1; |
| u64 irde : 1; |
| u64 dovf : 1; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 dovf : 1; |
| u64 irde : 1; |
| u64 nrrp : 1; |
| u64 nwrp : 1; |
| u64 mdbe : 1; |
| u64 reserved_5_63 : 59; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_ERR_INT_W1S(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x3200ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_ERR_INT_W1S: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_gcfg - Represents the registers that reflect status of the |
| * zip instruction queues,debug use only. |
| */ |
| union zip_quex_gcfg { |
| u64 u_reg64; |
| struct zip_quex_gcfg_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_4_63 : 60; |
| u64 iqb_ldwb : 1; |
| u64 cbw_sty : 1; |
| u64 l2ld_cmd : 2; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 l2ld_cmd : 2; |
| u64 cbw_sty : 1; |
| u64 iqb_ldwb : 1; |
| u64 reserved_4_63 : 60; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_GCFG(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x1A00ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_GCFG: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_map - Represents the registers that control how each |
| * instruction queue maps to zip cores. |
| */ |
| union zip_quex_map { |
| u64 u_reg64; |
| struct zip_quex_map_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_2_63 : 62; |
| u64 zce : 2; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 zce : 2; |
| u64 reserved_2_63 : 62; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_MAP(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x1400ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_MAP: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_sbuf_addr - Represents the registers that set the buffer |
| * parameters for the instruction queues. |
| * |
| * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite |
| * this register to effectively reset the command buffer state machine. |
| * These registers must be programmed after SW programs the corresponding |
| * ZIP_QUE(0..7)_SBUF_CTL. |
| */ |
| union zip_quex_sbuf_addr { |
| u64 u_reg64; |
| struct zip_quex_sbuf_addr_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_49_63 : 15; |
| u64 ptr : 42; |
| u64 off : 7; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 off : 7; |
| u64 ptr : 42; |
| u64 reserved_49_63 : 15; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_SBUF_ADDR(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x1000ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_SBUF_ADDR: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_quex_sbuf_ctl - Represents the registers that set the buffer |
| * parameters for the instruction queues. |
| * |
| * When quiescent (i.e. outstanding doorbell count is 0), it is safe to rewrite |
| * this register to effectively reset the command buffer state machine. |
| * These registers must be programmed before SW programs the corresponding |
| * ZIP_QUE(0..7)_SBUF_ADDR. |
| */ |
| union zip_quex_sbuf_ctl { |
| u64 u_reg64; |
| struct zip_quex_sbuf_ctl_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_45_63 : 19; |
| u64 size : 13; |
| u64 inst_be : 1; |
| u64 reserved_24_30 : 7; |
| u64 stream_id : 8; |
| u64 reserved_12_15 : 4; |
| u64 aura : 12; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 aura : 12; |
| u64 reserved_12_15 : 4; |
| u64 stream_id : 8; |
| u64 reserved_24_30 : 7; |
| u64 inst_be : 1; |
| u64 size : 13; |
| u64 reserved_45_63 : 19; |
| #endif |
| } s; |
| }; |
| |
| static inline u64 ZIP_QUEX_SBUF_CTL(u64 param1) |
| { |
| if (param1 <= 7) |
| return 0x1200ull + (param1 & 7) * 0x8ull; |
| pr_err("ZIP_QUEX_SBUF_CTL: %llu\n", param1); |
| return 0; |
| } |
| |
| /** |
| * union zip_que_ena - Represents queue enable register |
| * |
| * If a queue is disabled, ZIP_CTL stops fetching instructions from the queue. |
| */ |
| union zip_que_ena { |
| u64 u_reg64; |
| struct zip_que_ena_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_8_63 : 56; |
| u64 ena : 8; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 ena : 8; |
| u64 reserved_8_63 : 56; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_QUE_ENA 0x0500ull |
| |
| /** |
| * union zip_que_pri - Represents the register that defines the priority |
| * between instruction queues. |
| */ |
| union zip_que_pri { |
| u64 u_reg64; |
| struct zip_que_pri_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_8_63 : 56; |
| u64 pri : 8; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 pri : 8; |
| u64 reserved_8_63 : 56; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_QUE_PRI 0x0508ull |
| |
| /** |
| * union zip_throttle - Represents the register that controls the maximum |
| * number of in-flight X2I data fetch transactions. |
| * |
| * Writing 0 to this register causes the ZIP module to temporarily suspend NCB |
| * accesses; it is not recommended for normal operation, but may be useful for |
| * diagnostics. |
| */ |
| union zip_throttle { |
| u64 u_reg64; |
| struct zip_throttle_s { |
| #if defined(__BIG_ENDIAN_BITFIELD) |
| u64 reserved_6_63 : 58; |
| u64 ld_infl : 6; |
| #elif defined(__LITTLE_ENDIAN_BITFIELD) |
| u64 ld_infl : 6; |
| u64 reserved_6_63 : 58; |
| #endif |
| } s; |
| }; |
| |
| #define ZIP_THROTTLE 0x0010ull |
| |
| #endif /* _CSRS_ZIP__ */ |