Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / mips / include / asm / octeon / cvmx-mpi-defs.h
1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: support@caviumnetworks.com
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2012 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT.  See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27
28 #ifndef __CVMX_MPI_DEFS_H__
29 #define __CVMX_MPI_DEFS_H__
30
31 #define CVMX_MPI_CFG (CVMX_ADD_IO_SEG(0x0001070000001000ull))
32 #define CVMX_MPI_DATX(offset) (CVMX_ADD_IO_SEG(0x0001070000001080ull) + ((offset) & 15) * 8)
33 #define CVMX_MPI_STS (CVMX_ADD_IO_SEG(0x0001070000001008ull))
34 #define CVMX_MPI_TX (CVMX_ADD_IO_SEG(0x0001070000001010ull))
35
36 union cvmx_mpi_cfg {
37         uint64_t u64;
38         struct cvmx_mpi_cfg_s {
39 #ifdef __BIG_ENDIAN_BITFIELD
40                 uint64_t reserved_29_63:35;
41                 uint64_t clkdiv:13;
42                 uint64_t csena3:1;
43                 uint64_t csena2:1;
44                 uint64_t csena1:1;
45                 uint64_t csena0:1;
46                 uint64_t cslate:1;
47                 uint64_t tritx:1;
48                 uint64_t idleclks:2;
49                 uint64_t cshi:1;
50                 uint64_t csena:1;
51                 uint64_t int_ena:1;
52                 uint64_t lsbfirst:1;
53                 uint64_t wireor:1;
54                 uint64_t clk_cont:1;
55                 uint64_t idlelo:1;
56                 uint64_t enable:1;
57 #else
58                 uint64_t enable:1;
59                 uint64_t idlelo:1;
60                 uint64_t clk_cont:1;
61                 uint64_t wireor:1;
62                 uint64_t lsbfirst:1;
63                 uint64_t int_ena:1;
64                 uint64_t csena:1;
65                 uint64_t cshi:1;
66                 uint64_t idleclks:2;
67                 uint64_t tritx:1;
68                 uint64_t cslate:1;
69                 uint64_t csena0:1;
70                 uint64_t csena1:1;
71                 uint64_t csena2:1;
72                 uint64_t csena3:1;
73                 uint64_t clkdiv:13;
74                 uint64_t reserved_29_63:35;
75 #endif
76         } s;
77         struct cvmx_mpi_cfg_cn30xx {
78 #ifdef __BIG_ENDIAN_BITFIELD
79                 uint64_t reserved_29_63:35;
80                 uint64_t clkdiv:13;
81                 uint64_t reserved_12_15:4;
82                 uint64_t cslate:1;
83                 uint64_t tritx:1;
84                 uint64_t idleclks:2;
85                 uint64_t cshi:1;
86                 uint64_t csena:1;
87                 uint64_t int_ena:1;
88                 uint64_t lsbfirst:1;
89                 uint64_t wireor:1;
90                 uint64_t clk_cont:1;
91                 uint64_t idlelo:1;
92                 uint64_t enable:1;
93 #else
94                 uint64_t enable:1;
95                 uint64_t idlelo:1;
96                 uint64_t clk_cont:1;
97                 uint64_t wireor:1;
98                 uint64_t lsbfirst:1;
99                 uint64_t int_ena:1;
100                 uint64_t csena:1;
101                 uint64_t cshi:1;
102                 uint64_t idleclks:2;
103                 uint64_t tritx:1;
104                 uint64_t cslate:1;
105                 uint64_t reserved_12_15:4;
106                 uint64_t clkdiv:13;
107                 uint64_t reserved_29_63:35;
108 #endif
109         } cn30xx;
110         struct cvmx_mpi_cfg_cn31xx {
111 #ifdef __BIG_ENDIAN_BITFIELD
112                 uint64_t reserved_29_63:35;
113                 uint64_t clkdiv:13;
114                 uint64_t reserved_11_15:5;
115                 uint64_t tritx:1;
116                 uint64_t idleclks:2;
117                 uint64_t cshi:1;
118                 uint64_t csena:1;
119                 uint64_t int_ena:1;
120                 uint64_t lsbfirst:1;
121                 uint64_t wireor:1;
122                 uint64_t clk_cont:1;
123                 uint64_t idlelo:1;
124                 uint64_t enable:1;
125 #else
126                 uint64_t enable:1;
127                 uint64_t idlelo:1;
128                 uint64_t clk_cont:1;
129                 uint64_t wireor:1;
130                 uint64_t lsbfirst:1;
131                 uint64_t int_ena:1;
132                 uint64_t csena:1;
133                 uint64_t cshi:1;
134                 uint64_t idleclks:2;
135                 uint64_t tritx:1;
136                 uint64_t reserved_11_15:5;
137                 uint64_t clkdiv:13;
138                 uint64_t reserved_29_63:35;
139 #endif
140         } cn31xx;
141         struct cvmx_mpi_cfg_cn30xx cn50xx;
142         struct cvmx_mpi_cfg_cn61xx {
143 #ifdef __BIG_ENDIAN_BITFIELD
144                 uint64_t reserved_29_63:35;
145                 uint64_t clkdiv:13;
146                 uint64_t reserved_14_15:2;
147                 uint64_t csena1:1;
148                 uint64_t csena0:1;
149                 uint64_t cslate:1;
150                 uint64_t tritx:1;
151                 uint64_t idleclks:2;
152                 uint64_t cshi:1;
153                 uint64_t reserved_6_6:1;
154                 uint64_t int_ena:1;
155                 uint64_t lsbfirst:1;
156                 uint64_t wireor:1;
157                 uint64_t clk_cont:1;
158                 uint64_t idlelo:1;
159                 uint64_t enable:1;
160 #else
161                 uint64_t enable:1;
162                 uint64_t idlelo:1;
163                 uint64_t clk_cont:1;
164                 uint64_t wireor:1;
165                 uint64_t lsbfirst:1;
166                 uint64_t int_ena:1;
167                 uint64_t reserved_6_6:1;
168                 uint64_t cshi:1;
169                 uint64_t idleclks:2;
170                 uint64_t tritx:1;
171                 uint64_t cslate:1;
172                 uint64_t csena0:1;
173                 uint64_t csena1:1;
174                 uint64_t reserved_14_15:2;
175                 uint64_t clkdiv:13;
176                 uint64_t reserved_29_63:35;
177 #endif
178         } cn61xx;
179         struct cvmx_mpi_cfg_cn66xx {
180 #ifdef __BIG_ENDIAN_BITFIELD
181                 uint64_t reserved_29_63:35;
182                 uint64_t clkdiv:13;
183                 uint64_t csena3:1;
184                 uint64_t csena2:1;
185                 uint64_t reserved_12_13:2;
186                 uint64_t cslate:1;
187                 uint64_t tritx:1;
188                 uint64_t idleclks:2;
189                 uint64_t cshi:1;
190                 uint64_t reserved_6_6:1;
191                 uint64_t int_ena:1;
192                 uint64_t lsbfirst:1;
193                 uint64_t wireor:1;
194                 uint64_t clk_cont:1;
195                 uint64_t idlelo:1;
196                 uint64_t enable:1;
197 #else
198                 uint64_t enable:1;
199                 uint64_t idlelo:1;
200                 uint64_t clk_cont:1;
201                 uint64_t wireor:1;
202                 uint64_t lsbfirst:1;
203                 uint64_t int_ena:1;
204                 uint64_t reserved_6_6:1;
205                 uint64_t cshi:1;
206                 uint64_t idleclks:2;
207                 uint64_t tritx:1;
208                 uint64_t cslate:1;
209                 uint64_t reserved_12_13:2;
210                 uint64_t csena2:1;
211                 uint64_t csena3:1;
212                 uint64_t clkdiv:13;
213                 uint64_t reserved_29_63:35;
214 #endif
215         } cn66xx;
216         struct cvmx_mpi_cfg_cn61xx cnf71xx;
217 };
218
219 union cvmx_mpi_datx {
220         uint64_t u64;
221         struct cvmx_mpi_datx_s {
222 #ifdef __BIG_ENDIAN_BITFIELD
223                 uint64_t reserved_8_63:56;
224                 uint64_t data:8;
225 #else
226                 uint64_t data:8;
227                 uint64_t reserved_8_63:56;
228 #endif
229         } s;
230         struct cvmx_mpi_datx_s cn30xx;
231         struct cvmx_mpi_datx_s cn31xx;
232         struct cvmx_mpi_datx_s cn50xx;
233         struct cvmx_mpi_datx_s cn61xx;
234         struct cvmx_mpi_datx_s cn66xx;
235         struct cvmx_mpi_datx_s cnf71xx;
236 };
237
238 union cvmx_mpi_sts {
239         uint64_t u64;
240         struct cvmx_mpi_sts_s {
241 #ifdef __BIG_ENDIAN_BITFIELD
242                 uint64_t reserved_13_63:51;
243                 uint64_t rxnum:5;
244                 uint64_t reserved_1_7:7;
245                 uint64_t busy:1;
246 #else
247                 uint64_t busy:1;
248                 uint64_t reserved_1_7:7;
249                 uint64_t rxnum:5;
250                 uint64_t reserved_13_63:51;
251 #endif
252         } s;
253         struct cvmx_mpi_sts_s cn30xx;
254         struct cvmx_mpi_sts_s cn31xx;
255         struct cvmx_mpi_sts_s cn50xx;
256         struct cvmx_mpi_sts_s cn61xx;
257         struct cvmx_mpi_sts_s cn66xx;
258         struct cvmx_mpi_sts_s cnf71xx;
259 };
260
261 union cvmx_mpi_tx {
262         uint64_t u64;
263         struct cvmx_mpi_tx_s {
264 #ifdef __BIG_ENDIAN_BITFIELD
265                 uint64_t reserved_22_63:42;
266                 uint64_t csid:2;
267                 uint64_t reserved_17_19:3;
268                 uint64_t leavecs:1;
269                 uint64_t reserved_13_15:3;
270                 uint64_t txnum:5;
271                 uint64_t reserved_5_7:3;
272                 uint64_t totnum:5;
273 #else
274                 uint64_t totnum:5;
275                 uint64_t reserved_5_7:3;
276                 uint64_t txnum:5;
277                 uint64_t reserved_13_15:3;
278                 uint64_t leavecs:1;
279                 uint64_t reserved_17_19:3;
280                 uint64_t csid:2;
281                 uint64_t reserved_22_63:42;
282 #endif
283         } s;
284         struct cvmx_mpi_tx_cn30xx {
285 #ifdef __BIG_ENDIAN_BITFIELD
286                 uint64_t reserved_17_63:47;
287                 uint64_t leavecs:1;
288                 uint64_t reserved_13_15:3;
289                 uint64_t txnum:5;
290                 uint64_t reserved_5_7:3;
291                 uint64_t totnum:5;
292 #else
293                 uint64_t totnum:5;
294                 uint64_t reserved_5_7:3;
295                 uint64_t txnum:5;
296                 uint64_t reserved_13_15:3;
297                 uint64_t leavecs:1;
298                 uint64_t reserved_17_63:47;
299 #endif
300         } cn30xx;
301         struct cvmx_mpi_tx_cn30xx cn31xx;
302         struct cvmx_mpi_tx_cn30xx cn50xx;
303         struct cvmx_mpi_tx_cn61xx {
304 #ifdef __BIG_ENDIAN_BITFIELD
305                 uint64_t reserved_21_63:43;
306                 uint64_t csid:1;
307                 uint64_t reserved_17_19:3;
308                 uint64_t leavecs:1;
309                 uint64_t reserved_13_15:3;
310                 uint64_t txnum:5;
311                 uint64_t reserved_5_7:3;
312                 uint64_t totnum:5;
313 #else
314                 uint64_t totnum:5;
315                 uint64_t reserved_5_7:3;
316                 uint64_t txnum:5;
317                 uint64_t reserved_13_15:3;
318                 uint64_t leavecs:1;
319                 uint64_t reserved_17_19:3;
320                 uint64_t csid:1;
321                 uint64_t reserved_21_63:43;
322 #endif
323         } cn61xx;
324         struct cvmx_mpi_tx_s cn66xx;
325         struct cvmx_mpi_tx_cn61xx cnf71xx;
326 };
327
328 #endif