xref: /openbmc/linux/arch/mips/include/asm/octeon/cvmx-l2c-defs.h (revision 15f6847923a87040ebe962e34eea48711c5d0582)
154293ec3SDavid Daney /***********************license start***************
254293ec3SDavid Daney  * Author: Cavium Networks
354293ec3SDavid Daney  *
454293ec3SDavid Daney  * Contact: support@caviumnetworks.com
554293ec3SDavid Daney  * This file is part of the OCTEON SDK
654293ec3SDavid Daney  *
7*15f68479SSteven J. Hill  * Copyright (c) 2003-2017 Cavium, Inc.
854293ec3SDavid Daney  *
954293ec3SDavid Daney  * This file is free software; you can redistribute it and/or modify
1054293ec3SDavid Daney  * it under the terms of the GNU General Public License, Version 2, as
1154293ec3SDavid Daney  * published by the Free Software Foundation.
1254293ec3SDavid Daney  *
1354293ec3SDavid Daney  * This file is distributed in the hope that it will be useful, but
1454293ec3SDavid Daney  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
1554293ec3SDavid Daney  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
1654293ec3SDavid Daney  * NONINFRINGEMENT.  See the GNU General Public License for more
1754293ec3SDavid Daney  * details.
1854293ec3SDavid Daney  *
1954293ec3SDavid Daney  * You should have received a copy of the GNU General Public License
2054293ec3SDavid Daney  * along with this file; if not, write to the Free Software
2154293ec3SDavid Daney  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2254293ec3SDavid Daney  * or visit http://www.gnu.org/licenses/.
2354293ec3SDavid Daney  *
2454293ec3SDavid Daney  * This file may also be available under a different license from Cavium.
2554293ec3SDavid Daney  * Contact Cavium Networks for more information
2654293ec3SDavid Daney  ***********************license end**************************************/
2754293ec3SDavid Daney 
2854293ec3SDavid Daney #ifndef __CVMX_L2C_DEFS_H__
2954293ec3SDavid Daney #define __CVMX_L2C_DEFS_H__
3054293ec3SDavid Daney 
31*15f68479SSteven J. Hill #include <uapi/asm/bitfield.h>
32*15f68479SSteven J. Hill 
33aa32a955SDavid Daney #define CVMX_L2C_DBG (CVMX_ADD_IO_SEG(0x0001180080000030ull))
34*15f68479SSteven J. Hill #define CVMX_L2C_CFG (CVMX_ADD_IO_SEG(0x0001180080000000ull))
35*15f68479SSteven J. Hill #define CVMX_L2C_CTL (CVMX_ADD_IO_SEG(0x0001180080800000ull))
36aa32a955SDavid Daney #define CVMX_L2C_LCKBASE (CVMX_ADD_IO_SEG(0x0001180080000058ull))
37aa32a955SDavid Daney #define CVMX_L2C_LCKOFF (CVMX_ADD_IO_SEG(0x0001180080000060ull))
38*15f68479SSteven J. Hill #define CVMX_L2C_PFCTL (CVMX_ADD_IO_SEG(0x0001180080000090ull))
39*15f68479SSteven J. Hill #define CVMX_L2C_PFCX(offset) (CVMX_ADD_IO_SEG(0x0001180080000098ull) +	       \
40*15f68479SSteven J. Hill 		((offset) & 3) * 8)
41aa32a955SDavid Daney #define CVMX_L2C_PFC0 CVMX_L2C_PFCX(0)
42aa32a955SDavid Daney #define CVMX_L2C_PFC1 CVMX_L2C_PFCX(1)
43aa32a955SDavid Daney #define CVMX_L2C_PFC2 CVMX_L2C_PFCX(2)
44aa32a955SDavid Daney #define CVMX_L2C_PFC3 CVMX_L2C_PFCX(3)
45aa32a955SDavid Daney #define CVMX_L2C_SPAR0 (CVMX_ADD_IO_SEG(0x0001180080000068ull))
46aa32a955SDavid Daney #define CVMX_L2C_SPAR1 (CVMX_ADD_IO_SEG(0x0001180080000070ull))
47aa32a955SDavid Daney #define CVMX_L2C_SPAR2 (CVMX_ADD_IO_SEG(0x0001180080000078ull))
48aa32a955SDavid Daney #define CVMX_L2C_SPAR3 (CVMX_ADD_IO_SEG(0x0001180080000080ull))
49aa32a955SDavid Daney #define CVMX_L2C_SPAR4 (CVMX_ADD_IO_SEG(0x0001180080000088ull))
50*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PFCX(offset, block_id)				       \
51*15f68479SSteven J. Hill 		(CVMX_ADD_IO_SEG(0x0001180080A00400ull) + (((offset) & 3) +    \
52*15f68479SSteven J. Hill 		((block_id) & 7) * 0x8000ull) * 8)
53*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PFC0(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00400ull) + \
54*15f68479SSteven J. Hill 		((block_id) & 3) * 0x40000ull)
55*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PFC1(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00408ull) + \
56*15f68479SSteven J. Hill 		((block_id) & 3) * 0x40000ull)
57*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PFC2(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00410ull) + \
58*15f68479SSteven J. Hill 		((block_id) & 3) * 0x40000ull)
59*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PFC3(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00418ull) + \
60*15f68479SSteven J. Hill 		((block_id) & 3) * 0x40000ull)
61*15f68479SSteven J. Hill #define CVMX_L2C_TADX_PRF(offset) (CVMX_ADD_IO_SEG(0x0001180080A00008ull)    + \
62*15f68479SSteven J. Hill 		((offset) & 7) * 0x40000ull)
63*15f68479SSteven J. Hill #define CVMX_L2C_TADX_TAG(block_id) (CVMX_ADD_IO_SEG(0x0001180080A00010ull)  + \
64*15f68479SSteven J. Hill 		((block_id) & 3) * 0x40000ull)
65*15f68479SSteven J. Hill #define CVMX_L2C_WPAR_IOBX(offset) (CVMX_ADD_IO_SEG(0x0001180080840200ull)   + \
66*15f68479SSteven J. Hill 		((offset) & 1) * 8)
67*15f68479SSteven J. Hill #define CVMX_L2C_WPAR_PPX(offset) (CVMX_ADD_IO_SEG(0x0001180080840000ull)    + \
68*15f68479SSteven J. Hill 		((offset) & 31) * 8)
69*15f68479SSteven J. Hill #define CVMX_L2D_FUS3 (CVMX_ADD_IO_SEG(0x00011800800007B8ull))
70aa32a955SDavid Daney 
71aa32a955SDavid Daney 
7254293ec3SDavid Daney union cvmx_l2c_cfg {
7354293ec3SDavid Daney 	uint64_t u64;
7454293ec3SDavid Daney 	struct cvmx_l2c_cfg_s {
75*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_20_63:44,
76*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t bstrun:1,
77*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lbist:1,
78*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t xor_bank:1,
79*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t dpres1:1,
80*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t dpres0:1,
81*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t dfill_dis:1,
82*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t fpexp:4,
83*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t fpempty:1,
84*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t fpen:1,
85*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t idxalias:1,
86*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t mwf_crd:4,
87*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t rsp_arb_mode:1,
88*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t rfb_arb_mode:1,
89*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lrf_arb_mode:1,
90*15f68479SSteven J. Hill 		;)))))))))))))))
9154293ec3SDavid Daney 	} s;
92aa32a955SDavid Daney };
93aa32a955SDavid Daney 
94aa32a955SDavid Daney union cvmx_l2c_ctl {
95aa32a955SDavid Daney 	uint64_t u64;
96aa32a955SDavid Daney 	struct cvmx_l2c_ctl_s {
97*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_30_63:34,
98*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t sepcmt:1,
99*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t rdf_fast:1,
100*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t disstgl2i:1,
101*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t l2dfsbe:1,
102*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t l2dfdbe:1,
103*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t discclk:1,
104*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t maxvab:4,
105*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t maxlfb:4,
106*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t rsp_arb_mode:1,
107*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t xmc_arb_mode:1,
108*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t ef_ena:1,
109*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t ef_cnt:7,
110*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t vab_thresh:4,
111*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t disecc:1,
112*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t disidxalias:1,
113*15f68479SSteven J. Hill 		;))))))))))))))))
114c5aa59e8SDavid Daney 	} s;
115aa32a955SDavid Daney };
116aa32a955SDavid Daney 
11754293ec3SDavid Daney union cvmx_l2c_dbg {
11854293ec3SDavid Daney 	uint64_t u64;
11954293ec3SDavid Daney 	struct cvmx_l2c_dbg_s {
120*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_15_63:49,
121*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lfb_enum:4,
122*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lfb_dmp:1,
123*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t ppnum:4,
124*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t set:3,
125*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t finv:1,
126*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t l2d:1,
127*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t l2t:1,
128*15f68479SSteven J. Hill 		;))))))))
12954293ec3SDavid Daney 	} s;
13054293ec3SDavid Daney };
13154293ec3SDavid Daney 
13254293ec3SDavid Daney union cvmx_l2c_pfctl {
13354293ec3SDavid Daney 	uint64_t u64;
13454293ec3SDavid Daney 	struct cvmx_l2c_pfctl_s {
135*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_36_63:28,
136*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt3rdclr:1,
137*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt2rdclr:1,
138*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt1rdclr:1,
139*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt0rdclr:1,
140*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt3ena:1,
141*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt3clr:1,
142*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt3sel:6,
143*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt2ena:1,
144*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt2clr:1,
145*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt2sel:6,
146*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt1ena:1,
147*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt1clr:1,
148*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt1sel:6,
149*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt0ena:1,
150*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt0clr:1,
151*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt0sel:6,
152*15f68479SSteven J. Hill 		;)))))))))))))))))
15354293ec3SDavid Daney 	} s;
154aa32a955SDavid Daney };
155aa32a955SDavid Daney 
156aa32a955SDavid Daney union cvmx_l2c_tadx_prf {
157aa32a955SDavid Daney 	uint64_t u64;
158aa32a955SDavid Daney 	struct cvmx_l2c_tadx_prf_s {
159*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_32_63:32,
160*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt3sel:8,
161*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt2sel:8,
162*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt1sel:8,
163*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t cnt0sel:8,
164*15f68479SSteven J. Hill 		;)))))
165aa32a955SDavid Daney 	} s;
166aa32a955SDavid Daney };
167aa32a955SDavid Daney 
168aa32a955SDavid Daney union cvmx_l2c_tadx_tag {
169aa32a955SDavid Daney 	uint64_t u64;
170aa32a955SDavid Daney 	struct cvmx_l2c_tadx_tag_s {
171*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_46_63:18,
172*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t ecc:6,
173*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_36_39:4,
174*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t tag:19,
175*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_4_16:13,
176*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t use:1,
177*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t valid:1,
178*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t dirty:1,
179*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lock:1,
180*15f68479SSteven J. Hill 		;)))))))))
181aa32a955SDavid Daney 	} s;
182aa32a955SDavid Daney };
183aa32a955SDavid Daney 
184*15f68479SSteven J. Hill union cvmx_l2c_lckbase {
185aa32a955SDavid Daney 	uint64_t u64;
186*15f68479SSteven J. Hill 	struct cvmx_l2c_lckbase_s {
187*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_31_63:33,
188*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lck_base:27,
189*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_1_3:3,
190*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lck_ena:1,
191*15f68479SSteven J. Hill 		;))))
192aa32a955SDavid Daney 	} s;
193aa32a955SDavid Daney };
194aa32a955SDavid Daney 
195*15f68479SSteven J. Hill union cvmx_l2c_lckoff {
196aa32a955SDavid Daney 	uint64_t u64;
197*15f68479SSteven J. Hill 	struct cvmx_l2c_lckoff_s {
198*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t reserved_10_63:54,
199*15f68479SSteven J. Hill 		__BITFIELD_FIELD(uint64_t lck_offset:10,
200*15f68479SSteven J. Hill 		;))
201c5aa59e8SDavid Daney 	} s;
202aa32a955SDavid Daney };
203aa32a955SDavid Daney 
20454293ec3SDavid Daney #endif
205