1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2003-2016 Cavium Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * This file is free software; you can redistribute it and/or modify 5*4882a593Smuzhiyun * it under the terms of the GNU General Public License, Version 2, as 6*4882a593Smuzhiyun * published by the Free Software Foundation. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful, but 9*4882a593Smuzhiyun * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty 10*4882a593Smuzhiyun * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or 11*4882a593Smuzhiyun * NONINFRINGEMENT. See the GNU General Public License for more 12*4882a593Smuzhiyun * details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #ifndef __CVMX_CIU3_DEFS_H__ 17*4882a593Smuzhiyun #define __CVMX_CIU3_DEFS_H__ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define CVMX_CIU3_FUSE CVMX_ADD_IO_SEG(0x00010100000001A0ull) 20*4882a593Smuzhiyun #define CVMX_CIU3_BIST CVMX_ADD_IO_SEG(0x00010100000001C0ull) 21*4882a593Smuzhiyun #define CVMX_CIU3_CONST CVMX_ADD_IO_SEG(0x0001010000000220ull) 22*4882a593Smuzhiyun #define CVMX_CIU3_CTL CVMX_ADD_IO_SEG(0x00010100000000E0ull) 23*4882a593Smuzhiyun #define CVMX_CIU3_DESTX_IO_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000210000ull) + ((offset) & 7) * 8) 24*4882a593Smuzhiyun #define CVMX_CIU3_DESTX_PP_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000200000ull) + ((offset) & 255) * 8) 25*4882a593Smuzhiyun #define CVMX_CIU3_GSTOP CVMX_ADD_IO_SEG(0x0001010000000140ull) 26*4882a593Smuzhiyun #define CVMX_CIU3_IDTX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010000110000ull) + ((offset) & 255) * 8) 27*4882a593Smuzhiyun #define CVMX_CIU3_IDTX_IO(offset) (CVMX_ADD_IO_SEG(0x0001010000130000ull) + ((offset) & 255) * 8) 28*4882a593Smuzhiyun #define CVMX_CIU3_IDTX_PPX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001010000120000ull) + ((block_id) & 255) * 0x20ull) 29*4882a593Smuzhiyun #define CVMX_CIU3_INTR_RAM_ECC_CTL CVMX_ADD_IO_SEG(0x0001010000000260ull) 30*4882a593Smuzhiyun #define CVMX_CIU3_INTR_RAM_ECC_ST CVMX_ADD_IO_SEG(0x0001010000000280ull) 31*4882a593Smuzhiyun #define CVMX_CIU3_INTR_READY CVMX_ADD_IO_SEG(0x00010100000002A0ull) 32*4882a593Smuzhiyun #define CVMX_CIU3_INTR_SLOWDOWN CVMX_ADD_IO_SEG(0x0001010000000240ull) 33*4882a593Smuzhiyun #define CVMX_CIU3_ISCX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010080000000ull) + ((offset) & 1048575) * 8) 34*4882a593Smuzhiyun #define CVMX_CIU3_ISCX_W1C(offset) (CVMX_ADD_IO_SEG(0x0001010090000000ull) + ((offset) & 1048575) * 8) 35*4882a593Smuzhiyun #define CVMX_CIU3_ISCX_W1S(offset) (CVMX_ADD_IO_SEG(0x00010100A0000000ull) + ((offset) & 1048575) * 8) 36*4882a593Smuzhiyun #define CVMX_CIU3_NMI CVMX_ADD_IO_SEG(0x0001010000000160ull) 37*4882a593Smuzhiyun #define CVMX_CIU3_SISCX(offset) (CVMX_ADD_IO_SEG(0x0001010000220000ull) + ((offset) & 255) * 8) 38*4882a593Smuzhiyun #define CVMX_CIU3_TIMX(offset) (CVMX_ADD_IO_SEG(0x0001010000010000ull) + ((offset) & 15) * 8) 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun union cvmx_ciu3_bist { 41*4882a593Smuzhiyun uint64_t u64; 42*4882a593Smuzhiyun struct cvmx_ciu3_bist_s { 43*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 44*4882a593Smuzhiyun uint64_t reserved_9_63 : 55; 45*4882a593Smuzhiyun uint64_t bist : 9; 46*4882a593Smuzhiyun #else 47*4882a593Smuzhiyun uint64_t bist : 9; 48*4882a593Smuzhiyun uint64_t reserved_9_63 : 55; 49*4882a593Smuzhiyun #endif 50*4882a593Smuzhiyun } s; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun union cvmx_ciu3_const { 54*4882a593Smuzhiyun uint64_t u64; 55*4882a593Smuzhiyun struct cvmx_ciu3_const_s { 56*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 57*4882a593Smuzhiyun uint64_t dests_io : 16; 58*4882a593Smuzhiyun uint64_t pintsn : 16; 59*4882a593Smuzhiyun uint64_t dests_pp : 16; 60*4882a593Smuzhiyun uint64_t idt : 16; 61*4882a593Smuzhiyun #else 62*4882a593Smuzhiyun uint64_t idt : 16; 63*4882a593Smuzhiyun uint64_t dests_pp : 16; 64*4882a593Smuzhiyun uint64_t pintsn : 16; 65*4882a593Smuzhiyun uint64_t dests_io : 16; 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun } s; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun union cvmx_ciu3_ctl { 71*4882a593Smuzhiyun uint64_t u64; 72*4882a593Smuzhiyun struct cvmx_ciu3_ctl_s { 73*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 74*4882a593Smuzhiyun uint64_t reserved_5_63 : 59; 75*4882a593Smuzhiyun uint64_t mcd_sel : 2; 76*4882a593Smuzhiyun uint64_t iscmem_le : 1; 77*4882a593Smuzhiyun uint64_t seq_dis : 1; 78*4882a593Smuzhiyun uint64_t cclk_dis : 1; 79*4882a593Smuzhiyun #else 80*4882a593Smuzhiyun uint64_t cclk_dis : 1; 81*4882a593Smuzhiyun uint64_t seq_dis : 1; 82*4882a593Smuzhiyun uint64_t iscmem_le : 1; 83*4882a593Smuzhiyun uint64_t mcd_sel : 2; 84*4882a593Smuzhiyun uint64_t reserved_5_63 : 59; 85*4882a593Smuzhiyun #endif 86*4882a593Smuzhiyun } s; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun union cvmx_ciu3_destx_io_int { 90*4882a593Smuzhiyun uint64_t u64; 91*4882a593Smuzhiyun struct cvmx_ciu3_destx_io_int_s { 92*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 93*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 94*4882a593Smuzhiyun uint64_t intsn : 20; 95*4882a593Smuzhiyun uint64_t reserved_10_31 : 22; 96*4882a593Smuzhiyun uint64_t intidt : 8; 97*4882a593Smuzhiyun uint64_t newint : 1; 98*4882a593Smuzhiyun uint64_t intr : 1; 99*4882a593Smuzhiyun #else 100*4882a593Smuzhiyun uint64_t intr : 1; 101*4882a593Smuzhiyun uint64_t newint : 1; 102*4882a593Smuzhiyun uint64_t intidt : 8; 103*4882a593Smuzhiyun uint64_t reserved_10_31 : 22; 104*4882a593Smuzhiyun uint64_t intsn : 20; 105*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 106*4882a593Smuzhiyun #endif 107*4882a593Smuzhiyun } s; 108*4882a593Smuzhiyun }; 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun union cvmx_ciu3_destx_pp_int { 111*4882a593Smuzhiyun uint64_t u64; 112*4882a593Smuzhiyun struct cvmx_ciu3_destx_pp_int_s { 113*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 114*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 115*4882a593Smuzhiyun uint64_t intsn : 20; 116*4882a593Smuzhiyun uint64_t reserved_10_31 : 22; 117*4882a593Smuzhiyun uint64_t intidt : 8; 118*4882a593Smuzhiyun uint64_t newint : 1; 119*4882a593Smuzhiyun uint64_t intr : 1; 120*4882a593Smuzhiyun #else 121*4882a593Smuzhiyun uint64_t intr : 1; 122*4882a593Smuzhiyun uint64_t newint : 1; 123*4882a593Smuzhiyun uint64_t intidt : 8; 124*4882a593Smuzhiyun uint64_t reserved_10_31 : 22; 125*4882a593Smuzhiyun uint64_t intsn : 20; 126*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 127*4882a593Smuzhiyun #endif 128*4882a593Smuzhiyun } s; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun union cvmx_ciu3_gstop { 132*4882a593Smuzhiyun uint64_t u64; 133*4882a593Smuzhiyun struct cvmx_ciu3_gstop_s { 134*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 135*4882a593Smuzhiyun uint64_t reserved_1_63 : 63; 136*4882a593Smuzhiyun uint64_t gstop : 1; 137*4882a593Smuzhiyun #else 138*4882a593Smuzhiyun uint64_t gstop : 1; 139*4882a593Smuzhiyun uint64_t reserved_1_63 : 63; 140*4882a593Smuzhiyun #endif 141*4882a593Smuzhiyun } s; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun union cvmx_ciu3_idtx_ctl { 145*4882a593Smuzhiyun uint64_t u64; 146*4882a593Smuzhiyun struct cvmx_ciu3_idtx_ctl_s { 147*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 148*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 149*4882a593Smuzhiyun uint64_t intsn : 20; 150*4882a593Smuzhiyun uint64_t reserved_4_31 : 28; 151*4882a593Smuzhiyun uint64_t intr : 1; 152*4882a593Smuzhiyun uint64_t newint : 1; 153*4882a593Smuzhiyun uint64_t ip_num : 2; 154*4882a593Smuzhiyun #else 155*4882a593Smuzhiyun uint64_t ip_num : 2; 156*4882a593Smuzhiyun uint64_t newint : 1; 157*4882a593Smuzhiyun uint64_t intr : 1; 158*4882a593Smuzhiyun uint64_t reserved_4_31 : 28; 159*4882a593Smuzhiyun uint64_t intsn : 20; 160*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 161*4882a593Smuzhiyun #endif 162*4882a593Smuzhiyun } s; 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun union cvmx_ciu3_idtx_io { 166*4882a593Smuzhiyun uint64_t u64; 167*4882a593Smuzhiyun struct cvmx_ciu3_idtx_io_s { 168*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 169*4882a593Smuzhiyun uint64_t reserved_5_63 : 59; 170*4882a593Smuzhiyun uint64_t io : 5; 171*4882a593Smuzhiyun #else 172*4882a593Smuzhiyun uint64_t io : 5; 173*4882a593Smuzhiyun uint64_t reserved_5_63 : 59; 174*4882a593Smuzhiyun #endif 175*4882a593Smuzhiyun } s; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun union cvmx_ciu3_idtx_ppx { 179*4882a593Smuzhiyun uint64_t u64; 180*4882a593Smuzhiyun struct cvmx_ciu3_idtx_ppx_s { 181*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 182*4882a593Smuzhiyun uint64_t reserved_48_63 : 16; 183*4882a593Smuzhiyun uint64_t pp : 48; 184*4882a593Smuzhiyun #else 185*4882a593Smuzhiyun uint64_t pp : 48; 186*4882a593Smuzhiyun uint64_t reserved_48_63 : 16; 187*4882a593Smuzhiyun #endif 188*4882a593Smuzhiyun } s; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun union cvmx_ciu3_intr_ram_ecc_ctl { 192*4882a593Smuzhiyun uint64_t u64; 193*4882a593Smuzhiyun struct cvmx_ciu3_intr_ram_ecc_ctl_s { 194*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 195*4882a593Smuzhiyun uint64_t reserved_3_63 : 61; 196*4882a593Smuzhiyun uint64_t flip_synd : 2; 197*4882a593Smuzhiyun uint64_t ecc_ena : 1; 198*4882a593Smuzhiyun #else 199*4882a593Smuzhiyun uint64_t ecc_ena : 1; 200*4882a593Smuzhiyun uint64_t flip_synd : 2; 201*4882a593Smuzhiyun uint64_t reserved_3_63 : 61; 202*4882a593Smuzhiyun #endif 203*4882a593Smuzhiyun } s; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun union cvmx_ciu3_intr_ram_ecc_st { 207*4882a593Smuzhiyun uint64_t u64; 208*4882a593Smuzhiyun struct cvmx_ciu3_intr_ram_ecc_st_s { 209*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 210*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 211*4882a593Smuzhiyun uint64_t addr : 20; 212*4882a593Smuzhiyun uint64_t reserved_6_31 : 26; 213*4882a593Smuzhiyun uint64_t sisc_dbe : 1; 214*4882a593Smuzhiyun uint64_t sisc_sbe : 1; 215*4882a593Smuzhiyun uint64_t idt_dbe : 1; 216*4882a593Smuzhiyun uint64_t idt_sbe : 1; 217*4882a593Smuzhiyun uint64_t isc_dbe : 1; 218*4882a593Smuzhiyun uint64_t isc_sbe : 1; 219*4882a593Smuzhiyun #else 220*4882a593Smuzhiyun uint64_t isc_sbe : 1; 221*4882a593Smuzhiyun uint64_t isc_dbe : 1; 222*4882a593Smuzhiyun uint64_t idt_sbe : 1; 223*4882a593Smuzhiyun uint64_t idt_dbe : 1; 224*4882a593Smuzhiyun uint64_t sisc_sbe : 1; 225*4882a593Smuzhiyun uint64_t sisc_dbe : 1; 226*4882a593Smuzhiyun uint64_t reserved_6_31 : 26; 227*4882a593Smuzhiyun uint64_t addr : 20; 228*4882a593Smuzhiyun uint64_t reserved_52_63 : 12; 229*4882a593Smuzhiyun #endif 230*4882a593Smuzhiyun } s; 231*4882a593Smuzhiyun }; 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun union cvmx_ciu3_intr_ready { 234*4882a593Smuzhiyun uint64_t u64; 235*4882a593Smuzhiyun struct cvmx_ciu3_intr_ready_s { 236*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 237*4882a593Smuzhiyun uint64_t reserved_46_63 : 18; 238*4882a593Smuzhiyun uint64_t index : 14; 239*4882a593Smuzhiyun uint64_t reserved_1_31 : 31; 240*4882a593Smuzhiyun uint64_t ready : 1; 241*4882a593Smuzhiyun #else 242*4882a593Smuzhiyun uint64_t ready : 1; 243*4882a593Smuzhiyun uint64_t reserved_1_31 : 31; 244*4882a593Smuzhiyun uint64_t index : 14; 245*4882a593Smuzhiyun uint64_t reserved_46_63 : 18; 246*4882a593Smuzhiyun #endif 247*4882a593Smuzhiyun } s; 248*4882a593Smuzhiyun }; 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun union cvmx_ciu3_intr_slowdown { 251*4882a593Smuzhiyun uint64_t u64; 252*4882a593Smuzhiyun struct cvmx_ciu3_intr_slowdown_s { 253*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 254*4882a593Smuzhiyun uint64_t reserved_3_63 : 61; 255*4882a593Smuzhiyun uint64_t ctl : 3; 256*4882a593Smuzhiyun #else 257*4882a593Smuzhiyun uint64_t ctl : 3; 258*4882a593Smuzhiyun uint64_t reserved_3_63 : 61; 259*4882a593Smuzhiyun #endif 260*4882a593Smuzhiyun } s; 261*4882a593Smuzhiyun }; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun union cvmx_ciu3_iscx_ctl { 264*4882a593Smuzhiyun uint64_t u64; 265*4882a593Smuzhiyun struct cvmx_ciu3_iscx_ctl_s { 266*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 267*4882a593Smuzhiyun uint64_t reserved_24_63 : 40; 268*4882a593Smuzhiyun uint64_t idt : 8; 269*4882a593Smuzhiyun uint64_t imp : 1; 270*4882a593Smuzhiyun uint64_t reserved_2_14 : 13; 271*4882a593Smuzhiyun uint64_t en : 1; 272*4882a593Smuzhiyun uint64_t raw : 1; 273*4882a593Smuzhiyun #else 274*4882a593Smuzhiyun uint64_t raw : 1; 275*4882a593Smuzhiyun uint64_t en : 1; 276*4882a593Smuzhiyun uint64_t reserved_2_14 : 13; 277*4882a593Smuzhiyun uint64_t imp : 1; 278*4882a593Smuzhiyun uint64_t idt : 8; 279*4882a593Smuzhiyun uint64_t reserved_24_63 : 40; 280*4882a593Smuzhiyun #endif 281*4882a593Smuzhiyun } s; 282*4882a593Smuzhiyun }; 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun union cvmx_ciu3_iscx_w1c { 285*4882a593Smuzhiyun uint64_t u64; 286*4882a593Smuzhiyun struct cvmx_ciu3_iscx_w1c_s { 287*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 288*4882a593Smuzhiyun uint64_t reserved_2_63 : 62; 289*4882a593Smuzhiyun uint64_t en : 1; 290*4882a593Smuzhiyun uint64_t raw : 1; 291*4882a593Smuzhiyun #else 292*4882a593Smuzhiyun uint64_t raw : 1; 293*4882a593Smuzhiyun uint64_t en : 1; 294*4882a593Smuzhiyun uint64_t reserved_2_63 : 62; 295*4882a593Smuzhiyun #endif 296*4882a593Smuzhiyun } s; 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun union cvmx_ciu3_iscx_w1s { 300*4882a593Smuzhiyun uint64_t u64; 301*4882a593Smuzhiyun struct cvmx_ciu3_iscx_w1s_s { 302*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 303*4882a593Smuzhiyun uint64_t reserved_2_63 : 62; 304*4882a593Smuzhiyun uint64_t en : 1; 305*4882a593Smuzhiyun uint64_t raw : 1; 306*4882a593Smuzhiyun #else 307*4882a593Smuzhiyun uint64_t raw : 1; 308*4882a593Smuzhiyun uint64_t en : 1; 309*4882a593Smuzhiyun uint64_t reserved_2_63 : 62; 310*4882a593Smuzhiyun #endif 311*4882a593Smuzhiyun } s; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun union cvmx_ciu3_nmi { 315*4882a593Smuzhiyun uint64_t u64; 316*4882a593Smuzhiyun struct cvmx_ciu3_nmi_s { 317*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 318*4882a593Smuzhiyun uint64_t reserved_48_63 : 16; 319*4882a593Smuzhiyun uint64_t nmi : 48; 320*4882a593Smuzhiyun #else 321*4882a593Smuzhiyun uint64_t nmi : 48; 322*4882a593Smuzhiyun uint64_t reserved_48_63 : 16; 323*4882a593Smuzhiyun #endif 324*4882a593Smuzhiyun } s; 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun union cvmx_ciu3_siscx { 328*4882a593Smuzhiyun uint64_t u64; 329*4882a593Smuzhiyun struct cvmx_ciu3_siscx_s { 330*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 331*4882a593Smuzhiyun uint64_t en : 64; 332*4882a593Smuzhiyun #else 333*4882a593Smuzhiyun uint64_t en : 64; 334*4882a593Smuzhiyun #endif 335*4882a593Smuzhiyun } s; 336*4882a593Smuzhiyun }; 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun union cvmx_ciu3_timx { 339*4882a593Smuzhiyun uint64_t u64; 340*4882a593Smuzhiyun struct cvmx_ciu3_timx_s { 341*4882a593Smuzhiyun #ifdef __BIG_ENDIAN_BITFIELD 342*4882a593Smuzhiyun uint64_t reserved_37_63 : 27; 343*4882a593Smuzhiyun uint64_t one_shot : 1; 344*4882a593Smuzhiyun uint64_t len : 36; 345*4882a593Smuzhiyun #else 346*4882a593Smuzhiyun uint64_t len : 36; 347*4882a593Smuzhiyun uint64_t one_shot : 1; 348*4882a593Smuzhiyun uint64_t reserved_37_63 : 27; 349*4882a593Smuzhiyun #endif 350*4882a593Smuzhiyun } s; 351*4882a593Smuzhiyun }; 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun #endif 354