| /* | |
| * Copyright (c) 2003-2016 Cavium Inc. | |
| * | |
| * This file is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License, Version 2, as | |
| * published by the Free Software Foundation. | |
| * | |
| * This file is distributed in the hope that it will be useful, but | |
| * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty | |
| * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or | |
| * NONINFRINGEMENT. See the GNU General Public License for more | |
| * details. | |
| * | |
| */ | |
| #ifndef __CVMX_CIU3_DEFS_H__ | |
| #define __CVMX_CIU3_DEFS_H__ | |
| #define CVMX_CIU3_FUSE CVMX_ADD_IO_SEG(0x00010100000001A0ull) | |
| #define CVMX_CIU3_BIST CVMX_ADD_IO_SEG(0x00010100000001C0ull) | |
| #define CVMX_CIU3_CONST CVMX_ADD_IO_SEG(0x0001010000000220ull) | |
| #define CVMX_CIU3_CTL CVMX_ADD_IO_SEG(0x00010100000000E0ull) | |
| #define CVMX_CIU3_DESTX_IO_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000210000ull) + ((offset) & 7) * 8) | |
| #define CVMX_CIU3_DESTX_PP_INT(offset) (CVMX_ADD_IO_SEG(0x0001010000200000ull) + ((offset) & 255) * 8) | |
| #define CVMX_CIU3_GSTOP CVMX_ADD_IO_SEG(0x0001010000000140ull) | |
| #define CVMX_CIU3_IDTX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010000110000ull) + ((offset) & 255) * 8) | |
| #define CVMX_CIU3_IDTX_IO(offset) (CVMX_ADD_IO_SEG(0x0001010000130000ull) + ((offset) & 255) * 8) | |
| #define CVMX_CIU3_IDTX_PPX(offset, block_id) (CVMX_ADD_IO_SEG(0x0001010000120000ull) + ((block_id) & 255) * 0x20ull) | |
| #define CVMX_CIU3_INTR_RAM_ECC_CTL CVMX_ADD_IO_SEG(0x0001010000000260ull) | |
| #define CVMX_CIU3_INTR_RAM_ECC_ST CVMX_ADD_IO_SEG(0x0001010000000280ull) | |
| #define CVMX_CIU3_INTR_READY CVMX_ADD_IO_SEG(0x00010100000002A0ull) | |
| #define CVMX_CIU3_INTR_SLOWDOWN CVMX_ADD_IO_SEG(0x0001010000000240ull) | |
| #define CVMX_CIU3_ISCX_CTL(offset) (CVMX_ADD_IO_SEG(0x0001010080000000ull) + ((offset) & 1048575) * 8) | |
| #define CVMX_CIU3_ISCX_W1C(offset) (CVMX_ADD_IO_SEG(0x0001010090000000ull) + ((offset) & 1048575) * 8) | |
| #define CVMX_CIU3_ISCX_W1S(offset) (CVMX_ADD_IO_SEG(0x00010100A0000000ull) + ((offset) & 1048575) * 8) | |
| #define CVMX_CIU3_NMI CVMX_ADD_IO_SEG(0x0001010000000160ull) | |
| #define CVMX_CIU3_SISCX(offset) (CVMX_ADD_IO_SEG(0x0001010000220000ull) + ((offset) & 255) * 8) | |
| #define CVMX_CIU3_TIMX(offset) (CVMX_ADD_IO_SEG(0x0001010000010000ull) + ((offset) & 15) * 8) | |
| union cvmx_ciu3_bist { | |
| uint64_t u64; | |
| struct cvmx_ciu3_bist_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_9_63 : 55; | |
| uint64_t bist : 9; | |
| #else | |
| uint64_t bist : 9; | |
| uint64_t reserved_9_63 : 55; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_const { | |
| uint64_t u64; | |
| struct cvmx_ciu3_const_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t dests_io : 16; | |
| uint64_t pintsn : 16; | |
| uint64_t dests_pp : 16; | |
| uint64_t idt : 16; | |
| #else | |
| uint64_t idt : 16; | |
| uint64_t dests_pp : 16; | |
| uint64_t pintsn : 16; | |
| uint64_t dests_io : 16; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_ctl { | |
| uint64_t u64; | |
| struct cvmx_ciu3_ctl_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_5_63 : 59; | |
| uint64_t mcd_sel : 2; | |
| uint64_t iscmem_le : 1; | |
| uint64_t seq_dis : 1; | |
| uint64_t cclk_dis : 1; | |
| #else | |
| uint64_t cclk_dis : 1; | |
| uint64_t seq_dis : 1; | |
| uint64_t iscmem_le : 1; | |
| uint64_t mcd_sel : 2; | |
| uint64_t reserved_5_63 : 59; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_destx_io_int { | |
| uint64_t u64; | |
| struct cvmx_ciu3_destx_io_int_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_52_63 : 12; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_10_31 : 22; | |
| uint64_t intidt : 8; | |
| uint64_t newint : 1; | |
| uint64_t intr : 1; | |
| #else | |
| uint64_t intr : 1; | |
| uint64_t newint : 1; | |
| uint64_t intidt : 8; | |
| uint64_t reserved_10_31 : 22; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_52_63 : 12; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_destx_pp_int { | |
| uint64_t u64; | |
| struct cvmx_ciu3_destx_pp_int_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_52_63 : 12; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_10_31 : 22; | |
| uint64_t intidt : 8; | |
| uint64_t newint : 1; | |
| uint64_t intr : 1; | |
| #else | |
| uint64_t intr : 1; | |
| uint64_t newint : 1; | |
| uint64_t intidt : 8; | |
| uint64_t reserved_10_31 : 22; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_52_63 : 12; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_gstop { | |
| uint64_t u64; | |
| struct cvmx_ciu3_gstop_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_1_63 : 63; | |
| uint64_t gstop : 1; | |
| #else | |
| uint64_t gstop : 1; | |
| uint64_t reserved_1_63 : 63; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_idtx_ctl { | |
| uint64_t u64; | |
| struct cvmx_ciu3_idtx_ctl_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_52_63 : 12; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_4_31 : 28; | |
| uint64_t intr : 1; | |
| uint64_t newint : 1; | |
| uint64_t ip_num : 2; | |
| #else | |
| uint64_t ip_num : 2; | |
| uint64_t newint : 1; | |
| uint64_t intr : 1; | |
| uint64_t reserved_4_31 : 28; | |
| uint64_t intsn : 20; | |
| uint64_t reserved_52_63 : 12; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_idtx_io { | |
| uint64_t u64; | |
| struct cvmx_ciu3_idtx_io_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_5_63 : 59; | |
| uint64_t io : 5; | |
| #else | |
| uint64_t io : 5; | |
| uint64_t reserved_5_63 : 59; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_idtx_ppx { | |
| uint64_t u64; | |
| struct cvmx_ciu3_idtx_ppx_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_48_63 : 16; | |
| uint64_t pp : 48; | |
| #else | |
| uint64_t pp : 48; | |
| uint64_t reserved_48_63 : 16; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_intr_ram_ecc_ctl { | |
| uint64_t u64; | |
| struct cvmx_ciu3_intr_ram_ecc_ctl_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_3_63 : 61; | |
| uint64_t flip_synd : 2; | |
| uint64_t ecc_ena : 1; | |
| #else | |
| uint64_t ecc_ena : 1; | |
| uint64_t flip_synd : 2; | |
| uint64_t reserved_3_63 : 61; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_intr_ram_ecc_st { | |
| uint64_t u64; | |
| struct cvmx_ciu3_intr_ram_ecc_st_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_52_63 : 12; | |
| uint64_t addr : 20; | |
| uint64_t reserved_6_31 : 26; | |
| uint64_t sisc_dbe : 1; | |
| uint64_t sisc_sbe : 1; | |
| uint64_t idt_dbe : 1; | |
| uint64_t idt_sbe : 1; | |
| uint64_t isc_dbe : 1; | |
| uint64_t isc_sbe : 1; | |
| #else | |
| uint64_t isc_sbe : 1; | |
| uint64_t isc_dbe : 1; | |
| uint64_t idt_sbe : 1; | |
| uint64_t idt_dbe : 1; | |
| uint64_t sisc_sbe : 1; | |
| uint64_t sisc_dbe : 1; | |
| uint64_t reserved_6_31 : 26; | |
| uint64_t addr : 20; | |
| uint64_t reserved_52_63 : 12; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_intr_ready { | |
| uint64_t u64; | |
| struct cvmx_ciu3_intr_ready_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_46_63 : 18; | |
| uint64_t index : 14; | |
| uint64_t reserved_1_31 : 31; | |
| uint64_t ready : 1; | |
| #else | |
| uint64_t ready : 1; | |
| uint64_t reserved_1_31 : 31; | |
| uint64_t index : 14; | |
| uint64_t reserved_46_63 : 18; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_intr_slowdown { | |
| uint64_t u64; | |
| struct cvmx_ciu3_intr_slowdown_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_3_63 : 61; | |
| uint64_t ctl : 3; | |
| #else | |
| uint64_t ctl : 3; | |
| uint64_t reserved_3_63 : 61; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_iscx_ctl { | |
| uint64_t u64; | |
| struct cvmx_ciu3_iscx_ctl_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_24_63 : 40; | |
| uint64_t idt : 8; | |
| uint64_t imp : 1; | |
| uint64_t reserved_2_14 : 13; | |
| uint64_t en : 1; | |
| uint64_t raw : 1; | |
| #else | |
| uint64_t raw : 1; | |
| uint64_t en : 1; | |
| uint64_t reserved_2_14 : 13; | |
| uint64_t imp : 1; | |
| uint64_t idt : 8; | |
| uint64_t reserved_24_63 : 40; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_iscx_w1c { | |
| uint64_t u64; | |
| struct cvmx_ciu3_iscx_w1c_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_2_63 : 62; | |
| uint64_t en : 1; | |
| uint64_t raw : 1; | |
| #else | |
| uint64_t raw : 1; | |
| uint64_t en : 1; | |
| uint64_t reserved_2_63 : 62; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_iscx_w1s { | |
| uint64_t u64; | |
| struct cvmx_ciu3_iscx_w1s_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_2_63 : 62; | |
| uint64_t en : 1; | |
| uint64_t raw : 1; | |
| #else | |
| uint64_t raw : 1; | |
| uint64_t en : 1; | |
| uint64_t reserved_2_63 : 62; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_nmi { | |
| uint64_t u64; | |
| struct cvmx_ciu3_nmi_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_48_63 : 16; | |
| uint64_t nmi : 48; | |
| #else | |
| uint64_t nmi : 48; | |
| uint64_t reserved_48_63 : 16; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_siscx { | |
| uint64_t u64; | |
| struct cvmx_ciu3_siscx_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t en : 64; | |
| #else | |
| uint64_t en : 64; | |
| #endif | |
| } s; | |
| }; | |
| union cvmx_ciu3_timx { | |
| uint64_t u64; | |
| struct cvmx_ciu3_timx_s { | |
| #ifdef __BIG_ENDIAN_BITFIELD | |
| uint64_t reserved_37_63 : 27; | |
| uint64_t one_shot : 1; | |
| uint64_t len : 36; | |
| #else | |
| uint64_t len : 36; | |
| uint64_t one_shot : 1; | |
| uint64_t reserved_37_63 : 27; | |
| #endif | |
| } s; | |
| }; | |
| #endif |