16f45ec7bSml29623 /* 26f45ec7bSml29623 * CDDL HEADER START 36f45ec7bSml29623 * 46f45ec7bSml29623 * The contents of this file are subject to the terms of the 56f45ec7bSml29623 * Common Development and Distribution License (the "License"). 66f45ec7bSml29623 * You may not use this file except in compliance with the License. 76f45ec7bSml29623 * 86f45ec7bSml29623 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 96f45ec7bSml29623 * or http://www.opensolaris.org/os/licensing. 106f45ec7bSml29623 * See the License for the specific language governing permissions 116f45ec7bSml29623 * and limitations under the License. 126f45ec7bSml29623 * 136f45ec7bSml29623 * When distributing Covered Code, include this CDDL HEADER in each 146f45ec7bSml29623 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 156f45ec7bSml29623 * If applicable, add the following below this CDDL HEADER, with the 166f45ec7bSml29623 * fields enclosed by brackets "[]" replaced with your own identifying 176f45ec7bSml29623 * information: Portions Copyright [yyyy] [name of copyright owner] 186f45ec7bSml29623 * 196f45ec7bSml29623 * CDDL HEADER END 206f45ec7bSml29623 */ 216f45ec7bSml29623 /* 22*678453a8Sspeer * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 236f45ec7bSml29623 * Use is subject to license terms. 246f45ec7bSml29623 */ 256f45ec7bSml29623 266f45ec7bSml29623 #ifndef _SYS_NXGE_NXGE_HW_H 276f45ec7bSml29623 #define _SYS_NXGE_NXGE_HW_H 286f45ec7bSml29623 296f45ec7bSml29623 #ifdef __cplusplus 306f45ec7bSml29623 extern "C" { 316f45ec7bSml29623 #endif 326f45ec7bSml29623 336f45ec7bSml29623 #if !defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) && \ 346f45ec7bSml29623 !defined(__BIG_ENDIAN) && !defined(__LITTLE_ENDIAN) 356f45ec7bSml29623 #error Host endianness not defined 366f45ec7bSml29623 #endif 376f45ec7bSml29623 386f45ec7bSml29623 #if !defined(_BIT_FIELDS_HTOL) && !defined(_BIT_FIELDS_LTOH) && \ 396f45ec7bSml29623 !defined(__BIT_FIELDS_HTOL) && !defined(__BIT_FIELDS_LTOH) 406f45ec7bSml29623 #error Bit ordering not defined 416f45ec7bSml29623 #endif 426f45ec7bSml29623 436f45ec7bSml29623 #include <nxge_fflp_hw.h> 446f45ec7bSml29623 #include <nxge_ipp_hw.h> 456f45ec7bSml29623 #include <nxge_mac_hw.h> 466f45ec7bSml29623 #include <nxge_rxdma_hw.h> 476f45ec7bSml29623 #include <nxge_txc_hw.h> 486f45ec7bSml29623 #include <nxge_txdma_hw.h> 496f45ec7bSml29623 #include <nxge_zcp_hw.h> 506f45ec7bSml29623 #include <nxge_espc_hw.h> 516f45ec7bSml29623 #include <nxge_n2_esr_hw.h> 526f45ec7bSml29623 #include <nxge_sr_hw.h> 536f45ec7bSml29623 #include <nxge_phy_hw.h> 546f45ec7bSml29623 556f45ec7bSml29623 56*678453a8Sspeer /* 57*678453a8Sspeer * The Neptune chip has 16 Receive DMA channels, but no more than 58*678453a8Sspeer * 24 Transmit DMA channels. 59*678453a8Sspeer */ 60*678453a8Sspeer typedef uint32_t dc_map_t; 61*678453a8Sspeer 62*678453a8Sspeer /* 63*678453a8Sspeer * The logical group map is a Crossbow addition. 64*678453a8Sspeer */ 65*678453a8Sspeer typedef uint32_t lg_map_t; 66*678453a8Sspeer 676f45ec7bSml29623 /* Modes of NXGE core */ 686f45ec7bSml29623 typedef enum nxge_mode_e { 696f45ec7bSml29623 NXGE_MODE_NE = 1, 706f45ec7bSml29623 NXGE_MODE_N2 = 2 716f45ec7bSml29623 } nxge_mode_t; 726f45ec7bSml29623 736f45ec7bSml29623 /* 746f45ec7bSml29623 * Function control Register 756f45ec7bSml29623 * (bit 31 is reset to 0. Read back 0 then free to use it. 766f45ec7bSml29623 * (once done with it, bit 0:15 can be used to store SW status) 776f45ec7bSml29623 */ 786f45ec7bSml29623 #define DEV_FUNC_SR_REG (PIO + 0x10000) 796f45ec7bSml29623 #define DEV_FUNC_SR_SR_SHIFT 0 806f45ec7bSml29623 #define DEV_FUNC_SR_SR_MASK 0x000000000000FFFFULL 816f45ec7bSml29623 #define DEV_FUNC_SR_FUNCID_SHIFT 16 826f45ec7bSml29623 #define DEV_FUNC_SR_FUNCID_MASK 0x0000000000030000ULL 836f45ec7bSml29623 #define DEV_FUNC_SR_TAS_SHIFT 31 846f45ec7bSml29623 #define DEV_FUNC_SR_TAS_MASK 0x0000000080000000ULL 856f45ec7bSml29623 866f45ec7bSml29623 typedef union _dev_func_sr_t { 876f45ec7bSml29623 uint64_t value; 886f45ec7bSml29623 struct { 896f45ec7bSml29623 #if defined(_BIG_ENDIAN) 906f45ec7bSml29623 uint32_t hdw; 916f45ec7bSml29623 #endif 926f45ec7bSml29623 struct { 936f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 946f45ec7bSml29623 uint32_t tas:1; 956f45ec7bSml29623 uint32_t res2:13; 966f45ec7bSml29623 uint32_t funcid:2; 976f45ec7bSml29623 uint32_t sr:16; 986f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 996f45ec7bSml29623 uint32_t sr:16; 1006f45ec7bSml29623 uint32_t funcid:2; 1016f45ec7bSml29623 uint32_t res2:13; 1026f45ec7bSml29623 uint32_t tas:1; 1036f45ec7bSml29623 #endif 1046f45ec7bSml29623 } ldw; 1056f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 1066f45ec7bSml29623 uint32_t hdw; 1076f45ec7bSml29623 #endif 1086f45ec7bSml29623 } bits; 1096f45ec7bSml29623 } dev_func_sr_t, *p_dev_func_sr_t; 1106f45ec7bSml29623 1116f45ec7bSml29623 1126f45ec7bSml29623 /* 1136f45ec7bSml29623 * Multi Parition Control Register (partitiion manager) 1146f45ec7bSml29623 */ 1156f45ec7bSml29623 #define MULTI_PART_CTL_REG (FZC_PIO + 0x00000) 1166f45ec7bSml29623 #define MULTI_PART_CTL_MPC 0x0000000000000001ULL 1176f45ec7bSml29623 1186f45ec7bSml29623 typedef union _multi_part_ctl_t { 1196f45ec7bSml29623 uint64_t value; 1206f45ec7bSml29623 struct { 1216f45ec7bSml29623 #if defined(_BIG_ENDIAN) 1226f45ec7bSml29623 uint32_t hdw; 1236f45ec7bSml29623 #endif 1246f45ec7bSml29623 struct { 1256f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 1266f45ec7bSml29623 uint32_t res1:31; 1276f45ec7bSml29623 uint32_t mpc:1; 1286f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 1296f45ec7bSml29623 uint32_t mpc:1; 1306f45ec7bSml29623 uint32_t res1:31; 1316f45ec7bSml29623 #endif 1326f45ec7bSml29623 } ldw; 1336f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 1346f45ec7bSml29623 uint32_t hdw; 1356f45ec7bSml29623 #endif 1366f45ec7bSml29623 } bits; 1376f45ec7bSml29623 } multi_part_ctl_t, *p_multi_part_ctl_t; 1386f45ec7bSml29623 1396f45ec7bSml29623 /* 1406f45ec7bSml29623 * Virtual DMA CSR Address (partition manager) 1416f45ec7bSml29623 */ 1426f45ec7bSml29623 #define VADDR_REG (PIO_VADDR + 0x00000) 1436f45ec7bSml29623 1446f45ec7bSml29623 /* 1456f45ec7bSml29623 * DMA Channel Binding Register (partition manager) 1466f45ec7bSml29623 */ 1476f45ec7bSml29623 #define DMA_BIND_REG (FZC_PIO + 0x10000) 1486f45ec7bSml29623 #define DMA_BIND_RX_SHIFT 0 1496f45ec7bSml29623 #define DMA_BIND_RX_MASK 0x000000000000001FULL 1506f45ec7bSml29623 #define DMA_BIND_RX_BIND_SHIFT 5 1516f45ec7bSml29623 #define DMA_BIND_RX_BIND_SET 0x0000000000000020ULL 1526f45ec7bSml29623 #define DMA_BIND_RX_BIND_MASK 0x0000000000000020ULL 1536f45ec7bSml29623 #define DMA_BIND_TX_SHIFT 8 1546f45ec7bSml29623 #define DMA_BIND_TX_MASK 0x0000000000001f00ULL 1556f45ec7bSml29623 #define DMA_BIND_TX_BIND_SHIFT 13 1566f45ec7bSml29623 #define DMA_BIND_TX_BIND_SET 0x0000000000002000ULL 1576f45ec7bSml29623 #define DMA_BIND_TX_BIND_MASK 0x0000000000002000ULL 1586f45ec7bSml29623 1596f45ec7bSml29623 typedef union _dma_bind_t { 1606f45ec7bSml29623 uint64_t value; 1616f45ec7bSml29623 struct { 1626f45ec7bSml29623 #if defined(_BIG_ENDIAN) 1636f45ec7bSml29623 uint32_t hdw; 1646f45ec7bSml29623 #endif 1656f45ec7bSml29623 struct { 1666f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 1676f45ec7bSml29623 uint32_t res1_1:16; 1686f45ec7bSml29623 uint32_t tx_bind:1; 1696f45ec7bSml29623 uint32_t tx:5; 1706f45ec7bSml29623 uint32_t res2:2; 1716f45ec7bSml29623 uint32_t rx_bind:1; 1726f45ec7bSml29623 uint32_t rx:5; 1736f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 1746f45ec7bSml29623 uint32_t rx:5; 1756f45ec7bSml29623 uint32_t rx_bind:1; 1766f45ec7bSml29623 uint32_t res2:2; 1776f45ec7bSml29623 uint32_t tx:5; 1786f45ec7bSml29623 uint32_t tx_bind:1; 1796f45ec7bSml29623 uint32_t res1_1:16; 1806f45ec7bSml29623 #endif 1816f45ec7bSml29623 } ldw; 1826f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 1836f45ec7bSml29623 uint32_t hdw; 1846f45ec7bSml29623 #endif 1856f45ec7bSml29623 } bits; 1866f45ec7bSml29623 } dma_bind_t, *p_dma_bind_t; 1876f45ec7bSml29623 1886f45ec7bSml29623 /* 1896f45ec7bSml29623 * System interrupts: 1906f45ec7bSml29623 * Logical device and group definitions. 1916f45ec7bSml29623 */ 1926f45ec7bSml29623 #define NXGE_INT_MAX_LDS 69 1936f45ec7bSml29623 #define NXGE_INT_MAX_LDGS 64 1946f45ec7bSml29623 #define NXGE_LDGRP_PER_NIU_PORT (NXGE_INT_MAX_LDGS/2) 1956f45ec7bSml29623 #define NXGE_LDGRP_PER_NEP_PORT (NXGE_INT_MAX_LDGS/4) 1966f45ec7bSml29623 #define NXGE_LDGRP_PER_2PORTS (NXGE_INT_MAX_LDGS/2) 1976f45ec7bSml29623 #define NXGE_LDGRP_PER_4PORTS (NXGE_INT_MAX_LDGS/4) 1986f45ec7bSml29623 1996f45ec7bSml29623 #define NXGE_RDMA_LD_START 0 2006f45ec7bSml29623 #define NXGE_TDMA_LD_START 32 2016f45ec7bSml29623 #define NXGE_MIF_LD 63 2026f45ec7bSml29623 #define NXGE_MAC_LD_START 64 2036f45ec7bSml29623 #define NXGE_MAC_LD_PORT0 64 2046f45ec7bSml29623 #define NXGE_MAC_LD_PORT1 65 2056f45ec7bSml29623 #define NXGE_MAC_LD_PORT2 66 2066f45ec7bSml29623 #define NXGE_MAC_LD_PORT3 67 2076f45ec7bSml29623 #define NXGE_SYS_ERROR_LD 68 2086f45ec7bSml29623 2096f45ec7bSml29623 /* 2106f45ec7bSml29623 * Logical Device Group Number 2116f45ec7bSml29623 */ 2126f45ec7bSml29623 #define LDG_NUM_REG (FZC_PIO + 0x20000) 2136f45ec7bSml29623 #define LDG_NUM_NUM_SHIFT 0 2146f45ec7bSml29623 #define LDG_NUM_NUM_MASK 0x000000000000001FULL 2156f45ec7bSml29623 2166f45ec7bSml29623 typedef union _ldg_num_t { 2176f45ec7bSml29623 uint64_t value; 2186f45ec7bSml29623 struct { 2196f45ec7bSml29623 #if defined(_BIG_ENDIAN) 2206f45ec7bSml29623 uint32_t hdw; 2216f45ec7bSml29623 #endif 2226f45ec7bSml29623 struct { 2236f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 2246f45ec7bSml29623 uint32_t res1_1:26; 2256f45ec7bSml29623 uint32_t num:6; 2266f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 2276f45ec7bSml29623 uint32_t num:6; 2286f45ec7bSml29623 uint32_t res1_1:26; 2296f45ec7bSml29623 #endif 2306f45ec7bSml29623 } ldw; 2316f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 2326f45ec7bSml29623 uint32_t hdw; 2336f45ec7bSml29623 #endif 2346f45ec7bSml29623 } bits; 2356f45ec7bSml29623 } ldg_num_t, *p_ldg_num_t; 2366f45ec7bSml29623 2376f45ec7bSml29623 /* 2386f45ec7bSml29623 * Logical Device State Vector 2396f45ec7bSml29623 */ 2406f45ec7bSml29623 #define LDSV0_REG (PIO_LDSV + 0x00000) 2416f45ec7bSml29623 #define LDSV0_LDF_SHIFT 0 2426f45ec7bSml29623 #define LDSV0_LDF_MASK 0x00000000000003FFULL 2436f45ec7bSml29623 #define LDG_NUM_NUM_MASK 0x000000000000001FULL 2446f45ec7bSml29623 #define LDSV_MASK_ALL 0x0000000000000001ULL 2456f45ec7bSml29623 2466f45ec7bSml29623 /* 2476f45ec7bSml29623 * Logical Device State Vector 1 2486f45ec7bSml29623 */ 2496f45ec7bSml29623 #define LDSV1_REG (PIO_LDSV + 0x00008) 2506f45ec7bSml29623 2516f45ec7bSml29623 /* 2526f45ec7bSml29623 * Logical Device State Vector 2 2536f45ec7bSml29623 */ 2546f45ec7bSml29623 #define LDSV2_REG (PIO_LDSV + 0x00010) 2556f45ec7bSml29623 2566f45ec7bSml29623 /* For Logical Device State Vector 0 and 1 */ 2576f45ec7bSml29623 typedef union _ldsv_t { 2586f45ec7bSml29623 uint64_t value; 2596f45ec7bSml29623 struct { 2606f45ec7bSml29623 #if defined(_BIG_ENDIAN) 2616f45ec7bSml29623 uint32_t hdw; 2626f45ec7bSml29623 #endif 2636f45ec7bSml29623 uint32_t ldw; 2646f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 2656f45ec7bSml29623 uint32_t hdw; 2666f45ec7bSml29623 #endif 2676f45ec7bSml29623 } bits; 2686f45ec7bSml29623 } ldsv_t, *p_ldsv_t; 2696f45ec7bSml29623 2706f45ec7bSml29623 #define LDSV2_LDF0_SHIFT 0 2716f45ec7bSml29623 #define LDSV2_LDF0_MASK 0x000000000000001FULL 2726f45ec7bSml29623 #define LDSV2_LDF1_SHIFT 5 2736f45ec7bSml29623 #define LDSV2_LDF1_MASK 0x00000000000001E0ULL 2746f45ec7bSml29623 2756f45ec7bSml29623 typedef union _ldsv2_t { 2766f45ec7bSml29623 uint64_t value; 2776f45ec7bSml29623 struct { 2786f45ec7bSml29623 #if defined(_BIG_ENDIAN) 2796f45ec7bSml29623 uint32_t hdw; 2806f45ec7bSml29623 #endif 2816f45ec7bSml29623 struct { 2826f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 2836f45ec7bSml29623 uint32_t res1_1:22; 2846f45ec7bSml29623 uint32_t ldf1:5; 2856f45ec7bSml29623 uint32_t ldf0:5; 2866f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 2876f45ec7bSml29623 uint32_t ldf0:5; 2886f45ec7bSml29623 uint32_t ldf1:5; 2896f45ec7bSml29623 uint32_t res1_1:22; 2906f45ec7bSml29623 #endif 2916f45ec7bSml29623 } ldw; 2926f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 2936f45ec7bSml29623 uint32_t hdw; 2946f45ec7bSml29623 #endif 2956f45ec7bSml29623 } bits; 2966f45ec7bSml29623 } ldsv2_t, *p_ldsv2_t; 2976f45ec7bSml29623 2986f45ec7bSml29623 /* 2996f45ec7bSml29623 * Logical Device Interrupt Mask 0 3006f45ec7bSml29623 */ 3016f45ec7bSml29623 #define LD_IM0_REG (PIO_IMASK0 + 0x00000) 3026f45ec7bSml29623 #define LD_IM0_SHIFT 0 3036f45ec7bSml29623 #define LD_IM0_MASK 0x0000000000000003ULL 3046f45ec7bSml29623 #define LD_IM_MASK 0x0000000000000003ULL 3056f45ec7bSml29623 3066f45ec7bSml29623 /* 3076f45ec7bSml29623 * Logical Device Interrupt Mask 1 3086f45ec7bSml29623 */ 3096f45ec7bSml29623 #define LD_IM1_REG (PIO_IMASK1 + 0x00000) 3106f45ec7bSml29623 #define LD_IM1_SHIFT 0 3116f45ec7bSml29623 #define LD_IM1_MASK 0x0000000000000003ULL 3126f45ec7bSml29623 3136f45ec7bSml29623 /* For Lofical Device Interrupt Mask 0 and 1 */ 3146f45ec7bSml29623 typedef union _ld_im_t { 3156f45ec7bSml29623 uint64_t value; 3166f45ec7bSml29623 struct { 3176f45ec7bSml29623 #if defined(_BIG_ENDIAN) 3186f45ec7bSml29623 uint32_t hdw; 3196f45ec7bSml29623 #endif 3206f45ec7bSml29623 struct { 3216f45ec7bSml29623 3226f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 3236f45ec7bSml29623 uint32_t res1_1:30; 3246f45ec7bSml29623 uint32_t ldf_mask:2; 3256f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 3266f45ec7bSml29623 uint32_t ldf_mask:2; 3276f45ec7bSml29623 uint32_t res1_1:30; 3286f45ec7bSml29623 #endif 3296f45ec7bSml29623 } ldw; 3306f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 3316f45ec7bSml29623 uint32_t hdw; 3326f45ec7bSml29623 #endif 3336f45ec7bSml29623 } bits; 3346f45ec7bSml29623 } ld_im_t, *p_ld_im_t; 3356f45ec7bSml29623 3366f45ec7bSml29623 /* 3376f45ec7bSml29623 * Logical Device Group Interrupt Management 3386f45ec7bSml29623 */ 3396f45ec7bSml29623 #define LDGIMGN_REG (PIO_LDSV + 0x00018) 3406f45ec7bSml29623 #define LDGIMGN_TIMER_SHIFT 0 3416f45ec7bSml29623 #define LDGIMGM_TIMER_MASK 0x000000000000003FULL 3426f45ec7bSml29623 #define LDGIMGN_ARM_SHIFT 31 3436f45ec7bSml29623 #define LDGIMGM_ARM 0x0000000080000000ULL 3446f45ec7bSml29623 #define LDGIMGM_ARM_MASK 0x0000000080000000ULL 3456f45ec7bSml29623 3466f45ec7bSml29623 typedef union _ldgimgm_t { 3476f45ec7bSml29623 uint64_t value; 3486f45ec7bSml29623 struct { 3496f45ec7bSml29623 #if defined(_BIG_ENDIAN) 3506f45ec7bSml29623 uint32_t hdw; 3516f45ec7bSml29623 #endif 3526f45ec7bSml29623 struct { 3536f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 3546f45ec7bSml29623 uint32_t arm:1; 3556f45ec7bSml29623 uint32_t res2:25; 3566f45ec7bSml29623 uint32_t timer:6; 3576f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 3586f45ec7bSml29623 uint32_t timer:6; 3596f45ec7bSml29623 uint32_t res2:25; 3606f45ec7bSml29623 uint32_t arm:1; 3616f45ec7bSml29623 #endif 3626f45ec7bSml29623 } ldw; 3636f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 3646f45ec7bSml29623 uint32_t hdw; 3656f45ec7bSml29623 #endif 3666f45ec7bSml29623 } bits; 3676f45ec7bSml29623 } ldgimgm_t, *p_ldgimgm_t; 3686f45ec7bSml29623 3696f45ec7bSml29623 /* 3706f45ec7bSml29623 * Logical Device Group Interrupt Timer Resolution 3716f45ec7bSml29623 */ 3726f45ec7bSml29623 #define LDGITMRES_REG (FZC_PIO + 0x00008) 3736f45ec7bSml29623 #define LDGTITMRES_RES_SHIFT 0 /* bits 19:0 */ 3746f45ec7bSml29623 #define LDGTITMRES_RES_MASK 0x00000000000FFFFFULL 3756f45ec7bSml29623 typedef union _ldgitmres_t { 3766f45ec7bSml29623 uint64_t value; 3776f45ec7bSml29623 struct { 3786f45ec7bSml29623 #if defined(_BIG_ENDIAN) 3796f45ec7bSml29623 uint32_t hdw; 3806f45ec7bSml29623 #endif 3816f45ec7bSml29623 struct { 3826f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 3836f45ec7bSml29623 uint32_t res1_1:12; 3846f45ec7bSml29623 uint32_t res:20; 3856f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 3866f45ec7bSml29623 uint32_t res:20; 3876f45ec7bSml29623 uint32_t res1_1:12; 3886f45ec7bSml29623 #endif 3896f45ec7bSml29623 } ldw; 3906f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 3916f45ec7bSml29623 uint32_t hdw; 3926f45ec7bSml29623 #endif 3936f45ec7bSml29623 } bits; 3946f45ec7bSml29623 } ldgitmres_t, *p_ldgitmres_t; 3956f45ec7bSml29623 3966f45ec7bSml29623 /* 3976f45ec7bSml29623 * System Interrupt Data 3986f45ec7bSml29623 */ 3996f45ec7bSml29623 #define SID_REG (FZC_PIO + 0x10200) 4006f45ec7bSml29623 #define SID_DATA_SHIFT 0 /* bits 6:0 */ 4016f45ec7bSml29623 #define SID_DATA_MASK 0x000000000000007FULL 4026f45ec7bSml29623 #define SID_DATA_INTNUM_SHIFT 0 /* bits 4:0 */ 4036f45ec7bSml29623 #define SID_DATA_INTNUM_MASK 0x000000000000001FULL 4046f45ec7bSml29623 #define SID_DATA_FUNCNUM_SHIFT 5 /* bits 6:5 */ 4056f45ec7bSml29623 #define SID_DATA_FUNCNUM_MASK 0x0000000000000060ULL 4066f45ec7bSml29623 #define SID_PCI_FUNCTION_SHIFT (1 << 5) 4076f45ec7bSml29623 #define SID_N2_INDEX (1 << 6) 4086f45ec7bSml29623 4096f45ec7bSml29623 #define SID_DATA(f, v) ((f << SID_DATA_FUNCNUM_SHIFT) | \ 4106f45ec7bSml29623 ((v << SID_DATA_SHIFT) & SID_DATA_INTNUM_MASK)) 4116f45ec7bSml29623 4126f45ec7bSml29623 #define SID_DATA_N2(v) (v | SID_N2_INDEX) 4136f45ec7bSml29623 4146f45ec7bSml29623 typedef union _sid_t { 4156f45ec7bSml29623 uint64_t value; 4166f45ec7bSml29623 struct { 4176f45ec7bSml29623 #if defined(_BIG_ENDIAN) 4186f45ec7bSml29623 uint32_t hdw; 4196f45ec7bSml29623 #endif 4206f45ec7bSml29623 struct { 4216f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 4226f45ec7bSml29623 uint32_t res1_1:25; 4236f45ec7bSml29623 uint32_t data:7; 4246f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 4256f45ec7bSml29623 uint32_t data:7; 4266f45ec7bSml29623 uint32_t res1_1:25; 4276f45ec7bSml29623 #endif 4286f45ec7bSml29623 } ldw; 4296f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 4306f45ec7bSml29623 uint32_t hdw; 4316f45ec7bSml29623 #endif 4326f45ec7bSml29623 } bits; 4336f45ec7bSml29623 } sid_t, *p_sid_t; 4346f45ec7bSml29623 4356f45ec7bSml29623 /* 4366f45ec7bSml29623 * Reset Control 4376f45ec7bSml29623 */ 4386f45ec7bSml29623 #define RST_CTL_REG (FZC_PIO + 0x00038) 4396f45ec7bSml29623 #define RST_CTL_MAC_RST3 0x0000000000400000ULL 4406f45ec7bSml29623 #define RST_CTL_MAC_RST3_SHIFT 22 4416f45ec7bSml29623 #define RST_CTL_MAC_RST2 0x0000000000200000ULL 4426f45ec7bSml29623 #define RST_CTL_MAC_RST2_SHIFT 21 4436f45ec7bSml29623 #define RST_CTL_MAC_RST1 0x0000000000100000ULL 4446f45ec7bSml29623 #define RST_CTL_MAC_RST1_SHIFT 20 4456f45ec7bSml29623 #define RST_CTL_MAC_RST0 0x0000000000080000ULL 4466f45ec7bSml29623 #define RST_CTL_MAC_RST0_SHIFT 19 4476f45ec7bSml29623 #define RST_CTL_EN_ACK_TO 0x0000000000000800ULL 4486f45ec7bSml29623 #define RST_CTL_EN_ACK_TO_SHIFT 11 4496f45ec7bSml29623 #define RST_CTL_ACK_TO_MASK 0x00000000000007FEULL 4506f45ec7bSml29623 #define RST_CTL_ACK_TO_SHIFT 1 4516f45ec7bSml29623 4526f45ec7bSml29623 4536f45ec7bSml29623 typedef union _rst_ctl_t { 4546f45ec7bSml29623 uint64_t value; 4556f45ec7bSml29623 struct { 4566f45ec7bSml29623 #if defined(_BIG_ENDIAN) 4576f45ec7bSml29623 uint32_t hdw; 4586f45ec7bSml29623 #endif 4596f45ec7bSml29623 struct { 4606f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 4616f45ec7bSml29623 uint32_t res1:9; 4626f45ec7bSml29623 uint32_t mac_rst3:1; 4636f45ec7bSml29623 uint32_t mac_rst2:1; 4646f45ec7bSml29623 uint32_t mac_rst1:1; 4656f45ec7bSml29623 uint32_t mac_rst0:1; 4666f45ec7bSml29623 uint32_t res2:7; 4676f45ec7bSml29623 uint32_t ack_to_en:1; 4686f45ec7bSml29623 uint32_t ack_to_val:10; 4696f45ec7bSml29623 uint32_t res3:1; 4706f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 4716f45ec7bSml29623 uint32_t res3:1; 4726f45ec7bSml29623 uint32_t ack_to_val:10; 4736f45ec7bSml29623 uint32_t ack_to_en:1; 4746f45ec7bSml29623 uint32_t res2:7; 4756f45ec7bSml29623 uint32_t mac_rst0:1; 4766f45ec7bSml29623 uint32_t mac_rst1:1; 4776f45ec7bSml29623 uint32_t mac_rst2:1; 4786f45ec7bSml29623 uint32_t mac_rst3:1; 4796f45ec7bSml29623 uint32_t res1:9; 4806f45ec7bSml29623 #endif 4816f45ec7bSml29623 } ldw; 4826f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 4836f45ec7bSml29623 uint32_t hdw; 4846f45ec7bSml29623 #endif 4856f45ec7bSml29623 } bits; 4866f45ec7bSml29623 } rst_ctl_t, *p_rst_ctl_t; 4876f45ec7bSml29623 4886f45ec7bSml29623 /* 4896f45ec7bSml29623 * System Error Mask 4906f45ec7bSml29623 */ 4916f45ec7bSml29623 #define SYS_ERR_MASK_REG (FZC_PIO + 0x00090) 4926f45ec7bSml29623 4936f45ec7bSml29623 /* 4946f45ec7bSml29623 * System Error Status 4956f45ec7bSml29623 */ 4966f45ec7bSml29623 #define SYS_ERR_STAT_REG (FZC_PIO + 0x00098) 4976f45ec7bSml29623 4986f45ec7bSml29623 4996f45ec7bSml29623 #define SYS_ERR_META2_MASK 0x0000000000000400ULL 5006f45ec7bSml29623 #define SYS_ERR_META2_SHIFT 10 5016f45ec7bSml29623 #define SYS_ERR_META1_MASK 0x0000000000000200ULL 5026f45ec7bSml29623 #define SYS_ERR_META1_SHIFT 9 5036f45ec7bSml29623 #define SYS_ERR_PEU_MASK 0x0000000000000100ULL 5046f45ec7bSml29623 #define SYS_ERR_PEU_SHIFT 8 5056f45ec7bSml29623 #define SYS_ERR_TXC_MASK 0x0000000000000080ULL 5066f45ec7bSml29623 #define SYS_ERR_TXC_SHIFT 7 5076f45ec7bSml29623 #define SYS_ERR_RDMC_MASK 0x0000000000000040ULL 5086f45ec7bSml29623 #define SYS_ERR_RDMC_SHIFT 6 5096f45ec7bSml29623 #define SYS_ERR_TDMC_MASK 0x0000000000000020ULL 5106f45ec7bSml29623 #define SYS_ERR_TDMC_SHIFT 5 5116f45ec7bSml29623 #define SYS_ERR_ZCP_MASK 0x0000000000000010ULL 5126f45ec7bSml29623 #define SYS_ERR_ZCP_SHIFT 4 5136f45ec7bSml29623 #define SYS_ERR_FFLP_MASK 0x0000000000000008ULL 5146f45ec7bSml29623 #define SYS_ERR_FFLP_SHIFT 3 5156f45ec7bSml29623 #define SYS_ERR_IPP_MASK 0x0000000000000004ULL 5166f45ec7bSml29623 #define SYS_ERR_IPP_SHIFT 2 5176f45ec7bSml29623 #define SYS_ERR_MAC_MASK 0x0000000000000002ULL 5186f45ec7bSml29623 #define SYS_ERR_MAC_SHIFT 1 5196f45ec7bSml29623 #define SYS_ERR_SMX_MASK 0x0000000000000001ULL 5206f45ec7bSml29623 #define SYS_ERR_SMX_SHIFT 0 5216f45ec7bSml29623 #define SYS_ERR_MASK_ALL (SYS_ERR_SMX_MASK | SYS_ERR_MAC_MASK | \ 5226f45ec7bSml29623 SYS_ERR_IPP_MASK | SYS_ERR_FFLP_MASK | \ 5236f45ec7bSml29623 SYS_ERR_ZCP_MASK | SYS_ERR_TDMC_MASK | \ 5246f45ec7bSml29623 SYS_ERR_RDMC_MASK | SYS_ERR_TXC_MASK | \ 5256f45ec7bSml29623 SYS_ERR_PEU_MASK | SYS_ERR_META1_MASK | \ 5266f45ec7bSml29623 SYS_ERR_META2_MASK) 5276f45ec7bSml29623 5286f45ec7bSml29623 5296f45ec7bSml29623 typedef union _sys_err_mask_t { 5306f45ec7bSml29623 uint64_t value; 5316f45ec7bSml29623 struct { 5326f45ec7bSml29623 #if defined(_BIG_ENDIAN) 5336f45ec7bSml29623 uint32_t hdw; 5346f45ec7bSml29623 #endif 5356f45ec7bSml29623 struct { 5366f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 5376f45ec7bSml29623 uint32_t res:21; 5386f45ec7bSml29623 uint32_t meta2:1; 5396f45ec7bSml29623 uint32_t meta1:1; 5406f45ec7bSml29623 uint32_t peu:1; 5416f45ec7bSml29623 uint32_t txc:1; 5426f45ec7bSml29623 uint32_t rdmc:1; 5436f45ec7bSml29623 uint32_t tdmc:1; 5446f45ec7bSml29623 uint32_t zcp:1; 5456f45ec7bSml29623 uint32_t fflp:1; 5466f45ec7bSml29623 uint32_t ipp:1; 5476f45ec7bSml29623 uint32_t mac:1; 5486f45ec7bSml29623 uint32_t smx:1; 5496f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 5506f45ec7bSml29623 uint32_t smx:1; 5516f45ec7bSml29623 uint32_t mac:1; 5526f45ec7bSml29623 uint32_t ipp:1; 5536f45ec7bSml29623 uint32_t fflp:1; 5546f45ec7bSml29623 uint32_t zcp:1; 5556f45ec7bSml29623 uint32_t tdmc:1; 5566f45ec7bSml29623 uint32_t rdmc:1; 5576f45ec7bSml29623 uint32_t txc:1; 5586f45ec7bSml29623 uint32_t peu:1; 5596f45ec7bSml29623 uint32_t meta1:1; 5606f45ec7bSml29623 uint32_t meta2:1; 5616f45ec7bSml29623 uint32_t res:21; 5626f45ec7bSml29623 #endif 5636f45ec7bSml29623 } ldw; 5646f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 5656f45ec7bSml29623 uint32_t hdw; 5666f45ec7bSml29623 #endif 5676f45ec7bSml29623 } bits; 5686f45ec7bSml29623 } sys_err_mask_t, sys_err_stat_t, *p_sys_err_mask_t, *p_sys_err_stat_t; 5696f45ec7bSml29623 5706f45ec7bSml29623 5716f45ec7bSml29623 /* 5726f45ec7bSml29623 * Meta Arbiter Dirty Transaction ID Control 5736f45ec7bSml29623 */ 5746f45ec7bSml29623 5756f45ec7bSml29623 #define DIRTY_TID_CTL_REG (FZC_PIO + 0x0010) 5766f45ec7bSml29623 #define DIRTY_TID_CTL_WR_THRES_MASK 0x00000000003F0000ULL 5776f45ec7bSml29623 #define DIRTY_TID_CTL_WR_THRES_SHIFT 16 5786f45ec7bSml29623 #define DIRTY_TID_CTL_RD_THRES_MASK 0x00000000000003F0ULL 5796f45ec7bSml29623 #define DIRTY_TID_CTL_RD_THRES_SHIFT 4 5806f45ec7bSml29623 #define DIRTY_TID_CTL_DTID_CLR 0x0000000000000002ULL 5816f45ec7bSml29623 #define DIRTY_TID_CTL_DTID_CLR_SHIFT 1 5826f45ec7bSml29623 #define DIRTY_TID_CTL_DTID_EN 0x0000000000000001ULL 5836f45ec7bSml29623 #define DIRTY_TID_CTL_DTID_EN_SHIFT 0 5846f45ec7bSml29623 5856f45ec7bSml29623 typedef union _dty_tid_ctl_t { 5866f45ec7bSml29623 uint64_t value; 5876f45ec7bSml29623 struct { 5886f45ec7bSml29623 #if defined(_BIG_ENDIAN) 5896f45ec7bSml29623 uint32_t hdw; 5906f45ec7bSml29623 #endif 5916f45ec7bSml29623 struct { 5926f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 5936f45ec7bSml29623 uint32_t res1:10; 5946f45ec7bSml29623 uint32_t np_wr_thres_val:6; 5956f45ec7bSml29623 uint32_t res2:6; 5966f45ec7bSml29623 uint32_t np_rd_thres_val:6; 5976f45ec7bSml29623 uint32_t res3:2; 5986f45ec7bSml29623 uint32_t dty_tid_clr:1; 5996f45ec7bSml29623 uint32_t dty_tid_en:1; 6006f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 6016f45ec7bSml29623 uint32_t dty_tid_en:1; 6026f45ec7bSml29623 uint32_t dty_tid_clr:1; 6036f45ec7bSml29623 uint32_t res3:2; 6046f45ec7bSml29623 uint32_t np_rd_thres_val:6; 6056f45ec7bSml29623 uint32_t res2:6; 6066f45ec7bSml29623 uint32_t np_wr_thres_val:6; 6076f45ec7bSml29623 uint32_t res1:10; 6086f45ec7bSml29623 #endif 6096f45ec7bSml29623 } ldw; 6106f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 6116f45ec7bSml29623 uint32_t hdw; 6126f45ec7bSml29623 #endif 6136f45ec7bSml29623 } bits; 6146f45ec7bSml29623 } dty_tid_ctl_t, *p_dty_tid_ctl_t; 6156f45ec7bSml29623 6166f45ec7bSml29623 6176f45ec7bSml29623 /* 6186f45ec7bSml29623 * Meta Arbiter Dirty Transaction ID Status 6196f45ec7bSml29623 */ 6206f45ec7bSml29623 #define DIRTY_TID_STAT_REG (FZC_PIO + 0x0018) 6216f45ec7bSml29623 #define DIRTY_TID_STAT_WR_TID_DTY_CNT_MASK 0x0000000000003F00ULL 6226f45ec7bSml29623 #define DIRTY_TID_STAT_WR_TID_DTY_CNT_SHIFT 8 6236f45ec7bSml29623 #define DIRTY_TID_STAT_RD_TID_DTY_CNT_MASK 0x000000000000003FULL 6246f45ec7bSml29623 #define DIRTY_TID_STAT_RD_TID_DTY_CNT_SHIFT 0 6256f45ec7bSml29623 6266f45ec7bSml29623 typedef union _dty_tid_stat_t { 6276f45ec7bSml29623 uint64_t value; 6286f45ec7bSml29623 struct { 6296f45ec7bSml29623 #if defined(_BIG_ENDIAN) 6306f45ec7bSml29623 uint32_t hdw; 6316f45ec7bSml29623 #endif 6326f45ec7bSml29623 struct { 6336f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 6346f45ec7bSml29623 uint32_t res1:18; 6356f45ec7bSml29623 uint32_t wr_tid_dirty_cnt:6; 6366f45ec7bSml29623 uint32_t res2:2; 6376f45ec7bSml29623 uint32_t rd_tid_dirty_cnt:6; 6386f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 6396f45ec7bSml29623 uint32_t rd_tid_dirty_cnt:6; 6406f45ec7bSml29623 uint32_t res2:2; 6416f45ec7bSml29623 uint32_t wr_tid_dirty_cnt:6; 6426f45ec7bSml29623 uint32_t res1:18; 6436f45ec7bSml29623 #endif 6446f45ec7bSml29623 } ldw; 6456f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 6466f45ec7bSml29623 uint32_t hdw; 6476f45ec7bSml29623 #endif 6486f45ec7bSml29623 } bits; 6496f45ec7bSml29623 } dty_tid_stat_t, *p_dty_tid_stat_t; 6506f45ec7bSml29623 6516f45ec7bSml29623 6526f45ec7bSml29623 /* 6536f45ec7bSml29623 * SMX Registers 6546f45ec7bSml29623 */ 6556f45ec7bSml29623 #define SMX_CFIG_DAT_REG (FZC_PIO + 0x00040) 6566f45ec7bSml29623 #define SMX_CFIG_DAT_RAS_DET_EN_MASK 0x0000000080000000ULL 6576f45ec7bSml29623 #define SMX_CFIG_DAT_RAS_DET_EN_SHIFT 31 6586f45ec7bSml29623 #define SMX_CFIG_DAT_RAS_INJ_EN_MASK 0x0000000040000000ULL 6596f45ec7bSml29623 #define SMX_CFIG_DAT_RAS_INJ_EN_SHIFT 30 6606f45ec7bSml29623 #define SMX_CFIG_DAT_TRANS_TO_MASK 0x000000000FFFFFFFULL 6616f45ec7bSml29623 #define SMX_CFIG_DAT_TRANS_TO_SHIFT 0 6626f45ec7bSml29623 6636f45ec7bSml29623 typedef union _smx_cfg_dat_t { 6646f45ec7bSml29623 uint64_t value; 6656f45ec7bSml29623 struct { 6666f45ec7bSml29623 #if defined(_BIG_ENDIAN) 6676f45ec7bSml29623 uint32_t hdw; 6686f45ec7bSml29623 #endif 6696f45ec7bSml29623 struct { 6706f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 6716f45ec7bSml29623 uint32_t res_err_det:1; 6726f45ec7bSml29623 uint32_t ras_err_inj_en:1; 6736f45ec7bSml29623 uint32_t res:2; 6746f45ec7bSml29623 uint32_t trans_to_val:28; 6756f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 6766f45ec7bSml29623 uint32_t trans_to_val:28; 6776f45ec7bSml29623 uint32_t res:2; 6786f45ec7bSml29623 uint32_t ras_err_inj_en:1; 6796f45ec7bSml29623 uint32_t res_err_det:1; 6806f45ec7bSml29623 #endif 6816f45ec7bSml29623 } ldw; 6826f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 6836f45ec7bSml29623 uint32_t hdw; 6846f45ec7bSml29623 #endif 6856f45ec7bSml29623 } bits; 6866f45ec7bSml29623 } smx_cfg_dat_t, *p_smx_cfg_dat_t; 6876f45ec7bSml29623 6886f45ec7bSml29623 6896f45ec7bSml29623 #define SMX_INT_STAT_REG (FZC_PIO + 0x00048) 6906f45ec7bSml29623 #define SMX_INT_STAT_SM_MASK 0x00000000FFFFFFC0ULL 6916f45ec7bSml29623 #define SMX_INT_STAT_SM_SHIFT 6 6926f45ec7bSml29623 6936f45ec7bSml29623 typedef union _smx_int_stat_t { 6946f45ec7bSml29623 uint64_t value; 6956f45ec7bSml29623 struct { 6966f45ec7bSml29623 #if defined(_BIG_ENDIAN) 6976f45ec7bSml29623 uint32_t hdw; 6986f45ec7bSml29623 #endif 6996f45ec7bSml29623 struct { 7006f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 7016f45ec7bSml29623 uint32_t st_mc_stat:26; 7026f45ec7bSml29623 uint32_t res:6; 7036f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 7046f45ec7bSml29623 uint32_t res:6; 7056f45ec7bSml29623 uint32_t st_mc_stat:26; 7066f45ec7bSml29623 #endif 7076f45ec7bSml29623 } ldw; 7086f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 7096f45ec7bSml29623 uint32_t hdw; 7106f45ec7bSml29623 #endif 7116f45ec7bSml29623 } bits; 7126f45ec7bSml29623 } smx_int_stat_t, *p_smx_int_stat_t; 7136f45ec7bSml29623 7146f45ec7bSml29623 7156f45ec7bSml29623 #define SMX_CTL_REG (FZC_PIO + 0x00050) 7166f45ec7bSml29623 7176f45ec7bSml29623 typedef union _smx_ctl_t { 7186f45ec7bSml29623 uint64_t value; 7196f45ec7bSml29623 struct { 7206f45ec7bSml29623 #if defined(_BIG_ENDIAN) 7216f45ec7bSml29623 uint32_t hdw; 7226f45ec7bSml29623 #endif 7236f45ec7bSml29623 struct { 7246f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 7256f45ec7bSml29623 uint32_t res1:21; 7266f45ec7bSml29623 uint32_t resp_err_inj:3; 7276f45ec7bSml29623 uint32_t res2:1; 7286f45ec7bSml29623 uint32_t xtb_err_inj:3; 7296f45ec7bSml29623 uint32_t res3:1; 7306f45ec7bSml29623 uint32_t dbg_sel:3; 7316f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 7326f45ec7bSml29623 uint32_t dbg_sel:3; 7336f45ec7bSml29623 uint32_t res3:1; 7346f45ec7bSml29623 uint32_t xtb_err_inj:3; 7356f45ec7bSml29623 uint32_t res2:1; 7366f45ec7bSml29623 uint32_t resp_err_inj:3; 7376f45ec7bSml29623 uint32_t res1:21; 7386f45ec7bSml29623 #endif 7396f45ec7bSml29623 } ldw; 7406f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 7416f45ec7bSml29623 uint32_t hdw; 7426f45ec7bSml29623 #endif 7436f45ec7bSml29623 } bits; 7446f45ec7bSml29623 } smx_ctl_t, *p_smx_ctl_t; 7456f45ec7bSml29623 7466f45ec7bSml29623 7476f45ec7bSml29623 #define SMX_DBG_VEC_REG (FZC_PIO + 0x00058) 7486f45ec7bSml29623 7496f45ec7bSml29623 typedef union _smx_dbg_vec_t { 7506f45ec7bSml29623 uint64_t value; 7516f45ec7bSml29623 struct { 7526f45ec7bSml29623 #if defined(_BIG_ENDIAN) 7536f45ec7bSml29623 uint32_t hdw; 7546f45ec7bSml29623 #endif 7556f45ec7bSml29623 struct { 7566f45ec7bSml29623 uint32_t dbg_tng_vec; 7576f45ec7bSml29623 } ldw; 7586f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 7596f45ec7bSml29623 uint32_t hdw; 7606f45ec7bSml29623 #endif 7616f45ec7bSml29623 } bits; 7626f45ec7bSml29623 } smx_dbg_vec_t, *p_smx_dbg_vec_t; 7636f45ec7bSml29623 7646f45ec7bSml29623 7656f45ec7bSml29623 /* 7666f45ec7bSml29623 * Debug registers 7676f45ec7bSml29623 */ 7686f45ec7bSml29623 7696f45ec7bSml29623 #define PIO_DBG_SEL_REG (FZC_PIO + 0x00060) 7706f45ec7bSml29623 7716f45ec7bSml29623 typedef union _pio_dbg_sel_t { 7726f45ec7bSml29623 uint64_t value; 7736f45ec7bSml29623 struct { 7746f45ec7bSml29623 #if defined(_BIG_ENDIAN) 7756f45ec7bSml29623 uint32_t hdw; 7766f45ec7bSml29623 #endif 7776f45ec7bSml29623 struct { 7786f45ec7bSml29623 uint32_t sel; 7796f45ec7bSml29623 } ldw; 7806f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 7816f45ec7bSml29623 uint32_t hdw; 7826f45ec7bSml29623 #endif 7836f45ec7bSml29623 } bits; 7846f45ec7bSml29623 } pio_dbg_sel_t, *p_pio_dbg_sel_t; 7856f45ec7bSml29623 7866f45ec7bSml29623 7876f45ec7bSml29623 #define PIO_TRAIN_VEC_REG (FZC_PIO + 0x00068) 7886f45ec7bSml29623 7896f45ec7bSml29623 typedef union _pio_tng_vec_t { 7906f45ec7bSml29623 uint64_t value; 7916f45ec7bSml29623 struct { 7926f45ec7bSml29623 #if defined(_BIG_ENDIAN) 7936f45ec7bSml29623 uint32_t hdw; 7946f45ec7bSml29623 #endif 7956f45ec7bSml29623 struct { 7966f45ec7bSml29623 uint32_t training_vec; 7976f45ec7bSml29623 } ldw; 7986f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 7996f45ec7bSml29623 uint32_t hdw; 8006f45ec7bSml29623 #endif 8016f45ec7bSml29623 } bits; 8026f45ec7bSml29623 } pio_tng_vec_t, *p_pio_tng_vec_t; 8036f45ec7bSml29623 8046f45ec7bSml29623 #define PIO_ARB_CTL_REG (FZC_PIO + 0x00070) 8056f45ec7bSml29623 8066f45ec7bSml29623 typedef union _pio_arb_ctl_t { 8076f45ec7bSml29623 uint64_t value; 8086f45ec7bSml29623 struct { 8096f45ec7bSml29623 #if defined(_BIG_ENDIAN) 8106f45ec7bSml29623 uint32_t hdw; 8116f45ec7bSml29623 #endif 8126f45ec7bSml29623 struct { 8136f45ec7bSml29623 uint32_t ctl; 8146f45ec7bSml29623 } ldw; 8156f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 8166f45ec7bSml29623 uint32_t hdw; 8176f45ec7bSml29623 #endif 8186f45ec7bSml29623 } bits; 8196f45ec7bSml29623 } pio_arb_ctl_t, *p_pio_arb_ctl_t; 8206f45ec7bSml29623 8216f45ec7bSml29623 #define PIO_ARB_DBG_VEC_REG (FZC_PIO + 0x00078) 8226f45ec7bSml29623 8236f45ec7bSml29623 typedef union _pio_arb_dbg_vec_t { 8246f45ec7bSml29623 uint64_t value; 8256f45ec7bSml29623 struct { 8266f45ec7bSml29623 #if defined(_BIG_ENDIAN) 8276f45ec7bSml29623 uint32_t hdw; 8286f45ec7bSml29623 #endif 8296f45ec7bSml29623 struct { 8306f45ec7bSml29623 uint32_t dbg_vector; 8316f45ec7bSml29623 } ldw; 8326f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 8336f45ec7bSml29623 uint32_t hdw; 8346f45ec7bSml29623 #endif 8356f45ec7bSml29623 } bits; 8366f45ec7bSml29623 } pio_arb_dbg_vec_t, *p_pio_arb_dbg_vec_t; 8376f45ec7bSml29623 8386f45ec7bSml29623 8396f45ec7bSml29623 /* 8406f45ec7bSml29623 * GPIO Registers 8416f45ec7bSml29623 */ 8426f45ec7bSml29623 8436f45ec7bSml29623 #define GPIO_EN_REG (FZC_PIO + 0x00028) 8446f45ec7bSml29623 #define GPIO_EN_ENABLE_MASK 0x000000000000FFFFULL 8456f45ec7bSml29623 #define GPIO_EN_ENABLE_SHIFT 0 8466f45ec7bSml29623 typedef union _gpio_en_t { 8476f45ec7bSml29623 uint64_t value; 8486f45ec7bSml29623 struct { 8496f45ec7bSml29623 #if defined(_BIG_ENDIAN) 8506f45ec7bSml29623 uint32_t hdw; 8516f45ec7bSml29623 #endif 8526f45ec7bSml29623 struct { 8536f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 8546f45ec7bSml29623 uint32_t res:16; 8556f45ec7bSml29623 uint32_t enable:16; 8566f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 8576f45ec7bSml29623 uint32_t enable:16; 8586f45ec7bSml29623 uint32_t res:16; 8596f45ec7bSml29623 #endif 8606f45ec7bSml29623 } ldw; 8616f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 8626f45ec7bSml29623 uint32_t hdw; 8636f45ec7bSml29623 #endif 8646f45ec7bSml29623 } bits; 8656f45ec7bSml29623 } gpio_en_t, *p_gpio_en_t; 8666f45ec7bSml29623 8676f45ec7bSml29623 #define GPIO_DATA_IN_REG (FZC_PIO + 0x00030) 8686f45ec7bSml29623 #define GPIO_DATA_IN_MASK 0x000000000000FFFFULL 8696f45ec7bSml29623 #define GPIO_DATA_IN_SHIFT 0 8706f45ec7bSml29623 typedef union _gpio_data_in_t { 8716f45ec7bSml29623 uint64_t value; 8726f45ec7bSml29623 struct { 8736f45ec7bSml29623 #if defined(_BIG_ENDIAN) 8746f45ec7bSml29623 uint32_t hdw; 8756f45ec7bSml29623 #endif 8766f45ec7bSml29623 struct { 8776f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 8786f45ec7bSml29623 uint32_t res:16; 8796f45ec7bSml29623 uint32_t data_in:16; 8806f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 8816f45ec7bSml29623 uint32_t data_in:16; 8826f45ec7bSml29623 uint32_t res:16; 8836f45ec7bSml29623 #endif 8846f45ec7bSml29623 } ldw; 8856f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 8866f45ec7bSml29623 uint32_t hdw; 8876f45ec7bSml29623 #endif 8886f45ec7bSml29623 } bits; 8896f45ec7bSml29623 } gpio_data_in_t, *p_gpio_data_in_t; 8906f45ec7bSml29623 8916f45ec7bSml29623 8926f45ec7bSml29623 /* 8936f45ec7bSml29623 * PCI Express Interface Module (PIM) registers 8946f45ec7bSml29623 */ 8956f45ec7bSml29623 #define PIM_CONTROL_REG (FZC_PIM + 0x0) 8966f45ec7bSml29623 #define PIM_CONTROL_DBG_SEL_MASK 0x000000000000000FULL 8976f45ec7bSml29623 #define PIM_CONTROL_DBG_SEL_SHIFT 0 8986f45ec7bSml29623 typedef union _pim_ctl_t { 8996f45ec7bSml29623 uint64_t value; 9006f45ec7bSml29623 struct { 9016f45ec7bSml29623 #if defined(_BIG_ENDIAN) 9026f45ec7bSml29623 uint32_t hdw; 9036f45ec7bSml29623 #endif 9046f45ec7bSml29623 struct { 9056f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 9066f45ec7bSml29623 uint32_t res:28; 9076f45ec7bSml29623 uint32_t dbg_sel:4; 9086f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 9096f45ec7bSml29623 uint32_t dbg_sel:4; 9106f45ec7bSml29623 uint32_t res:28; 9116f45ec7bSml29623 #endif 9126f45ec7bSml29623 } ldw; 9136f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 9146f45ec7bSml29623 uint32_t hdw; 9156f45ec7bSml29623 #endif 9166f45ec7bSml29623 } bits; 9176f45ec7bSml29623 } pim_ctl_t, *p_pim_ctl_t; 9186f45ec7bSml29623 9196f45ec7bSml29623 #define PIM_DBG_TRAINING_VEC_REG (FZC_PIM + 0x00008) 9206f45ec7bSml29623 #define PIM_DBG_TRAINING_VEC_MASK 0x00000000FFFFFFFFULL 9216f45ec7bSml29623 9226f45ec7bSml29623 #define PIM_INTR_STATUS_REG (FZC_PIM + 0x00010) 9236f45ec7bSml29623 #define PIM_INTR_STATUS_MASK 0x00000000FFFFFFFFULL 9246f45ec7bSml29623 9256f45ec7bSml29623 #define PIM_INTERNAL_STATUS_REG (FZC_PIM + 0x00018) 9266f45ec7bSml29623 #define PIM_INTERNAL_STATUS_MASK 0x00000000FFFFFFFFULL 9276f45ec7bSml29623 9286f45ec7bSml29623 #define PIM_INTR_MASK_REG (FZC_PIM + 0x00020) 9296f45ec7bSml29623 #define PIM_INTR_MASK_MASK 0x00000000FFFFFFFFULL 9306f45ec7bSml29623 9316f45ec7bSml29623 /* 9326f45ec7bSml29623 * Partitioning Logical pages Definition registers. 9336f45ec7bSml29623 * (used by both receive and transmit DMA channels) 9346f45ec7bSml29623 */ 9356f45ec7bSml29623 9366f45ec7bSml29623 /* Logical page definitions */ 9376f45ec7bSml29623 typedef union _log_page_vld_t { 9386f45ec7bSml29623 uint64_t value; 9396f45ec7bSml29623 struct { 9406f45ec7bSml29623 #if defined(_BIG_ENDIAN) 9416f45ec7bSml29623 uint32_t hdw; 9426f45ec7bSml29623 #endif 9436f45ec7bSml29623 struct { 9446f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 9456f45ec7bSml29623 uint32_t res1_1:28; 9466f45ec7bSml29623 uint32_t func:2; 9476f45ec7bSml29623 uint32_t page1:1; 9486f45ec7bSml29623 uint32_t page0:1; 9496f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 9506f45ec7bSml29623 uint32_t page0:1; 9516f45ec7bSml29623 uint32_t page1:1; 9526f45ec7bSml29623 uint32_t func:2; 9536f45ec7bSml29623 uint32_t res1_1:28; 9546f45ec7bSml29623 #endif 9556f45ec7bSml29623 } ldw; 9566f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 9576f45ec7bSml29623 uint32_t hdw; 9586f45ec7bSml29623 #endif 9596f45ec7bSml29623 } bits; 9606f45ec7bSml29623 } log_page_vld_t, *p_log_page_vld_t; 9616f45ec7bSml29623 9626f45ec7bSml29623 9636f45ec7bSml29623 #define DMA_LOG_PAGE_MASK_SHIFT 0 9646f45ec7bSml29623 #define DMA_LOG_PAGE_MASK_MASK 0x00000000ffffffffULL 9656f45ec7bSml29623 9666f45ec7bSml29623 /* Receive Logical Page Mask */ 9676f45ec7bSml29623 typedef union _log_page_mask_t { 9686f45ec7bSml29623 uint64_t value; 9696f45ec7bSml29623 struct { 9706f45ec7bSml29623 #if defined(_BIG_ENDIAN) 9716f45ec7bSml29623 uint32_t hdw; 9726f45ec7bSml29623 #endif 9736f45ec7bSml29623 struct { 9746f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 9756f45ec7bSml29623 uint32_t mask:32; 9766f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 9776f45ec7bSml29623 uint32_t mask:32; 9786f45ec7bSml29623 #endif 9796f45ec7bSml29623 } ldw; 9806f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 9816f45ec7bSml29623 uint32_t hdw; 9826f45ec7bSml29623 #endif 9836f45ec7bSml29623 } bits; 9846f45ec7bSml29623 } log_page_mask_t, *p_log_page_mask_t; 9856f45ec7bSml29623 9866f45ec7bSml29623 9876f45ec7bSml29623 /* Receive Logical Page Value */ 9886f45ec7bSml29623 #define DMA_LOG_PAGE_VALUE_SHIFT 0 9896f45ec7bSml29623 #define DMA_LOG_PAGE_VALUE_MASK 0x00000000ffffffffULL 9906f45ec7bSml29623 9916f45ec7bSml29623 /* Receive Logical Page Value */ 9926f45ec7bSml29623 typedef union _log_page_value_t { 9936f45ec7bSml29623 uint64_t value; 9946f45ec7bSml29623 struct { 9956f45ec7bSml29623 #if defined(_BIG_ENDIAN) 9966f45ec7bSml29623 uint32_t hdw; 9976f45ec7bSml29623 #endif 9986f45ec7bSml29623 struct { 9996f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 10006f45ec7bSml29623 uint32_t value:32; 10016f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 10026f45ec7bSml29623 uint32_t value:32; 10036f45ec7bSml29623 #endif 10046f45ec7bSml29623 } ldw; 10056f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 10066f45ec7bSml29623 uint32_t hdw; 10076f45ec7bSml29623 #endif 10086f45ec7bSml29623 } bits; 10096f45ec7bSml29623 } log_page_value_t, *p_log_page_value_t; 10106f45ec7bSml29623 10116f45ec7bSml29623 /* Receive Logical Page Relocation */ 10126f45ec7bSml29623 #define DMA_LOG_PAGE_RELO_SHIFT 0 /* bits 31:0 */ 10136f45ec7bSml29623 #define DMA_LOG_PAGE_RELO_MASK 0x00000000ffffffffULL 10146f45ec7bSml29623 10156f45ec7bSml29623 /* Receive Logical Page Relocation */ 10166f45ec7bSml29623 typedef union _log_page_relo_t { 10176f45ec7bSml29623 uint64_t value; 10186f45ec7bSml29623 struct { 10196f45ec7bSml29623 #if defined(_BIG_ENDIAN) 10206f45ec7bSml29623 uint32_t hdw; 10216f45ec7bSml29623 #endif 10226f45ec7bSml29623 struct { 10236f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 10246f45ec7bSml29623 uint32_t relo:32; 10256f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 10266f45ec7bSml29623 uint32_t relo:32; 10276f45ec7bSml29623 #endif 10286f45ec7bSml29623 } ldw; 10296f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 10306f45ec7bSml29623 uint32_t hdw; 10316f45ec7bSml29623 #endif 10326f45ec7bSml29623 } bits; 10336f45ec7bSml29623 } log_page_relo_t, *p_log_page_relo_t; 10346f45ec7bSml29623 10356f45ec7bSml29623 10366f45ec7bSml29623 /* Receive Logical Page Handle */ 10376f45ec7bSml29623 #define DMA_LOG_PAGE_HANDLE_SHIFT 0 /* bits 19:0 */ 10386f45ec7bSml29623 #define DMA_LOG_PAGE_HANDLE_MASK 0x00000000ffffffffULL 10396f45ec7bSml29623 10406f45ec7bSml29623 /* Receive Logical Page Handle */ 10416f45ec7bSml29623 typedef union _log_page_hdl_t { 10426f45ec7bSml29623 uint64_t value; 10436f45ec7bSml29623 struct { 10446f45ec7bSml29623 #if defined(_BIG_ENDIAN) 10456f45ec7bSml29623 uint32_t hdw; 10466f45ec7bSml29623 #endif 10476f45ec7bSml29623 struct { 10486f45ec7bSml29623 #if defined(_BIT_FIELDS_HTOL) 10496f45ec7bSml29623 uint32_t res1_1:12; 10506f45ec7bSml29623 uint32_t handle:20; 10516f45ec7bSml29623 #elif defined(_BIT_FIELDS_LTOH) 10526f45ec7bSml29623 uint32_t handle:20; 10536f45ec7bSml29623 uint32_t res1_1:12; 10546f45ec7bSml29623 #endif 10556f45ec7bSml29623 } ldw; 10566f45ec7bSml29623 #if !defined(_BIG_ENDIAN) 10576f45ec7bSml29623 uint32_t hdw; 10586f45ec7bSml29623 #endif 10596f45ec7bSml29623 } bits; 10606f45ec7bSml29623 } log_page_hdl_t, *p_log_page_hdl_t; 10616f45ec7bSml29623 10626f45ec7bSml29623 #ifdef __cplusplus 10636f45ec7bSml29623 } 10646f45ec7bSml29623 #endif 10656f45ec7bSml29623 10666f45ec7bSml29623 #endif /* _SYS_NXGE_NXGE_HW_H */ 1067