GNU Linux-libre 4.14.290-gnu1
[releases.git] / arch / mips / include / asm / octeon / cvmx-gpio-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_GPIO_DEFS_H__
29 #define __CVMX_GPIO_DEFS_H__
30
31 #define CVMX_GPIO_BIT_CFGX(offset) (CVMX_ADD_IO_SEG(0x0001070000000800ull) + ((offset) & 15) * 8)
32 #define CVMX_GPIO_BOOT_ENA (CVMX_ADD_IO_SEG(0x00010700000008A8ull))
33 #define CVMX_GPIO_CLK_GENX(offset) (CVMX_ADD_IO_SEG(0x00010700000008C0ull) + ((offset) & 3) * 8)
34 #define CVMX_GPIO_CLK_QLMX(offset) (CVMX_ADD_IO_SEG(0x00010700000008E0ull) + ((offset) & 1) * 8)
35 #define CVMX_GPIO_DBG_ENA (CVMX_ADD_IO_SEG(0x00010700000008A0ull))
36 #define CVMX_GPIO_INT_CLR (CVMX_ADD_IO_SEG(0x0001070000000898ull))
37 #define CVMX_GPIO_MULTI_CAST (CVMX_ADD_IO_SEG(0x00010700000008B0ull))
38 #define CVMX_GPIO_PIN_ENA (CVMX_ADD_IO_SEG(0x00010700000008B8ull))
39 #define CVMX_GPIO_RX_DAT (CVMX_ADD_IO_SEG(0x0001070000000880ull))
40 #define CVMX_GPIO_TIM_CTL (CVMX_ADD_IO_SEG(0x00010700000008A0ull))
41 #define CVMX_GPIO_TX_CLR (CVMX_ADD_IO_SEG(0x0001070000000890ull))
42 #define CVMX_GPIO_TX_SET (CVMX_ADD_IO_SEG(0x0001070000000888ull))
43 #define CVMX_GPIO_XBIT_CFGX(offset) (CVMX_ADD_IO_SEG(0x0001070000000900ull) + ((offset) & 31) * 8 - 8*16)
44
45 union cvmx_gpio_bit_cfgx {
46         uint64_t u64;
47         struct cvmx_gpio_bit_cfgx_s {
48 #ifdef __BIG_ENDIAN_BITFIELD
49                 uint64_t reserved_21_63:42;
50                 uint64_t output_sel:5;
51                 uint64_t synce_sel:2;
52                 uint64_t clk_gen:1;
53                 uint64_t clk_sel:2;
54                 uint64_t fil_sel:4;
55                 uint64_t fil_cnt:4;
56                 uint64_t int_type:1;
57                 uint64_t int_en:1;
58                 uint64_t rx_xor:1;
59                 uint64_t tx_oe:1;
60 #else
61                 uint64_t tx_oe:1;
62                 uint64_t rx_xor:1;
63                 uint64_t int_en:1;
64                 uint64_t int_type:1;
65                 uint64_t fil_cnt:4;
66                 uint64_t fil_sel:4;
67                 uint64_t clk_sel:2;
68                 uint64_t clk_gen:1;
69                 uint64_t synce_sel:2;
70                 uint64_t output_sel:5;
71                 uint64_t reserved_21_63:42;
72 #endif
73         } s;
74         struct cvmx_gpio_bit_cfgx_cn30xx {
75 #ifdef __BIG_ENDIAN_BITFIELD
76                 uint64_t reserved_12_63:52;
77                 uint64_t fil_sel:4;
78                 uint64_t fil_cnt:4;
79                 uint64_t int_type:1;
80                 uint64_t int_en:1;
81                 uint64_t rx_xor:1;
82                 uint64_t tx_oe:1;
83 #else
84                 uint64_t tx_oe:1;
85                 uint64_t rx_xor:1;
86                 uint64_t int_en:1;
87                 uint64_t int_type:1;
88                 uint64_t fil_cnt:4;
89                 uint64_t fil_sel:4;
90                 uint64_t reserved_12_63:52;
91 #endif
92         } cn30xx;
93         struct cvmx_gpio_bit_cfgx_cn30xx cn31xx;
94         struct cvmx_gpio_bit_cfgx_cn30xx cn38xx;
95         struct cvmx_gpio_bit_cfgx_cn30xx cn38xxp2;
96         struct cvmx_gpio_bit_cfgx_cn30xx cn50xx;
97         struct cvmx_gpio_bit_cfgx_cn52xx {
98 #ifdef __BIG_ENDIAN_BITFIELD
99                 uint64_t reserved_15_63:49;
100                 uint64_t clk_gen:1;
101                 uint64_t clk_sel:2;
102                 uint64_t fil_sel:4;
103                 uint64_t fil_cnt:4;
104                 uint64_t int_type:1;
105                 uint64_t int_en:1;
106                 uint64_t rx_xor:1;
107                 uint64_t tx_oe:1;
108 #else
109                 uint64_t tx_oe:1;
110                 uint64_t rx_xor:1;
111                 uint64_t int_en:1;
112                 uint64_t int_type:1;
113                 uint64_t fil_cnt:4;
114                 uint64_t fil_sel:4;
115                 uint64_t clk_sel:2;
116                 uint64_t clk_gen:1;
117                 uint64_t reserved_15_63:49;
118 #endif
119         } cn52xx;
120         struct cvmx_gpio_bit_cfgx_cn52xx cn52xxp1;
121         struct cvmx_gpio_bit_cfgx_cn52xx cn56xx;
122         struct cvmx_gpio_bit_cfgx_cn52xx cn56xxp1;
123         struct cvmx_gpio_bit_cfgx_cn30xx cn58xx;
124         struct cvmx_gpio_bit_cfgx_cn30xx cn58xxp1;
125         struct cvmx_gpio_bit_cfgx_s cn61xx;
126         struct cvmx_gpio_bit_cfgx_s cn63xx;
127         struct cvmx_gpio_bit_cfgx_s cn63xxp1;
128         struct cvmx_gpio_bit_cfgx_s cn66xx;
129         struct cvmx_gpio_bit_cfgx_s cn68xx;
130         struct cvmx_gpio_bit_cfgx_s cn68xxp1;
131         struct cvmx_gpio_bit_cfgx_s cn70xx;
132         struct cvmx_gpio_bit_cfgx_s cn73xx;
133         struct cvmx_gpio_bit_cfgx_s cnf71xx;
134 };
135
136 union cvmx_gpio_boot_ena {
137         uint64_t u64;
138         struct cvmx_gpio_boot_ena_s {
139 #ifdef __BIG_ENDIAN_BITFIELD
140                 uint64_t reserved_12_63:52;
141                 uint64_t boot_ena:4;
142                 uint64_t reserved_0_7:8;
143 #else
144                 uint64_t reserved_0_7:8;
145                 uint64_t boot_ena:4;
146                 uint64_t reserved_12_63:52;
147 #endif
148         } s;
149         struct cvmx_gpio_boot_ena_s cn30xx;
150         struct cvmx_gpio_boot_ena_s cn31xx;
151         struct cvmx_gpio_boot_ena_s cn50xx;
152 };
153
154 union cvmx_gpio_clk_genx {
155         uint64_t u64;
156         struct cvmx_gpio_clk_genx_s {
157 #ifdef __BIG_ENDIAN_BITFIELD
158                 uint64_t reserved_32_63:32;
159                 uint64_t n:32;
160 #else
161                 uint64_t n:32;
162                 uint64_t reserved_32_63:32;
163 #endif
164         } s;
165         struct cvmx_gpio_clk_genx_s cn52xx;
166         struct cvmx_gpio_clk_genx_s cn52xxp1;
167         struct cvmx_gpio_clk_genx_s cn56xx;
168         struct cvmx_gpio_clk_genx_s cn56xxp1;
169         struct cvmx_gpio_clk_genx_s cn61xx;
170         struct cvmx_gpio_clk_genx_s cn63xx;
171         struct cvmx_gpio_clk_genx_s cn63xxp1;
172         struct cvmx_gpio_clk_genx_s cn66xx;
173         struct cvmx_gpio_clk_genx_s cn68xx;
174         struct cvmx_gpio_clk_genx_s cn68xxp1;
175         struct cvmx_gpio_clk_genx_s cnf71xx;
176 };
177
178 union cvmx_gpio_clk_qlmx {
179         uint64_t u64;
180         struct cvmx_gpio_clk_qlmx_s {
181 #ifdef __BIG_ENDIAN_BITFIELD
182                 uint64_t reserved_11_63:53;
183                 uint64_t qlm_sel:3;
184                 uint64_t reserved_3_7:5;
185                 uint64_t div:1;
186                 uint64_t lane_sel:2;
187 #else
188                 uint64_t lane_sel:2;
189                 uint64_t div:1;
190                 uint64_t reserved_3_7:5;
191                 uint64_t qlm_sel:3;
192                 uint64_t reserved_11_63:53;
193 #endif
194         } s;
195         struct cvmx_gpio_clk_qlmx_cn61xx {
196 #ifdef __BIG_ENDIAN_BITFIELD
197                 uint64_t reserved_10_63:54;
198                 uint64_t qlm_sel:2;
199                 uint64_t reserved_3_7:5;
200                 uint64_t div:1;
201                 uint64_t lane_sel:2;
202 #else
203                 uint64_t lane_sel:2;
204                 uint64_t div:1;
205                 uint64_t reserved_3_7:5;
206                 uint64_t qlm_sel:2;
207                 uint64_t reserved_10_63:54;
208 #endif
209         } cn61xx;
210         struct cvmx_gpio_clk_qlmx_cn63xx {
211 #ifdef __BIG_ENDIAN_BITFIELD
212                 uint64_t reserved_3_63:61;
213                 uint64_t div:1;
214                 uint64_t lane_sel:2;
215 #else
216                 uint64_t lane_sel:2;
217                 uint64_t div:1;
218                 uint64_t reserved_3_63:61;
219 #endif
220         } cn63xx;
221         struct cvmx_gpio_clk_qlmx_cn63xx cn63xxp1;
222         struct cvmx_gpio_clk_qlmx_cn61xx cn66xx;
223         struct cvmx_gpio_clk_qlmx_s cn68xx;
224         struct cvmx_gpio_clk_qlmx_s cn68xxp1;
225         struct cvmx_gpio_clk_qlmx_cn61xx cnf71xx;
226 };
227
228 union cvmx_gpio_dbg_ena {
229         uint64_t u64;
230         struct cvmx_gpio_dbg_ena_s {
231 #ifdef __BIG_ENDIAN_BITFIELD
232                 uint64_t reserved_21_63:43;
233                 uint64_t dbg_ena:21;
234 #else
235                 uint64_t dbg_ena:21;
236                 uint64_t reserved_21_63:43;
237 #endif
238         } s;
239         struct cvmx_gpio_dbg_ena_s cn30xx;
240         struct cvmx_gpio_dbg_ena_s cn31xx;
241         struct cvmx_gpio_dbg_ena_s cn50xx;
242 };
243
244 union cvmx_gpio_int_clr {
245         uint64_t u64;
246         struct cvmx_gpio_int_clr_s {
247 #ifdef __BIG_ENDIAN_BITFIELD
248                 uint64_t reserved_16_63:48;
249                 uint64_t type:16;
250 #else
251                 uint64_t type:16;
252                 uint64_t reserved_16_63:48;
253 #endif
254         } s;
255         struct cvmx_gpio_int_clr_s cn30xx;
256         struct cvmx_gpio_int_clr_s cn31xx;
257         struct cvmx_gpio_int_clr_s cn38xx;
258         struct cvmx_gpio_int_clr_s cn38xxp2;
259         struct cvmx_gpio_int_clr_s cn50xx;
260         struct cvmx_gpio_int_clr_s cn52xx;
261         struct cvmx_gpio_int_clr_s cn52xxp1;
262         struct cvmx_gpio_int_clr_s cn56xx;
263         struct cvmx_gpio_int_clr_s cn56xxp1;
264         struct cvmx_gpio_int_clr_s cn58xx;
265         struct cvmx_gpio_int_clr_s cn58xxp1;
266         struct cvmx_gpio_int_clr_s cn61xx;
267         struct cvmx_gpio_int_clr_s cn63xx;
268         struct cvmx_gpio_int_clr_s cn63xxp1;
269         struct cvmx_gpio_int_clr_s cn66xx;
270         struct cvmx_gpio_int_clr_s cn68xx;
271         struct cvmx_gpio_int_clr_s cn68xxp1;
272         struct cvmx_gpio_int_clr_s cnf71xx;
273 };
274
275 union cvmx_gpio_multi_cast {
276         uint64_t u64;
277         struct cvmx_gpio_multi_cast_s {
278 #ifdef __BIG_ENDIAN_BITFIELD
279                 uint64_t reserved_1_63:63;
280                 uint64_t en:1;
281 #else
282                 uint64_t en:1;
283                 uint64_t reserved_1_63:63;
284 #endif
285         } s;
286         struct cvmx_gpio_multi_cast_s cn61xx;
287         struct cvmx_gpio_multi_cast_s cnf71xx;
288 };
289
290 union cvmx_gpio_pin_ena {
291         uint64_t u64;
292         struct cvmx_gpio_pin_ena_s {
293 #ifdef __BIG_ENDIAN_BITFIELD
294                 uint64_t reserved_20_63:44;
295                 uint64_t ena19:1;
296                 uint64_t ena18:1;
297                 uint64_t reserved_0_17:18;
298 #else
299                 uint64_t reserved_0_17:18;
300                 uint64_t ena18:1;
301                 uint64_t ena19:1;
302                 uint64_t reserved_20_63:44;
303 #endif
304         } s;
305         struct cvmx_gpio_pin_ena_s cn66xx;
306 };
307
308 union cvmx_gpio_rx_dat {
309         uint64_t u64;
310         struct cvmx_gpio_rx_dat_s {
311 #ifdef __BIG_ENDIAN_BITFIELD
312                 uint64_t reserved_24_63:40;
313                 uint64_t dat:24;
314 #else
315                 uint64_t dat:24;
316                 uint64_t reserved_24_63:40;
317 #endif
318         } s;
319         struct cvmx_gpio_rx_dat_s cn30xx;
320         struct cvmx_gpio_rx_dat_s cn31xx;
321         struct cvmx_gpio_rx_dat_cn38xx {
322 #ifdef __BIG_ENDIAN_BITFIELD
323                 uint64_t reserved_16_63:48;
324                 uint64_t dat:16;
325 #else
326                 uint64_t dat:16;
327                 uint64_t reserved_16_63:48;
328 #endif
329         } cn38xx;
330         struct cvmx_gpio_rx_dat_cn38xx cn38xxp2;
331         struct cvmx_gpio_rx_dat_s cn50xx;
332         struct cvmx_gpio_rx_dat_cn38xx cn52xx;
333         struct cvmx_gpio_rx_dat_cn38xx cn52xxp1;
334         struct cvmx_gpio_rx_dat_cn38xx cn56xx;
335         struct cvmx_gpio_rx_dat_cn38xx cn56xxp1;
336         struct cvmx_gpio_rx_dat_cn38xx cn58xx;
337         struct cvmx_gpio_rx_dat_cn38xx cn58xxp1;
338         struct cvmx_gpio_rx_dat_cn61xx {
339 #ifdef __BIG_ENDIAN_BITFIELD
340                 uint64_t reserved_20_63:44;
341                 uint64_t dat:20;
342 #else
343                 uint64_t dat:20;
344                 uint64_t reserved_20_63:44;
345 #endif
346         } cn61xx;
347         struct cvmx_gpio_rx_dat_cn38xx cn63xx;
348         struct cvmx_gpio_rx_dat_cn38xx cn63xxp1;
349         struct cvmx_gpio_rx_dat_cn61xx cn66xx;
350         struct cvmx_gpio_rx_dat_cn38xx cn68xx;
351         struct cvmx_gpio_rx_dat_cn38xx cn68xxp1;
352         struct cvmx_gpio_rx_dat_cn61xx cnf71xx;
353 };
354
355 union cvmx_gpio_tim_ctl {
356         uint64_t u64;
357         struct cvmx_gpio_tim_ctl_s {
358 #ifdef __BIG_ENDIAN_BITFIELD
359                 uint64_t reserved_4_63:60;
360                 uint64_t sel:4;
361 #else
362                 uint64_t sel:4;
363                 uint64_t reserved_4_63:60;
364 #endif
365         } s;
366         struct cvmx_gpio_tim_ctl_s cn68xx;
367         struct cvmx_gpio_tim_ctl_s cn68xxp1;
368 };
369
370 union cvmx_gpio_tx_clr {
371         uint64_t u64;
372         struct cvmx_gpio_tx_clr_s {
373 #ifdef __BIG_ENDIAN_BITFIELD
374                 uint64_t reserved_24_63:40;
375                 uint64_t clr:24;
376 #else
377                 uint64_t clr:24;
378                 uint64_t reserved_24_63:40;
379 #endif
380         } s;
381         struct cvmx_gpio_tx_clr_s cn30xx;
382         struct cvmx_gpio_tx_clr_s cn31xx;
383         struct cvmx_gpio_tx_clr_cn38xx {
384 #ifdef __BIG_ENDIAN_BITFIELD
385                 uint64_t reserved_16_63:48;
386                 uint64_t clr:16;
387 #else
388                 uint64_t clr:16;
389                 uint64_t reserved_16_63:48;
390 #endif
391         } cn38xx;
392         struct cvmx_gpio_tx_clr_cn38xx cn38xxp2;
393         struct cvmx_gpio_tx_clr_s cn50xx;
394         struct cvmx_gpio_tx_clr_cn38xx cn52xx;
395         struct cvmx_gpio_tx_clr_cn38xx cn52xxp1;
396         struct cvmx_gpio_tx_clr_cn38xx cn56xx;
397         struct cvmx_gpio_tx_clr_cn38xx cn56xxp1;
398         struct cvmx_gpio_tx_clr_cn38xx cn58xx;
399         struct cvmx_gpio_tx_clr_cn38xx cn58xxp1;
400         struct cvmx_gpio_tx_clr_cn61xx {
401 #ifdef __BIG_ENDIAN_BITFIELD
402                 uint64_t reserved_20_63:44;
403                 uint64_t clr:20;
404 #else
405                 uint64_t clr:20;
406                 uint64_t reserved_20_63:44;
407 #endif
408         } cn61xx;
409         struct cvmx_gpio_tx_clr_cn38xx cn63xx;
410         struct cvmx_gpio_tx_clr_cn38xx cn63xxp1;
411         struct cvmx_gpio_tx_clr_cn61xx cn66xx;
412         struct cvmx_gpio_tx_clr_cn38xx cn68xx;
413         struct cvmx_gpio_tx_clr_cn38xx cn68xxp1;
414         struct cvmx_gpio_tx_clr_cn61xx cnf71xx;
415 };
416
417 union cvmx_gpio_tx_set {
418         uint64_t u64;
419         struct cvmx_gpio_tx_set_s {
420 #ifdef __BIG_ENDIAN_BITFIELD
421                 uint64_t reserved_24_63:40;
422                 uint64_t set:24;
423 #else
424                 uint64_t set:24;
425                 uint64_t reserved_24_63:40;
426 #endif
427         } s;
428         struct cvmx_gpio_tx_set_s cn30xx;
429         struct cvmx_gpio_tx_set_s cn31xx;
430         struct cvmx_gpio_tx_set_cn38xx {
431 #ifdef __BIG_ENDIAN_BITFIELD
432                 uint64_t reserved_16_63:48;
433                 uint64_t set:16;
434 #else
435                 uint64_t set:16;
436                 uint64_t reserved_16_63:48;
437 #endif
438         } cn38xx;
439         struct cvmx_gpio_tx_set_cn38xx cn38xxp2;
440         struct cvmx_gpio_tx_set_s cn50xx;
441         struct cvmx_gpio_tx_set_cn38xx cn52xx;
442         struct cvmx_gpio_tx_set_cn38xx cn52xxp1;
443         struct cvmx_gpio_tx_set_cn38xx cn56xx;
444         struct cvmx_gpio_tx_set_cn38xx cn56xxp1;
445         struct cvmx_gpio_tx_set_cn38xx cn58xx;
446         struct cvmx_gpio_tx_set_cn38xx cn58xxp1;
447         struct cvmx_gpio_tx_set_cn61xx {
448 #ifdef __BIG_ENDIAN_BITFIELD
449                 uint64_t reserved_20_63:44;
450                 uint64_t set:20;
451 #else
452                 uint64_t set:20;
453                 uint64_t reserved_20_63:44;
454 #endif
455         } cn61xx;
456         struct cvmx_gpio_tx_set_cn38xx cn63xx;
457         struct cvmx_gpio_tx_set_cn38xx cn63xxp1;
458         struct cvmx_gpio_tx_set_cn61xx cn66xx;
459         struct cvmx_gpio_tx_set_cn38xx cn68xx;
460         struct cvmx_gpio_tx_set_cn38xx cn68xxp1;
461         struct cvmx_gpio_tx_set_cn61xx cnf71xx;
462 };
463
464 union cvmx_gpio_xbit_cfgx {
465         uint64_t u64;
466         struct cvmx_gpio_xbit_cfgx_s {
467 #ifdef __BIG_ENDIAN_BITFIELD
468                 uint64_t reserved_17_63:47;
469                 uint64_t synce_sel:2;
470                 uint64_t clk_gen:1;
471                 uint64_t clk_sel:2;
472                 uint64_t fil_sel:4;
473                 uint64_t fil_cnt:4;
474                 uint64_t int_type:1;
475                 uint64_t int_en:1;
476                 uint64_t rx_xor:1;
477                 uint64_t tx_oe:1;
478 #else
479                 uint64_t tx_oe:1;
480                 uint64_t rx_xor:1;
481                 uint64_t int_en:1;
482                 uint64_t int_type:1;
483                 uint64_t fil_cnt:4;
484                 uint64_t fil_sel:4;
485                 uint64_t clk_sel:2;
486                 uint64_t clk_gen:1;
487                 uint64_t synce_sel:2;
488                 uint64_t reserved_17_63:47;
489 #endif
490         } s;
491         struct cvmx_gpio_xbit_cfgx_cn30xx {
492 #ifdef __BIG_ENDIAN_BITFIELD
493                 uint64_t reserved_12_63:52;
494                 uint64_t fil_sel:4;
495                 uint64_t fil_cnt:4;
496                 uint64_t reserved_2_3:2;
497                 uint64_t rx_xor:1;
498                 uint64_t tx_oe:1;
499 #else
500                 uint64_t tx_oe:1;
501                 uint64_t rx_xor:1;
502                 uint64_t reserved_2_3:2;
503                 uint64_t fil_cnt:4;
504                 uint64_t fil_sel:4;
505                 uint64_t reserved_12_63:52;
506 #endif
507         } cn30xx;
508         struct cvmx_gpio_xbit_cfgx_cn30xx cn31xx;
509         struct cvmx_gpio_xbit_cfgx_cn30xx cn50xx;
510         struct cvmx_gpio_xbit_cfgx_s cn61xx;
511         struct cvmx_gpio_xbit_cfgx_s cn66xx;
512         struct cvmx_gpio_xbit_cfgx_s cnf71xx;
513 };
514
515 #endif