12df11221SDavid Daney /*
22df11221SDavid Daney  * Copyright (c) 2003-2016 Cavium Inc.
32df11221SDavid Daney  *
42df11221SDavid Daney  * This file is free software; you can redistribute it and/or modify
52df11221SDavid Daney  * it under the terms of the GNU General Public License, Version 2, as
62df11221SDavid Daney  * published by the Free Software Foundation.
72df11221SDavid Daney  *
82df11221SDavid Daney  * This file is distributed in the hope that it will be useful, but
92df11221SDavid Daney  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
102df11221SDavid Daney  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
112df11221SDavid Daney  * NONINFRINGEMENT.  See the GNU General Public License for more
122df11221SDavid Daney  * details.
132df11221SDavid Daney  *
142df11221SDavid Daney  */
152df11221SDavid Daney 
162df11221SDavid Daney #ifndef __CVMX_CIU3_DEFS_H__
172df11221SDavid Daney #define __CVMX_CIU3_DEFS_H__
182df11221SDavid Daney 
192df11221SDavid Daney #define CVMX_CIU3_FUSE CVMX_ADD_IO_SEG(0x00010100000001A0ull)
202df11221SDavid Daney #define CVMX_CIU3_BIST CVMX_ADD_IO_SEG(0x00010100000001C0ull)
212df11221SDavid Daney #define CVMX_CIU3_CONST CVMX_ADD_IO_SEG(0x0001010000000220ull)
222df11221SDavid Daney #define CVMX_CIU3_CTL CVMX_ADD_IO_SEG(0x00010100000000E0ull)
232df11221SDavid Daney #define CVMX_CIU3_DESTX_IO_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000210000ull) + ((offset) & 7) * 8)
242df11221SDavid Daney #define CVMX_CIU3_DESTX_PP_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000200000ull) + ((offset) & 255) * 8)
252df11221SDavid Daney #define CVMX_CIU3_GSTOP CVMX_ADD_IO_SEG(0x0001010000000140ull)
262df11221SDavid Daney #define CVMX_CIU3_IDTX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010000110000ull) + ((offset) & 255) * 8)
272df11221SDavid Daney #define CVMX_CIU3_IDTX_IO(offset) (CVMX_ADD_IO_SEG(0x0001010000130000ull) + ((offset) & 255) * 8)
282df11221SDavid Daney #define CVMX_CIU3_IDTX_PPX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001010000120000ull) + ((block_id) & 255) * 0x20ull)
292df11221SDavid Daney #define CVMX_CIU3_INTR_RAM_ECC_CTL CVMX_ADD_IO_SEG(0x0001010000000260ull)
302df11221SDavid Daney #define CVMX_CIU3_INTR_RAM_ECC_ST CVMX_ADD_IO_SEG(0x0001010000000280ull)
312df11221SDavid Daney #define CVMX_CIU3_INTR_READY CVMX_ADD_IO_SEG(0x00010100000002A0ull)
322df11221SDavid Daney #define CVMX_CIU3_INTR_SLOWDOWN CVMX_ADD_IO_SEG(0x0001010000000240ull)
332df11221SDavid Daney #define CVMX_CIU3_ISCX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010080000000ull) + ((offset) & 1048575) * 8)
342df11221SDavid Daney #define CVMX_CIU3_ISCX_W1C(offset) (CVMX_ADD_IO_SEG(0x0001010090000000ull) + ((offset) & 1048575) * 8)
352df11221SDavid Daney #define CVMX_CIU3_ISCX_W1S(offset) (CVMX_ADD_IO_SEG(0x00010100A0000000ull) + ((offset) & 1048575) * 8)
362df11221SDavid Daney #define CVMX_CIU3_NMI CVMX_ADD_IO_SEG(0x0001010000000160ull)
372df11221SDavid Daney #define CVMX_CIU3_SISCX(offset) (CVMX_ADD_IO_SEG(0x0001010000220000ull) + ((offset) & 255) * 8)
382df11221SDavid Daney #define CVMX_CIU3_TIMX(offset) (CVMX_ADD_IO_SEG(0x0001010000010000ull) + ((offset) & 15) * 8)
392df11221SDavid Daney 
402df11221SDavid Daney union cvmx_ciu3_bist {
412df11221SDavid Daney 	uint64_t u64;
422df11221SDavid Daney 	struct cvmx_ciu3_bist_s {
432df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
442df11221SDavid Daney 	uint64_t reserved_9_63                : 55;
452df11221SDavid Daney 	uint64_t bist                         : 9;
462df11221SDavid Daney #else
472df11221SDavid Daney 	uint64_t bist                         : 9;
482df11221SDavid Daney 	uint64_t reserved_9_63                : 55;
492df11221SDavid Daney #endif
502df11221SDavid Daney 	} s;
512df11221SDavid Daney };
522df11221SDavid Daney 
532df11221SDavid Daney union cvmx_ciu3_const {
542df11221SDavid Daney 	uint64_t u64;
552df11221SDavid Daney 	struct cvmx_ciu3_const_s {
562df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
572df11221SDavid Daney 	uint64_t dests_io                     : 16;
582df11221SDavid Daney 	uint64_t pintsn                       : 16;
592df11221SDavid Daney 	uint64_t dests_pp                     : 16;
602df11221SDavid Daney 	uint64_t idt                          : 16;
612df11221SDavid Daney #else
622df11221SDavid Daney 	uint64_t idt                          : 16;
632df11221SDavid Daney 	uint64_t dests_pp                     : 16;
642df11221SDavid Daney 	uint64_t pintsn                       : 16;
652df11221SDavid Daney 	uint64_t dests_io                     : 16;
662df11221SDavid Daney #endif
672df11221SDavid Daney 	} s;
682df11221SDavid Daney };
692df11221SDavid Daney 
702df11221SDavid Daney union cvmx_ciu3_ctl {
712df11221SDavid Daney 	uint64_t u64;
722df11221SDavid Daney 	struct cvmx_ciu3_ctl_s {
732df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
742df11221SDavid Daney 	uint64_t reserved_5_63                : 59;
752df11221SDavid Daney 	uint64_t mcd_sel                      : 2;
762df11221SDavid Daney 	uint64_t iscmem_le                    : 1;
772df11221SDavid Daney 	uint64_t seq_dis                      : 1;
782df11221SDavid Daney 	uint64_t cclk_dis                     : 1;
792df11221SDavid Daney #else
802df11221SDavid Daney 	uint64_t cclk_dis                     : 1;
812df11221SDavid Daney 	uint64_t seq_dis                      : 1;
822df11221SDavid Daney 	uint64_t iscmem_le                    : 1;
832df11221SDavid Daney 	uint64_t mcd_sel                      : 2;
842df11221SDavid Daney 	uint64_t reserved_5_63                : 59;
852df11221SDavid Daney #endif
862df11221SDavid Daney 	} s;
872df11221SDavid Daney };
882df11221SDavid Daney 
892df11221SDavid Daney union cvmx_ciu3_destx_io_int {
902df11221SDavid Daney 	uint64_t u64;
912df11221SDavid Daney 	struct cvmx_ciu3_destx_io_int_s {
922df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
932df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
942df11221SDavid Daney 	uint64_t intsn                        : 20;
952df11221SDavid Daney 	uint64_t reserved_10_31               : 22;
962df11221SDavid Daney 	uint64_t intidt                       : 8;
972df11221SDavid Daney 	uint64_t newint                       : 1;
982df11221SDavid Daney 	uint64_t intr                         : 1;
992df11221SDavid Daney #else
1002df11221SDavid Daney 	uint64_t intr                         : 1;
1012df11221SDavid Daney 	uint64_t newint                       : 1;
1022df11221SDavid Daney 	uint64_t intidt                       : 8;
1032df11221SDavid Daney 	uint64_t reserved_10_31               : 22;
1042df11221SDavid Daney 	uint64_t intsn                        : 20;
1052df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
1062df11221SDavid Daney #endif
1072df11221SDavid Daney 	} s;
1082df11221SDavid Daney };
1092df11221SDavid Daney 
1102df11221SDavid Daney union cvmx_ciu3_destx_pp_int {
1112df11221SDavid Daney 	uint64_t u64;
1122df11221SDavid Daney 	struct cvmx_ciu3_destx_pp_int_s {
1132df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1142df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
1152df11221SDavid Daney 	uint64_t intsn                        : 20;
1162df11221SDavid Daney 	uint64_t reserved_10_31               : 22;
1172df11221SDavid Daney 	uint64_t intidt                       : 8;
1182df11221SDavid Daney 	uint64_t newint                       : 1;
1192df11221SDavid Daney 	uint64_t intr                         : 1;
1202df11221SDavid Daney #else
1212df11221SDavid Daney 	uint64_t intr                         : 1;
1222df11221SDavid Daney 	uint64_t newint                       : 1;
1232df11221SDavid Daney 	uint64_t intidt                       : 8;
1242df11221SDavid Daney 	uint64_t reserved_10_31               : 22;
1252df11221SDavid Daney 	uint64_t intsn                        : 20;
1262df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
1272df11221SDavid Daney #endif
1282df11221SDavid Daney 	} s;
1292df11221SDavid Daney };
1302df11221SDavid Daney 
1312df11221SDavid Daney union cvmx_ciu3_gstop {
1322df11221SDavid Daney 	uint64_t u64;
1332df11221SDavid Daney 	struct cvmx_ciu3_gstop_s {
1342df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1352df11221SDavid Daney 	uint64_t reserved_1_63                : 63;
1362df11221SDavid Daney 	uint64_t gstop                        : 1;
1372df11221SDavid Daney #else
1382df11221SDavid Daney 	uint64_t gstop                        : 1;
1392df11221SDavid Daney 	uint64_t reserved_1_63                : 63;
1402df11221SDavid Daney #endif
1412df11221SDavid Daney 	} s;
1422df11221SDavid Daney };
1432df11221SDavid Daney 
1442df11221SDavid Daney union cvmx_ciu3_idtx_ctl {
1452df11221SDavid Daney 	uint64_t u64;
1462df11221SDavid Daney 	struct cvmx_ciu3_idtx_ctl_s {
1472df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1482df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
1492df11221SDavid Daney 	uint64_t intsn                        : 20;
1502df11221SDavid Daney 	uint64_t reserved_4_31                : 28;
1512df11221SDavid Daney 	uint64_t intr                         : 1;
1522df11221SDavid Daney 	uint64_t newint                       : 1;
1532df11221SDavid Daney 	uint64_t ip_num                       : 2;
1542df11221SDavid Daney #else
1552df11221SDavid Daney 	uint64_t ip_num                       : 2;
1562df11221SDavid Daney 	uint64_t newint                       : 1;
1572df11221SDavid Daney 	uint64_t intr                         : 1;
1582df11221SDavid Daney 	uint64_t reserved_4_31                : 28;
1592df11221SDavid Daney 	uint64_t intsn                        : 20;
1602df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
1612df11221SDavid Daney #endif
1622df11221SDavid Daney 	} s;
1632df11221SDavid Daney };
1642df11221SDavid Daney 
1652df11221SDavid Daney union cvmx_ciu3_idtx_io {
1662df11221SDavid Daney 	uint64_t u64;
1672df11221SDavid Daney 	struct cvmx_ciu3_idtx_io_s {
1682df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1692df11221SDavid Daney 	uint64_t reserved_5_63                : 59;
1702df11221SDavid Daney 	uint64_t io                           : 5;
1712df11221SDavid Daney #else
1722df11221SDavid Daney 	uint64_t io                           : 5;
1732df11221SDavid Daney 	uint64_t reserved_5_63                : 59;
1742df11221SDavid Daney #endif
1752df11221SDavid Daney 	} s;
1762df11221SDavid Daney };
1772df11221SDavid Daney 
1782df11221SDavid Daney union cvmx_ciu3_idtx_ppx {
1792df11221SDavid Daney 	uint64_t u64;
1802df11221SDavid Daney 	struct cvmx_ciu3_idtx_ppx_s {
1812df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1822df11221SDavid Daney 	uint64_t reserved_48_63               : 16;
1832df11221SDavid Daney 	uint64_t pp                           : 48;
1842df11221SDavid Daney #else
1852df11221SDavid Daney 	uint64_t pp                           : 48;
1862df11221SDavid Daney 	uint64_t reserved_48_63               : 16;
1872df11221SDavid Daney #endif
1882df11221SDavid Daney 	} s;
1892df11221SDavid Daney };
1902df11221SDavid Daney 
1912df11221SDavid Daney union cvmx_ciu3_intr_ram_ecc_ctl {
1922df11221SDavid Daney 	uint64_t u64;
1932df11221SDavid Daney 	struct cvmx_ciu3_intr_ram_ecc_ctl_s {
1942df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
1952df11221SDavid Daney 	uint64_t reserved_3_63                : 61;
1962df11221SDavid Daney 	uint64_t flip_synd                    : 2;
1972df11221SDavid Daney 	uint64_t ecc_ena                      : 1;
1982df11221SDavid Daney #else
1992df11221SDavid Daney 	uint64_t ecc_ena                      : 1;
2002df11221SDavid Daney 	uint64_t flip_synd                    : 2;
2012df11221SDavid Daney 	uint64_t reserved_3_63                : 61;
2022df11221SDavid Daney #endif
2032df11221SDavid Daney 	} s;
2042df11221SDavid Daney };
2052df11221SDavid Daney 
2062df11221SDavid Daney union cvmx_ciu3_intr_ram_ecc_st {
2072df11221SDavid Daney 	uint64_t u64;
2082df11221SDavid Daney 	struct cvmx_ciu3_intr_ram_ecc_st_s {
2092df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
2102df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
2112df11221SDavid Daney 	uint64_t addr                         : 20;
2122df11221SDavid Daney 	uint64_t reserved_6_31                : 26;
2132df11221SDavid Daney 	uint64_t sisc_dbe                     : 1;
2142df11221SDavid Daney 	uint64_t sisc_sbe                     : 1;
2152df11221SDavid Daney 	uint64_t idt_dbe                      : 1;
2162df11221SDavid Daney 	uint64_t idt_sbe                      : 1;
2172df11221SDavid Daney 	uint64_t isc_dbe                      : 1;
2182df11221SDavid Daney 	uint64_t isc_sbe                      : 1;
2192df11221SDavid Daney #else
2202df11221SDavid Daney 	uint64_t isc_sbe                      : 1;
2212df11221SDavid Daney 	uint64_t isc_dbe                      : 1;
2222df11221SDavid Daney 	uint64_t idt_sbe                      : 1;
2232df11221SDavid Daney 	uint64_t idt_dbe                      : 1;
2242df11221SDavid Daney 	uint64_t sisc_sbe                     : 1;
2252df11221SDavid Daney 	uint64_t sisc_dbe                     : 1;
2262df11221SDavid Daney 	uint64_t reserved_6_31                : 26;
2272df11221SDavid Daney 	uint64_t addr                         : 20;
2282df11221SDavid Daney 	uint64_t reserved_52_63               : 12;
2292df11221SDavid Daney #endif
2302df11221SDavid Daney 	} s;
2312df11221SDavid Daney };
2322df11221SDavid Daney 
2332df11221SDavid Daney union cvmx_ciu3_intr_ready {
2342df11221SDavid Daney 	uint64_t u64;
2352df11221SDavid Daney 	struct cvmx_ciu3_intr_ready_s {
2362df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
2372df11221SDavid Daney 	uint64_t reserved_46_63               : 18;
2382df11221SDavid Daney 	uint64_t index                        : 14;
2392df11221SDavid Daney 	uint64_t reserved_1_31                : 31;
2402df11221SDavid Daney 	uint64_t ready                        : 1;
2412df11221SDavid Daney #else
2422df11221SDavid Daney 	uint64_t ready                        : 1;
2432df11221SDavid Daney 	uint64_t reserved_1_31                : 31;
2442df11221SDavid Daney 	uint64_t index                        : 14;
2452df11221SDavid Daney 	uint64_t reserved_46_63               : 18;
2462df11221SDavid Daney #endif
2472df11221SDavid Daney 	} s;
2482df11221SDavid Daney };
2492df11221SDavid Daney 
2502df11221SDavid Daney union cvmx_ciu3_intr_slowdown {
2512df11221SDavid Daney 	uint64_t u64;
2522df11221SDavid Daney 	struct cvmx_ciu3_intr_slowdown_s {
2532df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
2542df11221SDavid Daney 	uint64_t reserved_3_63                : 61;
2552df11221SDavid Daney 	uint64_t ctl                          : 3;
2562df11221SDavid Daney #else
2572df11221SDavid Daney 	uint64_t ctl                          : 3;
2582df11221SDavid Daney 	uint64_t reserved_3_63                : 61;
2592df11221SDavid Daney #endif
2602df11221SDavid Daney 	} s;
2612df11221SDavid Daney };
2622df11221SDavid Daney 
2632df11221SDavid Daney union cvmx_ciu3_iscx_ctl {
2642df11221SDavid Daney 	uint64_t u64;
2652df11221SDavid Daney 	struct cvmx_ciu3_iscx_ctl_s {
2662df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
2672df11221SDavid Daney 	uint64_t reserved_24_63               : 40;
2682df11221SDavid Daney 	uint64_t idt                          : 8;
2692df11221SDavid Daney 	uint64_t imp                          : 1;
2702df11221SDavid Daney 	uint64_t reserved_2_14                : 13;
2712df11221SDavid Daney 	uint64_t en                           : 1;
2722df11221SDavid Daney 	uint64_t raw                          : 1;
2732df11221SDavid Daney #else
2742df11221SDavid Daney 	uint64_t raw                          : 1;
2752df11221SDavid Daney 	uint64_t en                           : 1;
2762df11221SDavid Daney 	uint64_t reserved_2_14                : 13;
2772df11221SDavid Daney 	uint64_t imp                          : 1;
2782df11221SDavid Daney 	uint64_t idt                          : 8;
2792df11221SDavid Daney 	uint64_t reserved_24_63               : 40;
2802df11221SDavid Daney #endif
2812df11221SDavid Daney 	} s;
2822df11221SDavid Daney };
2832df11221SDavid Daney 
2842df11221SDavid Daney union cvmx_ciu3_iscx_w1c {
2852df11221SDavid Daney 	uint64_t u64;
2862df11221SDavid Daney 	struct cvmx_ciu3_iscx_w1c_s {
2872df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
2882df11221SDavid Daney 	uint64_t reserved_2_63                : 62;
2892df11221SDavid Daney 	uint64_t en                           : 1;
2902df11221SDavid Daney 	uint64_t raw                          : 1;
2912df11221SDavid Daney #else
2922df11221SDavid Daney 	uint64_t raw                          : 1;
2932df11221SDavid Daney 	uint64_t en                           : 1;
2942df11221SDavid Daney 	uint64_t reserved_2_63                : 62;
2952df11221SDavid Daney #endif
2962df11221SDavid Daney 	} s;
2972df11221SDavid Daney };
2982df11221SDavid Daney 
2992df11221SDavid Daney union cvmx_ciu3_iscx_w1s {
3002df11221SDavid Daney 	uint64_t u64;
3012df11221SDavid Daney 	struct cvmx_ciu3_iscx_w1s_s {
3022df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
3032df11221SDavid Daney 	uint64_t reserved_2_63                : 62;
3042df11221SDavid Daney 	uint64_t en                           : 1;
3052df11221SDavid Daney 	uint64_t raw                          : 1;
3062df11221SDavid Daney #else
3072df11221SDavid Daney 	uint64_t raw                          : 1;
3082df11221SDavid Daney 	uint64_t en                           : 1;
3092df11221SDavid Daney 	uint64_t reserved_2_63                : 62;
3102df11221SDavid Daney #endif
3112df11221SDavid Daney 	} s;
3122df11221SDavid Daney };
3132df11221SDavid Daney 
3142df11221SDavid Daney union cvmx_ciu3_nmi {
3152df11221SDavid Daney 	uint64_t u64;
3162df11221SDavid Daney 	struct cvmx_ciu3_nmi_s {
3172df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
3182df11221SDavid Daney 	uint64_t reserved_48_63               : 16;
3192df11221SDavid Daney 	uint64_t nmi                          : 48;
3202df11221SDavid Daney #else
3212df11221SDavid Daney 	uint64_t nmi                          : 48;
3222df11221SDavid Daney 	uint64_t reserved_48_63               : 16;
3232df11221SDavid Daney #endif
3242df11221SDavid Daney 	} s;
3252df11221SDavid Daney };
3262df11221SDavid Daney 
3272df11221SDavid Daney union cvmx_ciu3_siscx {
3282df11221SDavid Daney 	uint64_t u64;
3292df11221SDavid Daney 	struct cvmx_ciu3_siscx_s {
3302df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
3312df11221SDavid Daney 	uint64_t en                           : 64;
3322df11221SDavid Daney #else
3332df11221SDavid Daney 	uint64_t en                           : 64;
3342df11221SDavid Daney #endif
3352df11221SDavid Daney 	} s;
3362df11221SDavid Daney };
3372df11221SDavid Daney 
3382df11221SDavid Daney union cvmx_ciu3_timx {
3392df11221SDavid Daney 	uint64_t u64;
3402df11221SDavid Daney 	struct cvmx_ciu3_timx_s {
3412df11221SDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
3422df11221SDavid Daney 	uint64_t reserved_37_63               : 27;
3432df11221SDavid Daney 	uint64_t one_shot                     : 1;
3442df11221SDavid Daney 	uint64_t len                          : 36;
3452df11221SDavid Daney #else
3462df11221SDavid Daney 	uint64_t len                          : 36;
3472df11221SDavid Daney 	uint64_t one_shot                     : 1;
3482df11221SDavid Daney 	uint64_t reserved_37_63               : 27;
3492df11221SDavid Daney #endif
3502df11221SDavid Daney 	} s;
3512df11221SDavid Daney };
3522df11221SDavid Daney 
3532df11221SDavid Daney #endif
354