Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright (c) 2003-2016 Cavium Inc.
0003  *
0004  * This file is free software; you can redistribute it and/or modify
0005  * it under the terms of the GNU General Public License, Version 2, as
0006  * published by the Free Software Foundation.
0007  *
0008  * This file is distributed in the hope that it will be useful, but
0009  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
0010  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
0011  * NONINFRINGEMENT.  See the GNU General Public License for more
0012  * details.
0013  *
0014  */
0015 
0016 #ifndef __CVMX_CIU3_DEFS_H__
0017 #define __CVMX_CIU3_DEFS_H__
0018 
0019 #define CVMX_CIU3_FUSE CVMX_ADD_IO_SEG(0x00010100000001A0ull)
0020 #define CVMX_CIU3_BIST CVMX_ADD_IO_SEG(0x00010100000001C0ull)
0021 #define CVMX_CIU3_CONST CVMX_ADD_IO_SEG(0x0001010000000220ull)
0022 #define CVMX_CIU3_CTL CVMX_ADD_IO_SEG(0x00010100000000E0ull)
0023 #define CVMX_CIU3_DESTX_IO_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000210000ull) + ((offset) & 7) * 8)
0024 #define CVMX_CIU3_DESTX_PP_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000200000ull) + ((offset) & 255) * 8)
0025 #define CVMX_CIU3_GSTOP CVMX_ADD_IO_SEG(0x0001010000000140ull)
0026 #define CVMX_CIU3_IDTX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010000110000ull) + ((offset) & 255) * 8)
0027 #define CVMX_CIU3_IDTX_IO(offset) (CVMX_ADD_IO_SEG(0x0001010000130000ull) + ((offset) & 255) * 8)
0028 #define CVMX_CIU3_IDTX_PPX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001010000120000ull) + ((block_id) & 255) * 0x20ull)
0029 #define CVMX_CIU3_INTR_RAM_ECC_CTL CVMX_ADD_IO_SEG(0x0001010000000260ull)
0030 #define CVMX_CIU3_INTR_RAM_ECC_ST CVMX_ADD_IO_SEG(0x0001010000000280ull)
0031 #define CVMX_CIU3_INTR_READY CVMX_ADD_IO_SEG(0x00010100000002A0ull)
0032 #define CVMX_CIU3_INTR_SLOWDOWN CVMX_ADD_IO_SEG(0x0001010000000240ull)
0033 #define CVMX_CIU3_ISCX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010080000000ull) + ((offset) & 1048575) * 8)
0034 #define CVMX_CIU3_ISCX_W1C(offset) (CVMX_ADD_IO_SEG(0x0001010090000000ull) + ((offset) & 1048575) * 8)
0035 #define CVMX_CIU3_ISCX_W1S(offset) (CVMX_ADD_IO_SEG(0x00010100A0000000ull) + ((offset) & 1048575) * 8)
0036 #define CVMX_CIU3_NMI CVMX_ADD_IO_SEG(0x0001010000000160ull)
0037 #define CVMX_CIU3_SISCX(offset) (CVMX_ADD_IO_SEG(0x0001010000220000ull) + ((offset) & 255) * 8)
0038 #define CVMX_CIU3_TIMX(offset) (CVMX_ADD_IO_SEG(0x0001010000010000ull) + ((offset) & 15) * 8)
0039 
0040 union cvmx_ciu3_bist {
0041     uint64_t u64;
0042     struct cvmx_ciu3_bist_s {
0043 #ifdef __BIG_ENDIAN_BITFIELD
0044     uint64_t reserved_9_63                : 55;
0045     uint64_t bist                         : 9;
0046 #else
0047     uint64_t bist                         : 9;
0048     uint64_t reserved_9_63                : 55;
0049 #endif
0050     } s;
0051 };
0052 
0053 union cvmx_ciu3_const {
0054     uint64_t u64;
0055     struct cvmx_ciu3_const_s {
0056 #ifdef __BIG_ENDIAN_BITFIELD
0057     uint64_t dests_io                     : 16;
0058     uint64_t pintsn                       : 16;
0059     uint64_t dests_pp                     : 16;
0060     uint64_t idt                          : 16;
0061 #else
0062     uint64_t idt                          : 16;
0063     uint64_t dests_pp                     : 16;
0064     uint64_t pintsn                       : 16;
0065     uint64_t dests_io                     : 16;
0066 #endif
0067     } s;
0068 };
0069 
0070 union cvmx_ciu3_ctl {
0071     uint64_t u64;
0072     struct cvmx_ciu3_ctl_s {
0073 #ifdef __BIG_ENDIAN_BITFIELD
0074     uint64_t reserved_5_63                : 59;
0075     uint64_t mcd_sel                      : 2;
0076     uint64_t iscmem_le                    : 1;
0077     uint64_t seq_dis                      : 1;
0078     uint64_t cclk_dis                     : 1;
0079 #else
0080     uint64_t cclk_dis                     : 1;
0081     uint64_t seq_dis                      : 1;
0082     uint64_t iscmem_le                    : 1;
0083     uint64_t mcd_sel                      : 2;
0084     uint64_t reserved_5_63                : 59;
0085 #endif
0086     } s;
0087 };
0088 
0089 union cvmx_ciu3_destx_io_int {
0090     uint64_t u64;
0091     struct cvmx_ciu3_destx_io_int_s {
0092 #ifdef __BIG_ENDIAN_BITFIELD
0093     uint64_t reserved_52_63               : 12;
0094     uint64_t intsn                        : 20;
0095     uint64_t reserved_10_31               : 22;
0096     uint64_t intidt                       : 8;
0097     uint64_t newint                       : 1;
0098     uint64_t intr                         : 1;
0099 #else
0100     uint64_t intr                         : 1;
0101     uint64_t newint                       : 1;
0102     uint64_t intidt                       : 8;
0103     uint64_t reserved_10_31               : 22;
0104     uint64_t intsn                        : 20;
0105     uint64_t reserved_52_63               : 12;
0106 #endif
0107     } s;
0108 };
0109 
0110 union cvmx_ciu3_destx_pp_int {
0111     uint64_t u64;
0112     struct cvmx_ciu3_destx_pp_int_s {
0113 #ifdef __BIG_ENDIAN_BITFIELD
0114     uint64_t reserved_52_63               : 12;
0115     uint64_t intsn                        : 20;
0116     uint64_t reserved_10_31               : 22;
0117     uint64_t intidt                       : 8;
0118     uint64_t newint                       : 1;
0119     uint64_t intr                         : 1;
0120 #else
0121     uint64_t intr                         : 1;
0122     uint64_t newint                       : 1;
0123     uint64_t intidt                       : 8;
0124     uint64_t reserved_10_31               : 22;
0125     uint64_t intsn                        : 20;
0126     uint64_t reserved_52_63               : 12;
0127 #endif
0128     } s;
0129 };
0130 
0131 union cvmx_ciu3_gstop {
0132     uint64_t u64;
0133     struct cvmx_ciu3_gstop_s {
0134 #ifdef __BIG_ENDIAN_BITFIELD
0135     uint64_t reserved_1_63                : 63;
0136     uint64_t gstop                        : 1;
0137 #else
0138     uint64_t gstop                        : 1;
0139     uint64_t reserved_1_63                : 63;
0140 #endif
0141     } s;
0142 };
0143 
0144 union cvmx_ciu3_idtx_ctl {
0145     uint64_t u64;
0146     struct cvmx_ciu3_idtx_ctl_s {
0147 #ifdef __BIG_ENDIAN_BITFIELD
0148     uint64_t reserved_52_63               : 12;
0149     uint64_t intsn                        : 20;
0150     uint64_t reserved_4_31                : 28;
0151     uint64_t intr                         : 1;
0152     uint64_t newint                       : 1;
0153     uint64_t ip_num                       : 2;
0154 #else
0155     uint64_t ip_num                       : 2;
0156     uint64_t newint                       : 1;
0157     uint64_t intr                         : 1;
0158     uint64_t reserved_4_31                : 28;
0159     uint64_t intsn                        : 20;
0160     uint64_t reserved_52_63               : 12;
0161 #endif
0162     } s;
0163 };
0164 
0165 union cvmx_ciu3_idtx_io {
0166     uint64_t u64;
0167     struct cvmx_ciu3_idtx_io_s {
0168 #ifdef __BIG_ENDIAN_BITFIELD
0169     uint64_t reserved_5_63                : 59;
0170     uint64_t io                           : 5;
0171 #else
0172     uint64_t io                           : 5;
0173     uint64_t reserved_5_63                : 59;
0174 #endif
0175     } s;
0176 };
0177 
0178 union cvmx_ciu3_idtx_ppx {
0179     uint64_t u64;
0180     struct cvmx_ciu3_idtx_ppx_s {
0181 #ifdef __BIG_ENDIAN_BITFIELD
0182     uint64_t reserved_48_63               : 16;
0183     uint64_t pp                           : 48;
0184 #else
0185     uint64_t pp                           : 48;
0186     uint64_t reserved_48_63               : 16;
0187 #endif
0188     } s;
0189 };
0190 
0191 union cvmx_ciu3_intr_ram_ecc_ctl {
0192     uint64_t u64;
0193     struct cvmx_ciu3_intr_ram_ecc_ctl_s {
0194 #ifdef __BIG_ENDIAN_BITFIELD
0195     uint64_t reserved_3_63                : 61;
0196     uint64_t flip_synd                    : 2;
0197     uint64_t ecc_ena                      : 1;
0198 #else
0199     uint64_t ecc_ena                      : 1;
0200     uint64_t flip_synd                    : 2;
0201     uint64_t reserved_3_63                : 61;
0202 #endif
0203     } s;
0204 };
0205 
0206 union cvmx_ciu3_intr_ram_ecc_st {
0207     uint64_t u64;
0208     struct cvmx_ciu3_intr_ram_ecc_st_s {
0209 #ifdef __BIG_ENDIAN_BITFIELD
0210     uint64_t reserved_52_63               : 12;
0211     uint64_t addr                         : 20;
0212     uint64_t reserved_6_31                : 26;
0213     uint64_t sisc_dbe                     : 1;
0214     uint64_t sisc_sbe                     : 1;
0215     uint64_t idt_dbe                      : 1;
0216     uint64_t idt_sbe                      : 1;
0217     uint64_t isc_dbe                      : 1;
0218     uint64_t isc_sbe                      : 1;
0219 #else
0220     uint64_t isc_sbe                      : 1;
0221     uint64_t isc_dbe                      : 1;
0222     uint64_t idt_sbe                      : 1;
0223     uint64_t idt_dbe                      : 1;
0224     uint64_t sisc_sbe                     : 1;
0225     uint64_t sisc_dbe                     : 1;
0226     uint64_t reserved_6_31                : 26;
0227     uint64_t addr                         : 20;
0228     uint64_t reserved_52_63               : 12;
0229 #endif
0230     } s;
0231 };
0232 
0233 union cvmx_ciu3_intr_ready {
0234     uint64_t u64;
0235     struct cvmx_ciu3_intr_ready_s {
0236 #ifdef __BIG_ENDIAN_BITFIELD
0237     uint64_t reserved_46_63               : 18;
0238     uint64_t index                        : 14;
0239     uint64_t reserved_1_31                : 31;
0240     uint64_t ready                        : 1;
0241 #else
0242     uint64_t ready                        : 1;
0243     uint64_t reserved_1_31                : 31;
0244     uint64_t index                        : 14;
0245     uint64_t reserved_46_63               : 18;
0246 #endif
0247     } s;
0248 };
0249 
0250 union cvmx_ciu3_intr_slowdown {
0251     uint64_t u64;
0252     struct cvmx_ciu3_intr_slowdown_s {
0253 #ifdef __BIG_ENDIAN_BITFIELD
0254     uint64_t reserved_3_63                : 61;
0255     uint64_t ctl                          : 3;
0256 #else
0257     uint64_t ctl                          : 3;
0258     uint64_t reserved_3_63                : 61;
0259 #endif
0260     } s;
0261 };
0262 
0263 union cvmx_ciu3_iscx_ctl {
0264     uint64_t u64;
0265     struct cvmx_ciu3_iscx_ctl_s {
0266 #ifdef __BIG_ENDIAN_BITFIELD
0267     uint64_t reserved_24_63               : 40;
0268     uint64_t idt                          : 8;
0269     uint64_t imp                          : 1;
0270     uint64_t reserved_2_14                : 13;
0271     uint64_t en                           : 1;
0272     uint64_t raw                          : 1;
0273 #else
0274     uint64_t raw                          : 1;
0275     uint64_t en                           : 1;
0276     uint64_t reserved_2_14                : 13;
0277     uint64_t imp                          : 1;
0278     uint64_t idt                          : 8;
0279     uint64_t reserved_24_63               : 40;
0280 #endif
0281     } s;
0282 };
0283 
0284 union cvmx_ciu3_iscx_w1c {
0285     uint64_t u64;
0286     struct cvmx_ciu3_iscx_w1c_s {
0287 #ifdef __BIG_ENDIAN_BITFIELD
0288     uint64_t reserved_2_63                : 62;
0289     uint64_t en                           : 1;
0290     uint64_t raw                          : 1;
0291 #else
0292     uint64_t raw                          : 1;
0293     uint64_t en                           : 1;
0294     uint64_t reserved_2_63                : 62;
0295 #endif
0296     } s;
0297 };
0298 
0299 union cvmx_ciu3_iscx_w1s {
0300     uint64_t u64;
0301     struct cvmx_ciu3_iscx_w1s_s {
0302 #ifdef __BIG_ENDIAN_BITFIELD
0303     uint64_t reserved_2_63                : 62;
0304     uint64_t en                           : 1;
0305     uint64_t raw                          : 1;
0306 #else
0307     uint64_t raw                          : 1;
0308     uint64_t en                           : 1;
0309     uint64_t reserved_2_63                : 62;
0310 #endif
0311     } s;
0312 };
0313 
0314 union cvmx_ciu3_nmi {
0315     uint64_t u64;
0316     struct cvmx_ciu3_nmi_s {
0317 #ifdef __BIG_ENDIAN_BITFIELD
0318     uint64_t reserved_48_63               : 16;
0319     uint64_t nmi                          : 48;
0320 #else
0321     uint64_t nmi                          : 48;
0322     uint64_t reserved_48_63               : 16;
0323 #endif
0324     } s;
0325 };
0326 
0327 union cvmx_ciu3_siscx {
0328     uint64_t u64;
0329     struct cvmx_ciu3_siscx_s {
0330 #ifdef __BIG_ENDIAN_BITFIELD
0331     uint64_t en                           : 64;
0332 #else
0333     uint64_t en                           : 64;
0334 #endif
0335     } s;
0336 };
0337 
0338 union cvmx_ciu3_timx {
0339     uint64_t u64;
0340     struct cvmx_ciu3_timx_s {
0341 #ifdef __BIG_ENDIAN_BITFIELD
0342     uint64_t reserved_37_63               : 27;
0343     uint64_t one_shot                     : 1;
0344     uint64_t len                          : 36;
0345 #else
0346     uint64_t len                          : 36;
0347     uint64_t one_shot                     : 1;
0348     uint64_t reserved_37_63               : 27;
0349 #endif
0350     } s;
0351 };
0352 
0353 #endif