/* * 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