1*4882a593Smuzhiyun /***********************license start*************** 2*4882a593Smuzhiyun * Author: Cavium Networks 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Contact: support@caviumnetworks.com 5*4882a593Smuzhiyun * This file is part of the OCTEON SDK 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (c) 2003-2017 Cavium, Inc. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This file is free software; you can redistribute it and/or modify 10*4882a593Smuzhiyun * it under the terms of the GNU General Public License, Version 2, as 11*4882a593Smuzhiyun * published by the Free Software Foundation. 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful, but 14*4882a593Smuzhiyun * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty 15*4882a593Smuzhiyun * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or 16*4882a593Smuzhiyun * NONINFRINGEMENT. See the GNU General Public License for more 17*4882a593Smuzhiyun * details. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * You should have received a copy of the GNU General Public License 20*4882a593Smuzhiyun * along with this file; if not, write to the Free Software 21*4882a593Smuzhiyun * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22*4882a593Smuzhiyun * or visit http://www.gnu.org/licenses/. 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun * This file may also be available under a different license from Cavium. 25*4882a593Smuzhiyun * Contact Cavium Networks for more information 26*4882a593Smuzhiyun ***********************license end**************************************/ 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #ifndef __CVMX_L2C_DEFS_H__ 29*4882a593Smuzhiyun #define __CVMX_L2C_DEFS_H__ 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #include <uapi/asm/bitfield.h> 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define CVMX_L2C_DBG (CVMX_ADD_IO_SEG(0x0001180080000030ull)) 34*4882a593Smuzhiyun #define CVMX_L2C_CFG (CVMX_ADD_IO_SEG(0x0001180080000000ull)) 35*4882a593Smuzhiyun #define CVMX_L2C_CTL (CVMX_ADD_IO_SEG(0x0001180080800000ull)) 36*4882a593Smuzhiyun #define CVMX_L2C_ERR_TDTX(block_id) \ 37*4882a593Smuzhiyun (CVMX_ADD_IO_SEG(0x0001180080A007E0ull) + ((block_id) & 3) * 0x40000ull) 38*4882a593Smuzhiyun #define CVMX_L2C_ERR_TTGX(block_id) \ 39*4882a593Smuzhiyun (CVMX_ADD_IO_SEG(0x0001180080A007E8ull) + ((block_id) & 3) * 0x40000ull) 40*4882a593Smuzhiyun #define CVMX_L2C_LCKBASE (CVMX_ADD_IO_SEG(0x0001180080000058ull)) 41*4882a593Smuzhiyun #define CVMX_L2C_LCKOFF (CVMX_ADD_IO_SEG(0x0001180080000060ull)) 42*4882a593Smuzhiyun #define CVMX_L2C_PFCTL (CVMX_ADD_IO_SEG(0x0001180080000090ull)) 43*4882a593Smuzhiyun #define CVMX_L2C_PFCX(offset) (CVMX_ADD_IO_SEG(0x0001180080000098ull) + \ 44*4882a593Smuzhiyun ((offset) & 3) * 8) 45*4882a593Smuzhiyun #define CVMX_L2C_PFC0 CVMX_L2C_PFCX(0) 46*4882a593Smuzhiyun #define CVMX_L2C_PFC1 CVMX_L2C_PFCX(1) 47*4882a593Smuzhiyun #define CVMX_L2C_PFC2 CVMX_L2C_PFCX(2) 48*4882a593Smuzhiyun #define CVMX_L2C_PFC3 CVMX_L2C_PFCX(3) 49*4882a593Smuzhiyun #define CVMX_L2C_SPAR0 (CVMX_ADD_IO_SEG(0x0001180080000068ull)) 50*4882a593Smuzhiyun #define CVMX_L2C_SPAR1 (CVMX_ADD_IO_SEG(0x0001180080000070ull)) 51*4882a593Smuzhiyun #define CVMX_L2C_SPAR2 (CVMX_ADD_IO_SEG(0x0001180080000078ull)) 52*4882a593Smuzhiyun #define CVMX_L2C_SPAR3 (CVMX_ADD_IO_SEG(0x0001180080000080ull)) 53*4882a593Smuzhiyun #define CVMX_L2C_SPAR4 (CVMX_ADD_IO_SEG(0x0001180080000088ull)) 54*4882a593Smuzhiyun #define CVMX_L2C_TADX_PFCX(offset, block_id) \ 55*4882a593Smuzhiyun (CVMX_ADD_IO_SEG(0x0001180080A00400ull) + (((offset) & 3) + \ 56*4882a593Smuzhiyun ((block_id) & 7) * 0x8000ull) * 8) 57*4882a593Smuzhiyun #define CVMX_L2C_TADX_PFC0(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00400ull) + \ 58*4882a593Smuzhiyun ((block_id) & 3) * 0x40000ull) 59*4882a593Smuzhiyun #define CVMX_L2C_TADX_PFC1(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00408ull) + \ 60*4882a593Smuzhiyun ((block_id) & 3) * 0x40000ull) 61*4882a593Smuzhiyun #define CVMX_L2C_TADX_PFC2(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00410ull) + \ 62*4882a593Smuzhiyun ((block_id) & 3) * 0x40000ull) 63*4882a593Smuzhiyun #define CVMX_L2C_TADX_PFC3(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00418ull) + \ 64*4882a593Smuzhiyun ((block_id) & 3) * 0x40000ull) 65*4882a593Smuzhiyun #define CVMX_L2C_TADX_PRF(offset) (CVMX_ADD_IO_SEG(0x0001180080A00008ull) + \ 66*4882a593Smuzhiyun ((offset) & 7) * 0x40000ull) 67*4882a593Smuzhiyun #define CVMX_L2C_TADX_TAG(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00010ull) + \ 68*4882a593Smuzhiyun ((block_id) & 3) * 0x40000ull) 69*4882a593Smuzhiyun #define CVMX_L2C_WPAR_IOBX(offset) (CVMX_ADD_IO_SEG(0x0001180080840200ull) + \ 70*4882a593Smuzhiyun ((offset) & 1) * 8) 71*4882a593Smuzhiyun #define CVMX_L2C_WPAR_PPX(offset) (CVMX_ADD_IO_SEG(0x0001180080840000ull) + \ 72*4882a593Smuzhiyun ((offset) & 31) * 8) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun union cvmx_l2c_err_tdtx { 76*4882a593Smuzhiyun uint64_t u64; 77*4882a593Smuzhiyun struct cvmx_l2c_err_tdtx_s { 78*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dbe:1, 79*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t sbe:1, 80*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t vdbe:1, 81*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t vsbe:1, 82*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t syn:10, 83*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_22_49:28, 84*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t wayidx:18, 85*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_2_3:2, 86*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t type:2, 87*4882a593Smuzhiyun ;))))))))) 88*4882a593Smuzhiyun } s; 89*4882a593Smuzhiyun }; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun union cvmx_l2c_err_ttgx { 92*4882a593Smuzhiyun uint64_t u64; 93*4882a593Smuzhiyun struct cvmx_l2c_err_ttgx_s { 94*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dbe:1, 95*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t sbe:1, 96*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t noway:1, 97*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_56_60:5, 98*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t syn:6, 99*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_22_49:28, 100*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t wayidx:15, 101*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_2_6:5, 102*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t type:2, 103*4882a593Smuzhiyun ;))))))))) 104*4882a593Smuzhiyun } s; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun union cvmx_l2c_cfg { 108*4882a593Smuzhiyun uint64_t u64; 109*4882a593Smuzhiyun struct cvmx_l2c_cfg_s { 110*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_20_63:44, 111*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t bstrun:1, 112*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lbist:1, 113*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t xor_bank:1, 114*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dpres1:1, 115*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dpres0:1, 116*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dfill_dis:1, 117*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t fpexp:4, 118*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t fpempty:1, 119*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t fpen:1, 120*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t idxalias:1, 121*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t mwf_crd:4, 122*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t rsp_arb_mode:1, 123*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t rfb_arb_mode:1, 124*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lrf_arb_mode:1, 125*4882a593Smuzhiyun ;))))))))))))))) 126*4882a593Smuzhiyun } s; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun union cvmx_l2c_ctl { 130*4882a593Smuzhiyun uint64_t u64; 131*4882a593Smuzhiyun struct cvmx_l2c_ctl_s { 132*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_30_63:34, 133*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t sepcmt:1, 134*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t rdf_fast:1, 135*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t disstgl2i:1, 136*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t l2dfsbe:1, 137*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t l2dfdbe:1, 138*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t discclk:1, 139*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t maxvab:4, 140*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t maxlfb:4, 141*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t rsp_arb_mode:1, 142*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t xmc_arb_mode:1, 143*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t ef_ena:1, 144*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t ef_cnt:7, 145*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t vab_thresh:4, 146*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t disecc:1, 147*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t disidxalias:1, 148*4882a593Smuzhiyun ;)))))))))))))))) 149*4882a593Smuzhiyun } s; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun union cvmx_l2c_dbg { 153*4882a593Smuzhiyun uint64_t u64; 154*4882a593Smuzhiyun struct cvmx_l2c_dbg_s { 155*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_15_63:49, 156*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lfb_enum:4, 157*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lfb_dmp:1, 158*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t ppnum:4, 159*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t set:3, 160*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t finv:1, 161*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t l2d:1, 162*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t l2t:1, 163*4882a593Smuzhiyun ;)))))))) 164*4882a593Smuzhiyun } s; 165*4882a593Smuzhiyun }; 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun union cvmx_l2c_pfctl { 168*4882a593Smuzhiyun uint64_t u64; 169*4882a593Smuzhiyun struct cvmx_l2c_pfctl_s { 170*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_36_63:28, 171*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt3rdclr:1, 172*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt2rdclr:1, 173*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt1rdclr:1, 174*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt0rdclr:1, 175*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt3ena:1, 176*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt3clr:1, 177*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt3sel:6, 178*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt2ena:1, 179*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt2clr:1, 180*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt2sel:6, 181*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt1ena:1, 182*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt1clr:1, 183*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt1sel:6, 184*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt0ena:1, 185*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt0clr:1, 186*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt0sel:6, 187*4882a593Smuzhiyun ;))))))))))))))))) 188*4882a593Smuzhiyun } s; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun union cvmx_l2c_tadx_prf { 192*4882a593Smuzhiyun uint64_t u64; 193*4882a593Smuzhiyun struct cvmx_l2c_tadx_prf_s { 194*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_32_63:32, 195*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt3sel:8, 196*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt2sel:8, 197*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt1sel:8, 198*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t cnt0sel:8, 199*4882a593Smuzhiyun ;))))) 200*4882a593Smuzhiyun } s; 201*4882a593Smuzhiyun }; 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun union cvmx_l2c_tadx_tag { 204*4882a593Smuzhiyun uint64_t u64; 205*4882a593Smuzhiyun struct cvmx_l2c_tadx_tag_s { 206*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_46_63:18, 207*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t ecc:6, 208*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_36_39:4, 209*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t tag:19, 210*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_4_16:13, 211*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t use:1, 212*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t valid:1, 213*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t dirty:1, 214*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lock:1, 215*4882a593Smuzhiyun ;))))))))) 216*4882a593Smuzhiyun } s; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun union cvmx_l2c_lckbase { 220*4882a593Smuzhiyun uint64_t u64; 221*4882a593Smuzhiyun struct cvmx_l2c_lckbase_s { 222*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_31_63:33, 223*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lck_base:27, 224*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_1_3:3, 225*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lck_ena:1, 226*4882a593Smuzhiyun ;)))) 227*4882a593Smuzhiyun } s; 228*4882a593Smuzhiyun }; 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun union cvmx_l2c_lckoff { 231*4882a593Smuzhiyun uint64_t u64; 232*4882a593Smuzhiyun struct cvmx_l2c_lckoff_s { 233*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t reserved_10_63:54, 234*4882a593Smuzhiyun __BITFIELD_FIELD(uint64_t lck_offset:10, 235*4882a593Smuzhiyun ;)) 236*4882a593Smuzhiyun } s; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun #endif 240