root/drivers/crypto/cavium/zip/zip_regs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ZIP_COREX_BIST_STATUS
  2. ZIP_DBG_COREX_INST
  3. ZIP_DBG_COREX_STA
  4. ZIP_DBG_QUEX_STA
  5. ZIP_MSIX_PBAX
  6. ZIP_MSIX_VECX_ADDR
  7. ZIP_MSIX_VECX_CTL
  8. ZIP_QUEX_DONE
  9. ZIP_QUEX_DONE_ACK
  10. ZIP_QUEX_DONE_ENA_W1C
  11. ZIP_QUEX_DONE_ENA_W1S
  12. ZIP_QUEX_DONE_WAIT
  13. ZIP_QUEX_DOORBELL
  14. ZIP_QUEX_ERR_ENA_W1C
  15. ZIP_QUEX_ERR_ENA_W1S
  16. ZIP_QUEX_ERR_INT
  17. ZIP_QUEX_ERR_INT_W1S
  18. ZIP_QUEX_GCFG
  19. ZIP_QUEX_MAP
  20. ZIP_QUEX_SBUF_ADDR
  21. ZIP_QUEX_SBUF_CTL

   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  */
 101 enum 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  */
 128 union 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  */
 147 union 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  */
 173 union 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  */
 275 union 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  */
 293 union 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  */
 328 union 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  */
 375 union 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  */
 397 union 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  */
 431 union 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 
 444 static 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  */
 460 union 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  */
 482 union 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  */
 521 union 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 
 538 static 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  */
 552 union 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 
 569 static 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  */
 583 union 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 
 600 static 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  */
 614 union 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 */
 656 union 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 */
 676 union 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  */
 699 union 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 */
 719 union 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 */
 739 union 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 */
 755 union 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 */
 771 union 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 */
 787 union 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  */
 807 union 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 
 818 static 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  */
 830 union 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 
 847 static 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  */
 859 union 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 
 876 static 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  */
 888 union 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 
 901 static 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  */
 913 union 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 
 926 static 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  */
 938 union 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 
 951 static 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  */
 963 union 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 
 976 static 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  */
 988 union 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 
1005 static 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  */
1017 union 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 
1030 static 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 
1038 union 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 
1059 static 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 
1067 union 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 
1088 static 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  */
1100 union 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 
1121 static 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 */
1130 union 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 
1151 static 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  */
1163 union 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 
1180 static 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  */
1192 union 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 
1205 static 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  */
1222 union 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 
1237 static 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  */
1254 union 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 
1277 static 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  */
1290 union 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  */
1309 union 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  */
1332 union 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__ */

/* [<][>][^][v][top][bottom][index][help] */