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