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