xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/octeon/cvmx-l2c-defs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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