| /* |
| * CDDL HEADER START |
| * |
| * The contents of this file are subject to the terms of the |
| * Common Development and Distribution License (the "License"). |
| * You may not use this file except in compliance with the License. |
| * |
| * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
| * or http://www.opensolaris.org/os/licensing. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * |
| * When distributing Covered Code, include this CDDL HEADER in each |
| * file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
| * If applicable, add the following below this CDDL HEADER, with the |
| * fields enclosed by brackets "[]" replaced with your own identifying |
| * information: Portions Copyright [yyyy] [name of copyright owner] |
| * |
| * CDDL HEADER END |
| */ |
| /* |
| * Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
| * Use is subject to license terms. |
| */ |
| |
| #ifndef _HXGE_PEU_HW_H |
| #define _HXGE_PEU_HW_H |
| |
| #pragma ident "%Z%%M% %I% %E% SMI" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define PIO_LDSV_BASE_ADDR 0X800000 |
| #define PIO_BASE_ADDR 0X000000 |
| #define PIO_LDMASK_BASE_ADDR 0XA00000 |
| |
| #define DEVICE_VENDOR_ID (PIO_BASE_ADDR + 0x0) |
| #define STATUS_COMMAND (PIO_BASE_ADDR + 0x4) |
| #define CLASSCODE_REV_ID (PIO_BASE_ADDR + 0x8) |
| #define BIST_HDRTYP_LATTMR_CASHLSZ (PIO_BASE_ADDR + 0xC) |
| #define PIO_BAR0 (PIO_BASE_ADDR + 0x10) |
| #define PIO_BAR1 (PIO_BASE_ADDR + 0x14) |
| #define MSIX_BAR0 (PIO_BASE_ADDR + 0x18) |
| #define MSIX_BAR1 (PIO_BASE_ADDR + 0x1C) |
| #define VIRT_BAR0 (PIO_BASE_ADDR + 0x20) |
| #define VIRT_BAR1 (PIO_BASE_ADDR + 0x24) |
| #define CIS_PTR (PIO_BASE_ADDR + 0x28) |
| #define SUB_VENDOR_ID (PIO_BASE_ADDR + 0x2C) |
| #define EXP_ROM_BAR (PIO_BASE_ADDR + 0x30) |
| #define CAP_PTR (PIO_BASE_ADDR + 0x34) |
| #define INT_LINE (PIO_BASE_ADDR + 0x3C) |
| #define PM_CAP (PIO_BASE_ADDR + 0x40) |
| #define PM_CTRL_STAT (PIO_BASE_ADDR + 0x44) |
| #define MSI_CAP (PIO_BASE_ADDR + 0x50) |
| #define MSI_LO_ADDR (PIO_BASE_ADDR + 0x54) |
| #define MSI_HI_ADDR (PIO_BASE_ADDR + 0x58) |
| #define MSI_DATA (PIO_BASE_ADDR + 0x5C) |
| #define MSI_MASK (PIO_BASE_ADDR + 0x60) |
| #define MSI_PEND (PIO_BASE_ADDR + 0x64) |
| #define MSIX_CAP (PIO_BASE_ADDR + 0x70) |
| #define MSIX_TAB_OFF (PIO_BASE_ADDR + 0x74) |
| #define MSIX_PBA_OFF (PIO_BASE_ADDR + 0x78) |
| #define PCIE_CAP (PIO_BASE_ADDR + 0x80) |
| #define DEV_CAP (PIO_BASE_ADDR + 0x84) |
| #define DEV_STAT_CTRL (PIO_BASE_ADDR + 0x88) |
| #define LNK_CAP (PIO_BASE_ADDR + 0x8C) |
| #define LNK_STAT_CTRL (PIO_BASE_ADDR + 0x90) |
| #define VEN_CAP_HDR (PIO_BASE_ADDR + 0x94) |
| #define VEN_CTRL (PIO_BASE_ADDR + 0x98) |
| #define VEN_PRT_HDR (PIO_BASE_ADDR + 0x9C) |
| #define ACKLAT_REPLAY (PIO_BASE_ADDR + 0xA0) |
| #define OTH_MSG (PIO_BASE_ADDR + 0xA4) |
| #define FORCE_LINK (PIO_BASE_ADDR + 0xA8) |
| #define ACK_FREQ (PIO_BASE_ADDR + 0xAC) |
| #define LINK_CTRL (PIO_BASE_ADDR + 0xB0) |
| #define LANE_SKEW (PIO_BASE_ADDR + 0xB4) |
| #define SYMBOL_NUM (PIO_BASE_ADDR + 0xB8) |
| #define SYMB_TIM_RADM_FLT1 (PIO_BASE_ADDR + 0xBC) |
| #define RADM_FLT2 (PIO_BASE_ADDR + 0xC0) |
| #define CASCADE_DEB_REG0 (PIO_BASE_ADDR + 0xC8) |
| #define CASCADE_DEB_REG1 (PIO_BASE_ADDR + 0xCC) |
| #define TXP_FC_CREDIT_STAT (PIO_BASE_ADDR + 0xD0) |
| #define TXNP_FC_CREDIT_STAT (PIO_BASE_ADDR + 0xD4) |
| #define TXCPL_FC_CREDIT_STAT (PIO_BASE_ADDR + 0xD8) |
| #define QUEUE_STAT (PIO_BASE_ADDR + 0xDC) |
| #define GBT_DEBUG0 (PIO_BASE_ADDR + 0xE0) |
| #define GBT_DEBUG1 (PIO_BASE_ADDR + 0xE4) |
| #define GBT_DEBUG2 (PIO_BASE_ADDR + 0xE8) |
| #define GBT_DEBUG3 (PIO_BASE_ADDR + 0xEC) |
| #define PIPE_DEBUG0 (PIO_BASE_ADDR + 0xF0) |
| #define PIPE_DEBUG1 (PIO_BASE_ADDR + 0xF4) |
| #define PIPE_DEBUG2 (PIO_BASE_ADDR + 0xF8) |
| #define PIPE_DEBUG3 (PIO_BASE_ADDR + 0xFC) |
| #define PCIE_ENH_CAP_HDR (PIO_BASE_ADDR + 0x100) |
| #define UNC_ERR_STAT (PIO_BASE_ADDR + 0x104) |
| #define UNC_ERR_MASK (PIO_BASE_ADDR + 0x108) |
| #define UNC_ERR_SVRTY (PIO_BASE_ADDR + 0x10C) |
| #define CORR_ERR_STAT (PIO_BASE_ADDR + 0x110) |
| #define CORR_ERR_MASK (PIO_BASE_ADDR + 0x114) |
| #define ADV_CAP_CTRL (PIO_BASE_ADDR + 0x118) |
| #define HDR_LOG0 (PIO_BASE_ADDR + 0x11C) |
| #define HDR_LOG1 (PIO_BASE_ADDR + 0x120) |
| #define HDR_LOG2 (PIO_BASE_ADDR + 0x124) |
| #define HDR_LOG3 (PIO_BASE_ADDR + 0x128) |
| #define PIPE_RX_TX_CONTROL (PIO_BASE_ADDR + 0x1000) |
| #define PIPE_RX_TX_STATUS (PIO_BASE_ADDR + 0x1004) |
| #define PIPE_RX_TX_PWR_CNTL (PIO_BASE_ADDR + 0x1008) |
| #define PIPE_RX_TX_PARAM (PIO_BASE_ADDR + 0x1010) |
| #define PIPE_RX_TX_CLOCK (PIO_BASE_ADDR + 0x1014) |
| #define PIPE_GLUE_CNTL0 (PIO_BASE_ADDR + 0x1018) |
| #define PIPE_GLUE_CNTL1 (PIO_BASE_ADDR + 0x101C) |
| #define HCR_REG (PIO_BASE_ADDR + 0x2000) |
| #define BLOCK_RESET (PIO_BASE_ADDR + 0x8000) |
| #define TIMEOUT_CFG (PIO_BASE_ADDR + 0x8004) |
| #define HEART_CFG (PIO_BASE_ADDR + 0x8008) |
| #define HEART_TIMER (PIO_BASE_ADDR + 0x800C) |
| #define CIP_GP_CTRL (PIO_BASE_ADDR + 0x8010) |
| #define CIP_STATUS (PIO_BASE_ADDR + 0x8014) |
| #define CIP_LINK_STAT (PIO_BASE_ADDR + 0x801C) |
| #define EPC_STAT (PIO_BASE_ADDR + 0x8020) |
| #define EPC_DATA (PIO_BASE_ADDR + 0x8024) |
| #define SPC_STAT (PIO_BASE_ADDR + 0x8030) |
| #define HOST2SPI_INDACC_ADDR (PIO_BASE_ADDR + 0x8050) |
| #define HOST2SPI_INDACC_CTRL (PIO_BASE_ADDR + 0x8054) |
| #define HOST2SPI_INDACC_DATA (PIO_BASE_ADDR + 0x8058) |
| #define BT_CTRL0 (PIO_BASE_ADDR + 0x8080) |
| #define BT_DATA0 (PIO_BASE_ADDR + 0x8084) |
| #define BT_INTMASK0 (PIO_BASE_ADDR + 0x8088) |
| #define BT_CTRL1 (PIO_BASE_ADDR + 0x8090) |
| #define BT_DATA1 (PIO_BASE_ADDR + 0x8094) |
| #define BT_INTMASK1 (PIO_BASE_ADDR + 0x8098) |
| #define BT_CTRL2 (PIO_BASE_ADDR + 0x80A0) |
| #define BT_DATA2 (PIO_BASE_ADDR + 0x80A4) |
| #define BT_INTMASK2 (PIO_BASE_ADDR + 0x80A8) |
| #define BT_CTRL3 (PIO_BASE_ADDR + 0x80B0) |
| #define BT_DATA3 (PIO_BASE_ADDR + 0x80B4) |
| #define BT_INTMASK3 (PIO_BASE_ADDR + 0x80B8) |
| #define DEBUG_SEL (PIO_BASE_ADDR + 0x80C0) |
| #define INDACC_MEM0_CTRL (PIO_BASE_ADDR + 0x80C4) |
| #define INDACC_MEM0_DATA0 (PIO_BASE_ADDR + 0x80C8) |
| #define INDACC_MEM0_DATA1 (PIO_BASE_ADDR + 0x80CC) |
| #define INDACC_MEM0_DATA2 (PIO_BASE_ADDR + 0x80D0) |
| #define INDACC_MEM0_DATA3 (PIO_BASE_ADDR + 0x80D4) |
| #define INDACC_MEM0_PRTY (PIO_BASE_ADDR + 0x80D8) |
| #define INDACC_MEM1_CTRL (PIO_BASE_ADDR + 0x80DC) |
| #define INDACC_MEM1_DATA0 (PIO_BASE_ADDR + 0x80E0) |
| #define INDACC_MEM1_DATA1 (PIO_BASE_ADDR + 0x80E4) |
| #define INDACC_MEM1_DATA2 (PIO_BASE_ADDR + 0x80E8) |
| #define INDACC_MEM1_DATA3 (PIO_BASE_ADDR + 0x80EC) |
| #define INDACC_MEM1_PRTY (PIO_BASE_ADDR + 0x80F0) |
| #define PHY_DEBUG_TRAINING_VEC (PIO_BASE_ADDR + 0x80F4) |
| #define PEU_DEBUG_TRAINING_VEC (PIO_BASE_ADDR + 0x80F8) |
| #define PIPE_CFG0 (PIO_BASE_ADDR + 0x8120) |
| #define PIPE_CFG1 (PIO_BASE_ADDR + 0x8124) |
| #define CIP_BAR_MASK_CFG (PIO_BASE_ADDR + 0x8134) |
| #define CIP_BAR_MASK (PIO_BASE_ADDR + 0x8138) |
| #define CIP_LDSV0_STAT (PIO_BASE_ADDR + 0x8140) |
| #define CIP_LDSV1_STAT (PIO_BASE_ADDR + 0x8144) |
| #define PEU_INTR_STAT (PIO_BASE_ADDR + 0x8148) |
| #define PEU_INTR_MASK (PIO_BASE_ADDR + 0x814C) |
| #define PEU_INTR_STAT_MIRROR (PIO_BASE_ADDR + 0x8150) |
| #define CPL_HDRQ_PERR_LOC (PIO_BASE_ADDR + 0x8154) |
| #define CPL_DATAQ_PERR_LOC (PIO_BASE_ADDR + 0x8158) |
| #define RETR_PERR_LOC (PIO_BASE_ADDR + 0x815C) |
| #define RETR_SOT_PERR_LOC (PIO_BASE_ADDR + 0x8160) |
| #define P_HDRQ_PERR_LOC (PIO_BASE_ADDR + 0x8164) |
| #define P_DATAQ_PERR_LOC (PIO_BASE_ADDR + 0x8168) |
| #define NP_HDRQ_PERR_LOC (PIO_BASE_ADDR + 0x816C) |
| #define NP_DATAQ_PERR_LOC (PIO_BASE_ADDR + 0x8170) |
| #define MSIX_PERR_LOC (PIO_BASE_ADDR + 0x8174) |
| #define HCR_PERR_LOC (PIO_BASE_ADDR + 0x8178) |
| #define TDC_PIOACC_ERR_LOG (PIO_BASE_ADDR + 0x8180) |
| #define RDC_PIOACC_ERR_LOG (PIO_BASE_ADDR + 0x8184) |
| #define PFC_PIOACC_ERR_LOG (PIO_BASE_ADDR + 0x8188) |
| #define VMAC_PIOACC_ERR_LOG (PIO_BASE_ADDR + 0x818C) |
| #define LD_GRP_CTRL (PIO_BASE_ADDR + 0x8300) |
| #define DEV_ERR_STAT (PIO_BASE_ADDR + 0x8380) |
| #define DEV_ERR_MASK (PIO_BASE_ADDR + 0x8384) |
| #define LD_INTR_TIM_RES (PIO_BASE_ADDR + 0x8390) |
| #define LDSV0 (PIO_LDSV_BASE_ADDR + 0x0) |
| #define LDSV1 (PIO_LDSV_BASE_ADDR + 0x4) |
| #define LD_INTR_MASK (PIO_LDMASK_BASE_ADDR + 0x0) |
| #define LD_INTR_MGMT (PIO_LDMASK_BASE_ADDR + 0x4) |
| #define SID (PIO_LDMASK_BASE_ADDR + 0x8) |
| |
| |
| /* |
| * Register: DeviceVendorId |
| * Device ID and Vendor ID |
| * Description: Device ID/Vendor ID |
| * Fields: |
| * Device ID Register: dbi writeable |
| * Vendor ID Register (Sun Microsystem): dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t device_id:16; |
| uint32_t vendor_id:16; |
| #else |
| uint32_t vendor_id:16; |
| uint32_t device_id:16; |
| #endif |
| } bits; |
| } device_vendor_id_t; |
| |
| |
| /* |
| * Register: StatusCommand |
| * Status and Command |
| * Description: Status/Command |
| * Fields: |
| * The device detected a parity error. The device detects |
| * Poisoned TLP received regardless of Command Register Parity |
| * Error Enable/Response bit. |
| * The device signaled a system error with SERR#. The device |
| * detects a UE, is about to send a F/NF error message; and if |
| * the Command Register SERR# enable is set. |
| * A transaction initiated by this device was terminated due to a |
| * Master Abort (i.e. Unsupported Request Completion Status was |
| * received). |
| * A transaction initiated by this device was terminated due to a |
| * Target Abort (i.e. Completer Abort Completion Status was |
| * received). |
| * Set when Completer Abort Completion Status is sent back to the |
| * RC. The request violated hydra's programming rules. |
| * The slowest DEVSEL# timing for this target device (N/A in |
| * PCIE) |
| * Master Data Parity Error - set if all the following conditions |
| * are true: received a poisoned TLP header or sending a poisoned |
| * write request; and the parity error response bit in the |
| * command register is set. |
| * Fast Back-to-Back Capable (N/A in PCIE) |
| * 66 MHz Capable (N/A in PCIE) |
| * Capabilities List - presence of extended capability item. |
| * INTx Status |
| * INTx Assertion Disable |
| * Fast Back-to-Back Enable (N/A in PCIE) |
| * This device can drive the SERR# line. |
| * IDSEL Stepping/Wait Cycle Control (N/A in PCIE) |
| * This device can drive the PERR# line. |
| * VGA Palette Snoop (N/A in PCIE) |
| * The device can issue Memory Write-and-Invalidate commands (N/A |
| * in PCIE) |
| * This device monitors for PCI Special Cycles (N/A in PCIE) |
| * This device's bus master capability is enabled. |
| * This device responds to PCI memory accesses. |
| * This device responds to PCI IO accesses (No I/O space used in |
| * Hydra) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t det_par_err:1; |
| uint32_t sig_serr:1; |
| uint32_t rcv_mstr_abrt:1; |
| uint32_t rcv_tgt_abrt:1; |
| uint32_t sig_tgt_abrt:1; |
| uint32_t devsel_timing:2; |
| uint32_t mstr_dpe:1; |
| uint32_t fast_b2b_cap:1; |
| uint32_t rsrvd:1; |
| uint32_t mhz_cap:1; |
| uint32_t cap_list:1; |
| uint32_t intx_stat:1; |
| uint32_t rsrvd1:3; |
| uint32_t rsrvd2:5; |
| uint32_t intx_dis:1; |
| uint32_t fast_b2b_en:1; |
| uint32_t serr_en:1; |
| uint32_t idsel_step:1; |
| uint32_t par_err_en:1; |
| uint32_t vga_snoop:1; |
| uint32_t mwi_en:1; |
| uint32_t special_cycle:1; |
| uint32_t bm_en:1; |
| uint32_t mem_sp_en:1; |
| uint32_t io_sp_en:1; |
| #else |
| uint32_t io_sp_en:1; |
| uint32_t mem_sp_en:1; |
| uint32_t bm_en:1; |
| uint32_t special_cycle:1; |
| uint32_t mwi_en:1; |
| uint32_t vga_snoop:1; |
| uint32_t par_err_en:1; |
| uint32_t idsel_step:1; |
| uint32_t serr_en:1; |
| uint32_t fast_b2b_en:1; |
| uint32_t intx_dis:1; |
| uint32_t rsrvd2:5; |
| uint32_t rsrvd1:3; |
| uint32_t intx_stat:1; |
| uint32_t cap_list:1; |
| uint32_t mhz_cap:1; |
| uint32_t rsrvd:1; |
| uint32_t fast_b2b_cap:1; |
| uint32_t mstr_dpe:1; |
| uint32_t devsel_timing:2; |
| uint32_t sig_tgt_abrt:1; |
| uint32_t rcv_tgt_abrt:1; |
| uint32_t rcv_mstr_abrt:1; |
| uint32_t sig_serr:1; |
| uint32_t det_par_err:1; |
| #endif |
| } bits; |
| } status_command_t; |
| |
| |
| /* |
| * Register: ClasscodeRevId |
| * Class Code, and Revision ID |
| * Description: Class Code/Revision ID |
| * Fields: |
| * Base Class (Network Controller): dbi writeable |
| * Sub Class (Ethernet Controller): dbi writeable |
| * Programming Interface: dbi writeable |
| * Revision ID: dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_class:8; |
| uint32_t sub_class:8; |
| uint32_t prog_if:8; |
| uint32_t rev_id:8; |
| #else |
| uint32_t rev_id:8; |
| uint32_t prog_if:8; |
| uint32_t sub_class:8; |
| uint32_t base_class:8; |
| #endif |
| } bits; |
| } classcode_rev_id_t; |
| |
| |
| /* |
| * Register: BistHdrtypLattmrCashlsz |
| * BIST, Header Type, Latency Timer, and Cache Line Size |
| * Description: BIST, Latency Timer etc |
| * Fields: |
| * BIST is not supported. Header Type Fields |
| * Multi-Function Device: dbi writeable |
| * Configuration Header Format. 0 = Type 0. |
| * Master Latency Timer. (N/A in PCIE) |
| * Cache line size for legacy compatibility (N/A in PCIE) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t value:8; |
| uint32_t mult_func_dev:1; |
| uint32_t cfg_hdr_fmt:7; |
| uint32_t timer:8; |
| uint32_t cache_line_sz:8; |
| #else |
| uint32_t cache_line_sz:8; |
| uint32_t timer:8; |
| uint32_t cfg_hdr_fmt:7; |
| uint32_t mult_func_dev:1; |
| uint32_t value:8; |
| #endif |
| } bits; |
| } bist_hdrtyp_lattmr_cashlsz_t; |
| |
| |
| /* |
| * Register: PioBar0 |
| * PIO BAR0 |
| * Description: PIO BAR0 - For Hydra PIO space PIO BAR1 & PIO BAR0 |
| * are together configured as a 64b BAR register (Synopsys core |
| * implementation dependent) where PIO BAR1 handles the upper address |
| * bits and PIO BAR0 handles the lower address bits. |
| * Fields: |
| * Base Address Relocation : indirect dbi writeable via bar0Mask |
| * register in EP core |
| * Base Address for PIO (16MB space) : indirect dbi writeable via |
| * bar0Mask register in EP core |
| * Prefetchable if memory BAR (PIOs not prefetchable): dbi |
| * writeable |
| * If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64 |
| * bit): dbi writeable |
| * I/O or Memory space indicator (0 = memory BAR): dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_lo:8; |
| uint32_t base_addr:20; |
| uint32_t pftch:1; |
| uint32_t type:2; |
| uint32_t mem_sp_ind:1; |
| #else |
| uint32_t mem_sp_ind:1; |
| uint32_t type:2; |
| uint32_t pftch:1; |
| uint32_t base_addr:20; |
| uint32_t base_addr_rel_lo:8; |
| #endif |
| } bits; |
| } pio_bar0_t; |
| |
| |
| /* |
| * Register: PioBar1 |
| * PIO BAR1 |
| * Description: PIO BAR1 |
| * Fields: |
| * Base Address Relocation : indirect dbi writeable via bar0Mask |
| * register in EP core |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_hi:32; |
| #else |
| uint32_t base_addr_rel_hi:32; |
| #endif |
| } bits; |
| } pio_bar1_t; |
| |
| |
| /* |
| * Register: MsixBar0 |
| * MSIX BAR0 |
| * Description: MSIX BAR0 - For MSI-X Tables and PBA MSIX BAR1 & MSIX |
| * BAR0 are together configured as a 64b BAR register (Synopsys core |
| * implementation dependent) where MSIX BAR1 handles the upper |
| * address bits and MSIX BAR0 handles the lower address bits. |
| * Fields: |
| * Base Address Relocation : indirect dbi writeable via bar2Mask |
| * register in EP core |
| * Base Address for MSIX (16KB space) : indirect dbi writeable |
| * via bar2Mask register in EP core |
| * Prefetchable if memory BAR (Not prefetchable) : dbi writeable |
| * If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64 |
| * bit): dbi writeable |
| * I/O or Memory space indicator (0 = memory BAR) : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_lo:18; |
| uint32_t base_addr:10; |
| uint32_t pftch:1; |
| uint32_t type:2; |
| uint32_t mem_sp_ind:1; |
| #else |
| uint32_t mem_sp_ind:1; |
| uint32_t type:2; |
| uint32_t pftch:1; |
| uint32_t base_addr:10; |
| uint32_t base_addr_rel_lo:18; |
| #endif |
| } bits; |
| } msix_bar0_t; |
| |
| |
| /* |
| * Register: MsixBar1 |
| * MSIX BAR1 |
| * Description: MSIX BAR1 |
| * Fields: |
| * Base Address Relocation : indirect dbi writeable via bar2Mask |
| * register in EP core |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_hi:32; |
| #else |
| uint32_t base_addr_rel_hi:32; |
| #endif |
| } bits; |
| } msix_bar1_t; |
| |
| |
| /* |
| * Register: VirtBar0 |
| * Virtualization BAR0 |
| * Description: Virtualization BAR0 - Previously for Hydra |
| * Virtualization space This bar is no longer enabled and is not dbi |
| * writeable. VIRT BAR1 & VIRT BAR0 could be configured as a 64b BAR |
| * register (Synopsys core implementation dependent), but this is not |
| * used in hydra. |
| * Fields: |
| * Base Address Relocation |
| * Base Address for Virtualization (64KB space) |
| * Prefetchable if memory BAR (Not prefetchable) |
| * If memory BAR, then 32 or 64 bit BAR (00 = 32 bit, 10 = 64 |
| * bit) |
| * I/O or Memory space indicator (0 = memory BAR) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_lo:17; |
| uint32_t base_addr:11; |
| uint32_t pftch:1; |
| uint32_t type:2; |
| uint32_t mem_sp_ind:1; |
| #else |
| uint32_t mem_sp_ind:1; |
| uint32_t type:2; |
| uint32_t pftch:1; |
| uint32_t base_addr:11; |
| uint32_t base_addr_rel_lo:17; |
| #endif |
| } bits; |
| } virt_bar0_t; |
| |
| |
| /* |
| * Register: VirtBar1 |
| * Virtualization BAR1 |
| * Description: Previously for Virtualization BAR1 This bar is no |
| * longer enabled and is not dbi writeable. |
| * Fields: |
| * Base Address Relocation |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel_hi:32; |
| #else |
| uint32_t base_addr_rel_hi:32; |
| #endif |
| } bits; |
| } virt_bar1_t; |
| |
| |
| /* |
| * Register: CisPtr |
| * CardBus CIS Pointer |
| * Description: CardBus CIS Pointer |
| * Fields: |
| * CardBus CIS Pointer: dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t cis_ptr:32; |
| #else |
| uint32_t cis_ptr:32; |
| #endif |
| } bits; |
| } cis_ptr_t; |
| |
| |
| /* |
| * Register: SubVendorId |
| * Subsystem ID and Vendor ID |
| * Description: Subsystem ID and Vendor ID |
| * Fields: |
| * Subsystem ID as assigned by PCI-SIG : dbi writeable |
| * Subsystem Vendor ID as assigned by PCI-SIG : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t dev_id:16; |
| uint32_t vendor_id:16; |
| #else |
| uint32_t vendor_id:16; |
| uint32_t dev_id:16; |
| #endif |
| } bits; |
| } sub_vendor_id_t; |
| |
| |
| /* |
| * Register: ExpRomBar |
| * Expansion ROM BAR |
| * Description: Expansion ROM BAR - For Hydra EEPROM space |
| * Fields: |
| * Base Address Relocatable : indirect dbi writeable via |
| * romBarMask register in EP core |
| * Base Address for ROM (2MB) : indirect dbi writeable via |
| * romBarMask register in EP core |
| * ROM Enable: dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t base_addr_rel:11; |
| uint32_t base_addr:10; |
| uint32_t rsrvd:10; |
| uint32_t rom_en:1; |
| #else |
| uint32_t rom_en:1; |
| uint32_t rsrvd:10; |
| uint32_t base_addr:10; |
| uint32_t base_addr_rel:11; |
| #endif |
| } bits; |
| } exp_rom_bar_t; |
| |
| |
| /* |
| * Register: CapPtr |
| * Capabilities Pointer |
| * Description: Capabilities Pointer |
| * Fields: |
| * Pointer to PM Capability structure : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:24; |
| uint32_t pm_ptr:8; |
| #else |
| uint32_t pm_ptr:8; |
| uint32_t rsrvd:24; |
| #endif |
| } bits; |
| } cap_ptr_t; |
| |
| |
| /* |
| * Register: IntLine |
| * Interrupt Line |
| * Description: Interrupt Line |
| * Fields: |
| * Max Latency (N/A in PCIE) |
| * Minimum Grant (N/A in PCIE) |
| * Interrupt pin: dbi writeable |
| * Interrupt Line |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t max_lat:8; |
| uint32_t min_gnt:8; |
| uint32_t int_pin:8; |
| uint32_t int_line:8; |
| #else |
| uint32_t int_line:8; |
| uint32_t int_pin:8; |
| uint32_t min_gnt:8; |
| uint32_t max_lat:8; |
| #endif |
| } bits; |
| } int_line_t; |
| |
| |
| /* |
| * Register: PmCap |
| * Power Management Capability |
| * Description: Power Management Capability |
| * Fields: |
| * PME Support (N/A in Hydra): dbi writeable |
| * D2 Support (N/A in Hydra): dbi writeable |
| * D1 Support (N/A in Hydra): dbi writeable |
| * Aux Current (N/A in Hydra): dbi writeable |
| * Device Specific Initialization: dbi writeable |
| * PME Clock (N/A in PCIE) |
| * PM Spec Version: dbi writeable |
| * Next Capability Pointer: dbi writeable |
| * Power Management Capability ID: dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t pme_supt:5; |
| uint32_t d2_supt:1; |
| uint32_t d1_supt:1; |
| uint32_t aux_curr:3; |
| uint32_t dev_spec_init:1; |
| uint32_t rsrvd:1; |
| uint32_t pme_clk:1; |
| uint32_t pm_ver:3; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t pm_id:8; |
| #else |
| uint32_t pm_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t pm_ver:3; |
| uint32_t pme_clk:1; |
| uint32_t rsrvd:1; |
| uint32_t dev_spec_init:1; |
| uint32_t aux_curr:3; |
| uint32_t d1_supt:1; |
| uint32_t d2_supt:1; |
| uint32_t pme_supt:5; |
| #endif |
| } bits; |
| } pm_cap_t; |
| |
| |
| /* |
| * Register: PmCtrlStat |
| * Power Management Control and Status |
| * Description: Power Management Control and Status |
| * Fields: |
| * Data for additional info (N/A) |
| * Bus Power and Clock Control Enable (N/A in PCIE) |
| * B2/B3 Support (N/A in PCIE) |
| * Indicates if PME event occured |
| * Data Scale (N/A) |
| * Data Select (N/A) |
| * PME Enable (Sticky) |
| * Power State |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t pwr_data:8; |
| uint32_t pwr_clk_en:1; |
| uint32_t b2_b3_supt:1; |
| uint32_t rsrvd:6; |
| uint32_t pme_stat:1; |
| uint32_t data_scale:2; |
| uint32_t data_sel:4; |
| uint32_t pme_en:1; |
| uint32_t rsrvd1:6; |
| uint32_t pwr_st:2; |
| #else |
| uint32_t pwr_st:2; |
| uint32_t rsrvd1:6; |
| uint32_t pme_en:1; |
| uint32_t data_sel:4; |
| uint32_t data_scale:2; |
| uint32_t pme_stat:1; |
| uint32_t rsrvd:6; |
| uint32_t b2_b3_supt:1; |
| uint32_t pwr_clk_en:1; |
| uint32_t pwr_data:8; |
| #endif |
| } bits; |
| } pm_ctrl_stat_t; |
| |
| |
| /* |
| * Register: MsiCap |
| * MSI Capability |
| * Description: MSI Capability |
| * Fields: |
| * Mask and Pending bits available |
| * 64-bit Address Capable |
| * Multiple Messages Enabled |
| * Multiple Message Capable (32 messages = 0x5) |
| * MSI Enabled (if enabled, INTx must be diabled) |
| * Next Capability Pointer: dbi writeable |
| * MSI Capability ID |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:7; |
| uint32_t vect_mask:1; |
| uint32_t msi64_en:1; |
| uint32_t mult_msg_en:3; |
| uint32_t mult_msg_cap:3; |
| uint32_t msi_en:1; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t msi_cap_id:8; |
| #else |
| uint32_t msi_cap_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t msi_en:1; |
| uint32_t mult_msg_cap:3; |
| uint32_t mult_msg_en:3; |
| uint32_t msi64_en:1; |
| uint32_t vect_mask:1; |
| uint32_t rsrvd:7; |
| #endif |
| } bits; |
| } msi_cap_t; |
| |
| |
| /* |
| * Register: MsiLoAddr |
| * MSI Low Address |
| * Description: MSI Low Address |
| * Fields: |
| * Lower 32 bit Address |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t lo_addr:30; |
| uint32_t rsrvd:2; |
| #else |
| uint32_t rsrvd:2; |
| uint32_t lo_addr:30; |
| #endif |
| } bits; |
| } msi_lo_addr_t; |
| |
| |
| /* |
| * Register: MsiHiAddr |
| * MSI High Address |
| * Description: MSI High Address |
| * Fields: |
| * Upper 32 bit Address (only if msi64En = 1) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t hi_addr:32; |
| #else |
| uint32_t hi_addr:32; |
| #endif |
| } bits; |
| } msi_hi_addr_t; |
| |
| |
| /* |
| * Register: MsiData |
| * MSI Data |
| * Description: MSI Data |
| * Fields: |
| * MSI Data. Depending on the value for multMsgEn in the MSI |
| * Capability Register which determines the number of allocated |
| * vectors, bits [4:0] may be replaced with msiVector[4:0] bits |
| * to generate up to 32 MSI messages. # allocated vectors Actual |
| * messageData[4:0] ------------------- ------------------------ |
| * 1 DATA[4:0] (no replacement) 2 {DATA[4:1], msiVector[0]} 4 |
| * {DATA[4:2], msiVector[1:0]} 8 {DATA[4:3], msiVector[2:0]} 16 |
| * {DATA[4], msiVector[3:0]} 32 msiVector[4:0] (full replacement) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:16; |
| uint32_t data:16; |
| #else |
| uint32_t data:16; |
| uint32_t rsrvd:16; |
| #endif |
| } bits; |
| } msi_data_t; |
| |
| |
| /* |
| * Register: MsiMask |
| * MSI Mask |
| * Description: MSI Mask |
| * Fields: |
| * per vector MSI Mask bits |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t mask:32; |
| #else |
| uint32_t mask:32; |
| #endif |
| } bits; |
| } msi_mask_t; |
| |
| |
| /* |
| * Register: MsiPend |
| * MSI Pending |
| * Description: MSI Pending |
| * Fields: |
| * per vector MSI Pending bits |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t pend:32; |
| #else |
| uint32_t pend:32; |
| #endif |
| } bits; |
| } msi_pend_t; |
| |
| |
| /* |
| * Register: MsixCap |
| * MSIX Capability |
| * Description: MSIX Capability |
| * Fields: |
| * MSIX Enable (if enabled, MSI and INTx must be disabled) |
| * Function Mask (1 = all vectors masked regardless of per vector |
| * mask, 0 = each vector's mask |
| * Table Size (0x1F = 32 entries): dbi writeable |
| * Next Capability Pointer: dbi writeable |
| * MSIX Capability ID |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t msix_en:1; |
| uint32_t func_mask:1; |
| uint32_t rsrvd:3; |
| uint32_t tab_sz:11; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t msix_cap_id:8; |
| #else |
| uint32_t msix_cap_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t tab_sz:11; |
| uint32_t rsrvd:3; |
| uint32_t func_mask:1; |
| uint32_t msix_en:1; |
| #endif |
| } bits; |
| } msix_cap_t; |
| |
| |
| /* |
| * Register: MsixTabOff |
| * MSIX Table Offset |
| * Description: MSIX Table Offset |
| * Fields: |
| * Table Offset (Base address of MSIX Table = msixTabBir.BAR + |
| * msixTabOff) : dbi writeable |
| * Table BAR Indicator (0x2 = BAR2 at loc 0x18) : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t msix_tab_off:29; |
| uint32_t msix_tab_bir:3; |
| #else |
| uint32_t msix_tab_bir:3; |
| uint32_t msix_tab_off:29; |
| #endif |
| } bits; |
| } msix_tab_off_t; |
| |
| |
| /* |
| * Register: MsixPbaOff |
| * MSIX PBA Offset |
| * Description: MSIX PBA Offset |
| * Fields: |
| * Pending Bit Array (PBA) Offset (Base address of MSIX Table = |
| * msixTabBir.BAR + msixPbaOff); msixPbaOff is quad-aligned, i.e. |
| * starts at 0x2000 (half-way in MSI-X bar space. : dbi writeable |
| * Pending Bit Array (PBA) BAR Indicator (0x2 = BAR2 at loc 0x18) |
| * : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t msix_pba_off:29; |
| uint32_t msix_pba_bir:3; |
| #else |
| uint32_t msix_pba_bir:3; |
| uint32_t msix_pba_off:29; |
| #endif |
| } bits; |
| } msix_pba_off_t; |
| |
| |
| /* |
| * Register: PcieCap |
| * PCIE Capability |
| * Description: PCIE Capability |
| * Fields: |
| * Interrupt Message Number (updated by HW) |
| * Slot Implemented (Endpoint must be 0) |
| * PCIE Express Device Port Type (Endpoint) |
| * PCIE Express Capability Version |
| * Next Capability Pointer: dbi writeable |
| * PCI Express Capability ID |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:2; |
| uint32_t int_msg_num:5; |
| uint32_t pcie_slt_imp:1; |
| uint32_t pcie_dev_type:4; |
| uint32_t pcie_cap_ver:4; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t pcie_cap_id:8; |
| #else |
| uint32_t pcie_cap_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t pcie_cap_ver:4; |
| uint32_t pcie_dev_type:4; |
| uint32_t pcie_slt_imp:1; |
| uint32_t int_msg_num:5; |
| uint32_t rsrvd:2; |
| #endif |
| } bits; |
| } pcie_cap_t; |
| |
| |
| /* |
| * Register: DevCap |
| * Device Capability |
| * Description: Device Capability |
| * Fields: |
| * Slot Power Limit Scale (Msg from RC) Hydra can capture |
| * Received setSlotPowerLimit message; values in this field are |
| * ignored as no power scaling is possible. |
| * Slot Power Limit Value (Msg from RC) Hydra can capture |
| * Received setSlotPowerLimit message; values in this field are |
| * ignored as no power scaling is possible. |
| * Introduced in PCIe 1.1 specification. : dbi writeable |
| * L1 Acceptable Latency (4 - 8 us) : dbi writeable |
| * LOs Acceptable Latency (2 - 4 us) : dbi writeable |
| * Extended Tag Field Support (N/A) : dbi writeable |
| * Phantom Function Supported (N/A) : dbi writeable |
| * Maximum Payload Size supported (Hydra = 1KB) : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:4; |
| uint32_t slt_pwr_lmt_scle:2; |
| uint32_t slt_pwr_lmt_val:8; |
| uint32_t rsrvd1:2; |
| uint32_t role_based_err:1; |
| uint32_t rsrvd2:3; |
| uint32_t l1_lat:3; |
| uint32_t los_lat:3; |
| uint32_t ext_tag:1; |
| uint32_t phant_func:2; |
| uint32_t max_mtu:3; |
| #else |
| uint32_t max_mtu:3; |
| uint32_t phant_func:2; |
| uint32_t ext_tag:1; |
| uint32_t los_lat:3; |
| uint32_t l1_lat:3; |
| uint32_t rsrvd2:3; |
| uint32_t role_based_err:1; |
| uint32_t rsrvd1:2; |
| uint32_t slt_pwr_lmt_val:8; |
| uint32_t slt_pwr_lmt_scle:2; |
| uint32_t rsrvd:4; |
| #endif |
| } bits; |
| } dev_cap_t; |
| |
| |
| /* |
| * Register: DevStatCtrl |
| * Device Status and Control |
| * Description: Device Control |
| * Fields: |
| * Transaction Pending (1 if NP request not completed) |
| * Auxilliary Power Detected (1 if detected) |
| * Unsupported Request Detect |
| * Fatal Error Detected |
| * Non-Fatal Error Detected |
| * Correctable Error Detected ----- Control Fields |
| * Introduced in PCIe 1.1 specification. |
| * Maximum Read Request Size (default = 512B) for the device as a |
| * requester. 3'b000: 128 Bytes 3'b001: 256 Bytes 3'b010: 512 |
| * Bytes 3'b011: 1K Bytes 3'b100: 2K Bytes 3'b101: 4K Bytes |
| * 3'b110: Reserved 3'b111: Reserved |
| * No Snoop Enable This bit indicates the device "could", not |
| * that it does. Both this bit and the hydra specific peuCip |
| * register bit must be set for the value of this bit to impact |
| * the TLP header no snoop attribute. When both are set, hydra |
| * sets the no snoop attribute on all initiated TLPs. Software |
| * must guarantee the No Snoop attribute is used in the system |
| * correctly. |
| * Auxilliary Power PM Enable |
| * Phantom Function enable |
| * Extended Tag Field Enable |
| * Maximum Payload Size. 3-bit value has the same encodings as |
| * the maxRdSz field. |
| * Relaxed Ordering Enable This bit indicates the device "could", |
| * not that it does. Both this bit and the hydra specific peuCip |
| * register bit must be set for the value of this bit to impact |
| * the TLP header relaxed ordering attribute. When both are set, |
| * packet operations set the relaxed ordering attribute. Mailbox |
| * updates always set the relaxed ordering attribute to 0, |
| * regardless of this bit. When this bit is 0, the default |
| * Sun4u/Sun4v ordering model is used. |
| * Unsupported Request Report Enable |
| * Fatal Error Report Enable |
| * Non-Fatal Error Report Enable |
| * Correctable Error Report Enable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:10; |
| uint32_t trans_pend:1; |
| uint32_t aux_pwr_det:1; |
| uint32_t unsup_req_det:1; |
| uint32_t fat_err_det:1; |
| uint32_t nf_err_det:1; |
| uint32_t corr_err_det:1; |
| uint32_t pcie2pcix_brdg:1; |
| uint32_t max_rd_sz:3; |
| uint32_t no_snoop_en:1; |
| uint32_t aux_pwr_pm_en:1; |
| uint32_t phant_func_en:1; |
| uint32_t ext_tag_en:1; |
| uint32_t max_pld_sz:3; |
| uint32_t rlx_ord_en:1; |
| uint32_t unsup_req_en:1; |
| uint32_t fat_err_en:1; |
| uint32_t nf_err_en:1; |
| uint32_t corr_err_en:1; |
| #else |
| uint32_t corr_err_en:1; |
| uint32_t nf_err_en:1; |
| uint32_t fat_err_en:1; |
| uint32_t unsup_req_en:1; |
| uint32_t rlx_ord_en:1; |
| uint32_t max_pld_sz:3; |
| uint32_t ext_tag_en:1; |
| uint32_t phant_func_en:1; |
| uint32_t aux_pwr_pm_en:1; |
| uint32_t no_snoop_en:1; |
| uint32_t max_rd_sz:3; |
| uint32_t pcie2pcix_brdg:1; |
| uint32_t corr_err_det:1; |
| uint32_t nf_err_det:1; |
| uint32_t fat_err_det:1; |
| uint32_t unsup_req_det:1; |
| uint32_t aux_pwr_det:1; |
| uint32_t trans_pend:1; |
| uint32_t rsrvd:10; |
| #endif |
| } bits; |
| } dev_stat_ctrl_t; |
| |
| |
| /* |
| * Register: LnkCap |
| * Link Capability |
| * Description: Link Capability |
| * Fields: |
| * Port Number : dbi writeable |
| * Introduced in PCIe 1.1 specification. |
| * Introduced in PCIe 1.1 specification. |
| * Default Clock Power Management (N/A) Introduced in PCIe 1.1 |
| * specification. : dbi writeable |
| * Default L1 Exit Latency (32us to 64us => 0x6) : dbi writeable |
| * Default L0s Exit Latency (1us to 2us => 0x5) : dbi writeable |
| * Active Link PM Support (only L0s = 1) : dbi writeable |
| * Maximum Link Width (x8) : dbi writeable |
| * Maximum Link Speed (2.5 Gbps = 1) : dbi writeable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t prt_num:8; |
| uint32_t rsrvd:3; |
| uint32_t def_dll_act_rptg:1; |
| uint32_t def_surpise_down:1; |
| uint32_t def_clk_pm_cap:1; |
| uint32_t def_l1_lat:3; |
| uint32_t def_l0s_lat:3; |
| uint32_t as_lnk_pm_supt:2; |
| uint32_t max_lnk_wid:6; |
| uint32_t max_lnk_spd:4; |
| #else |
| uint32_t max_lnk_spd:4; |
| uint32_t max_lnk_wid:6; |
| uint32_t as_lnk_pm_supt:2; |
| uint32_t def_l0s_lat:3; |
| uint32_t def_l1_lat:3; |
| uint32_t def_clk_pm_cap:1; |
| uint32_t def_surpise_down:1; |
| uint32_t def_dll_act_rptg:1; |
| uint32_t rsrvd:3; |
| uint32_t prt_num:8; |
| #endif |
| } bits; |
| } lnk_cap_t; |
| |
| |
| /* |
| * Register: LnkStatCtrl |
| * Link Status and Control |
| * Description: Link Control |
| * Fields: |
| * Slot Clock Configuration (0 = using independent clock; pg 266 |
| * PCIe 1.1) : dbi writeable |
| * Link Training (N/A for EP) |
| * Training Error (N/A for EP) |
| * Negotiated Link Width (Max negotiated: x8) |
| * Negotiated Link Speed (Max negotiated: 1 = 2.5 Gbps) ----- |
| * Control Fields |
| * Introduced in PCIe 1.1. |
| * Extended Synch |
| * Common Clock Configuration |
| * Retrain Link (N/A for EP) |
| * Link Disable (N/A for EP) |
| * Read Completion Boundary (128B) |
| * Active State Link PM Control |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:2; |
| uint32_t dll_active:1; |
| uint32_t slt_clk_cfg:1; |
| uint32_t lnk_train:1; |
| uint32_t train_err:1; |
| uint32_t lnk_wid:6; |
| uint32_t lnk_spd:4; |
| uint32_t rsrvd1:7; |
| uint32_t en_clkpwr_mg:1; |
| uint32_t ext_sync:1; |
| uint32_t com_clk_cfg:1; |
| uint32_t retrain_lnk:1; |
| uint32_t lnk_dis:1; |
| uint32_t rd_cmpl_bndy:1; |
| uint32_t rsrvd2:1; |
| uint32_t aspm_ctrl:2; |
| #else |
| uint32_t aspm_ctrl:2; |
| uint32_t rsrvd2:1; |
| uint32_t rd_cmpl_bndy:1; |
| uint32_t lnk_dis:1; |
| uint32_t retrain_lnk:1; |
| uint32_t com_clk_cfg:1; |
| uint32_t ext_sync:1; |
| uint32_t en_clkpwr_mg:1; |
| uint32_t rsrvd1:7; |
| uint32_t lnk_spd:4; |
| uint32_t lnk_wid:6; |
| uint32_t train_err:1; |
| uint32_t lnk_train:1; |
| uint32_t slt_clk_cfg:1; |
| uint32_t dll_active:1; |
| uint32_t rsrvd:2; |
| #endif |
| } bits; |
| } lnk_stat_ctrl_t; |
| |
| |
| /* |
| * Register: VenCapHdr |
| * Vendor Specific Capability Header |
| * Description: Vendor Specific Capability Header |
| * Fields: |
| * Length |
| * Next Capbility Pointer |
| * Vendor Specific Capbility ID |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:8; |
| uint32_t len:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t ven_cap_id:8; |
| #else |
| uint32_t ven_cap_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t len:8; |
| uint32_t rsrvd:8; |
| #endif |
| } bits; |
| } ven_cap_hdr_t; |
| |
| |
| /* |
| * Register: VenCtrl |
| * Vendor Specific Control |
| * Description: Vendor Specific Control |
| * Fields: |
| * PCIe spec absolute minimum is 50usec - (likely ~10ms). PCIe |
| * spec absolute max is 50msec. Default set for 22.2 msec via |
| * adding time as follows: Bit 23: 3.21 secs <---POR 0 Bit 22: |
| * 201.3 msec <---POR 0 Bit 21: 100.8 msec <---POR 0 Bit 20: 25.2 |
| * msec <---POR 0 Bit 19: 12.6 msec <---POR 1 Bit 18: 6.3 msec |
| * <---POR 1 Bit 17: 3.3 msec <---POR 1 Bit 16: if 0: |
| * Baseline0=50usec; else Baseline1(use for |
| * simulation-only)=804nsec |
| * Interrupt Control Mode (00 = Reserved, 01 = INTx emulation, 10 |
| * = Reserved [Neptune INTx pins], 11 = Reserved [Neptune INTx |
| * emulation + pins] |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:8; |
| uint32_t eic_xtd_cpl_timout:8; |
| uint32_t rsrvd1:14; |
| uint32_t legacy_int_ctrl:2; |
| #else |
| uint32_t legacy_int_ctrl:2; |
| uint32_t rsrvd1:14; |
| uint32_t eic_xtd_cpl_timout:8; |
| uint32_t rsrvd:8; |
| #endif |
| } bits; |
| } ven_ctrl_t; |
| |
| |
| /* |
| * Register: VenPrtHdr |
| * Vendor Specific Port Logic Header |
| * Description: Vendor Specific Port Logic Header |
| * Fields: |
| * Length |
| * Next Capbility Pointer (END, no more) |
| * Vendor Specific Capbility ID |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:8; |
| uint32_t len:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t ven_cap_id:8; |
| #else |
| uint32_t ven_cap_id:8; |
| uint32_t nxt_cap_ptr:8; |
| uint32_t len:8; |
| uint32_t rsrvd:8; |
| #endif |
| } bits; |
| } ven_prt_hdr_t; |
| |
| |
| /* |
| * Register: AcklatReplay |
| * Ack Latency and Replay Timer register |
| * Description: Ack Latency/Replay Timer |
| * Fields: |
| * Replay Time limit = 16'd12429/`cxNb where cxNb=1. |
| * Round Trip Latency Time limit = 9d'4143/`cxNb where cxNb=1. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rep_tim:16; |
| uint32_t ack_tim:16; |
| #else |
| uint32_t ack_tim:16; |
| uint32_t rep_tim:16; |
| #endif |
| } bits; |
| } acklat_replay_t; |
| |
| |
| /* |
| * Register: OthMsg |
| * Other Message Register |
| * Description: Other Message Register |
| * Fields: |
| * Message to send/Data to corrupt LCRC |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t oth_msg:32; |
| #else |
| uint32_t oth_msg:32; |
| #endif |
| } bits; |
| } oth_msg_t; |
| |
| |
| /* |
| * Register: ForceLink |
| * Port Force Link |
| * Description: Other Message Register |
| * Fields: |
| * LinkState that the EP core will be forced to when ForceLink |
| * (bit[15]) is set |
| * Forces Link to the specified LinkState field below. Write this |
| * bit to generate a pulse to the ltssm. It clears itself once |
| * the pulse is generated. Read will always return 0. |
| * Link Number - N/A for Endpoint |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:10; |
| uint32_t link_state:6; |
| uint32_t force_link:1; |
| uint32_t rsrvd1:7; |
| uint32_t link_num:8; |
| #else |
| uint32_t link_num:8; |
| uint32_t rsrvd1:7; |
| uint32_t force_link:1; |
| uint32_t link_state:6; |
| uint32_t rsrvd:10; |
| #endif |
| } bits; |
| } force_link_t; |
| |
| |
| /* |
| * Register: AckFreq |
| * ACK Frequency Register |
| * Description: ACK Frequency Register |
| * Fields: |
| * NFTS = 115. |
| * NFTS = 115. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:2; |
| uint32_t l1_entr_latency:3; |
| uint32_t los_entr_latency:3; |
| uint32_t cx_comm_nfts:8; |
| uint32_t nfts:8; |
| uint32_t def_ack_freq:8; |
| #else |
| uint32_t def_ack_freq:8; |
| uint32_t nfts:8; |
| uint32_t cx_comm_nfts:8; |
| uint32_t los_entr_latency:3; |
| uint32_t l1_entr_latency:3; |
| uint32_t rsrvd:2; |
| #endif |
| } bits; |
| } ack_freq_t; |
| |
| |
| /* |
| * Register: LinkCtrl |
| * Port Link Control |
| * Description: Port Link Control |
| * Fields: |
| * 8 lanes |
| * When set, this bit is only set for 1 cycle. A write of 0 has |
| * no effect. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:4; |
| uint32_t rsrvd1:2; |
| uint32_t corrupt_lcrc:1; |
| uint32_t rsrvd2:1; |
| uint32_t rsrvd3:2; |
| uint32_t link_mode_en:6; |
| uint32_t rsrvd4:4; |
| uint32_t rsrvd5:4; |
| uint32_t fast_link_mode:1; |
| uint32_t rsrvd6:1; |
| uint32_t dll_link_en:1; |
| uint32_t rsrvd7:1; |
| uint32_t reset_assert:1; |
| uint32_t lpbk_en:1; |
| uint32_t scram_dis:1; |
| uint32_t oth_msg_req:1; |
| #else |
| uint32_t oth_msg_req:1; |
| uint32_t scram_dis:1; |
| uint32_t lpbk_en:1; |
| uint32_t reset_assert:1; |
| uint32_t rsrvd7:1; |
| uint32_t dll_link_en:1; |
| uint32_t rsrvd6:1; |
| uint32_t fast_link_mode:1; |
| uint32_t rsrvd5:4; |
| uint32_t rsrvd4:4; |
| uint32_t link_mode_en:6; |
| uint32_t rsrvd3:2; |
| uint32_t rsrvd2:1; |
| uint32_t corrupt_lcrc:1; |
| uint32_t rsrvd1:2; |
| uint32_t rsrvd:4; |
| #endif |
| } bits; |
| } link_ctrl_t; |
| |
| |
| /* |
| * Register: LaneSkew |
| * Lane Skew Register |
| * Description: Lane Skew Register |
| * Fields: |
| * prevents EP core from sending Ack/Nack DLLPs |
| * prevents EP core from sending FC DLLPs |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t dis_lane_to_lane_deskew:1; |
| uint32_t rsrvd:5; |
| uint32_t ack_nack_dis:1; |
| uint32_t flow_control_dis:1; |
| uint32_t tx_lane_skew:24; |
| #else |
| uint32_t tx_lane_skew:24; |
| uint32_t flow_control_dis:1; |
| uint32_t ack_nack_dis:1; |
| uint32_t rsrvd:5; |
| uint32_t dis_lane_to_lane_deskew:1; |
| #endif |
| } bits; |
| } lane_skew_t; |
| |
| |
| /* |
| * Register: SymbolNum |
| * Symbol Number Register |
| * Description: Symbol Number Register |
| * Fields: |
| * Timer modifier for Flow control Watch Dog timer |
| * Timer modifier for Ack/Nack latency timer |
| * Timer modifier for Replay timer |
| * Note: rtl uses defaultNSkipSymbols |
| * Note: rtl initialized using defaultNTs1Symbols |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:3; |
| uint32_t fc_wdog_tim_mod:5; |
| uint32_t ack_nack_tim_mod:5; |
| uint32_t rep_tim_mod:5; |
| uint32_t rsrvd1:3; |
| uint32_t num_skip_symb:3; |
| uint32_t rsrvd2:4; |
| uint32_t num_ts_symb:4; |
| #else |
| uint32_t num_ts_symb:4; |
| uint32_t rsrvd2:4; |
| uint32_t num_skip_symb:3; |
| uint32_t rsrvd1:3; |
| uint32_t rep_tim_mod:5; |
| uint32_t ack_nack_tim_mod:5; |
| uint32_t fc_wdog_tim_mod:5; |
| uint32_t rsrvd:3; |
| #endif |
| } bits; |
| } symbol_num_t; |
| |
| |
| /* |
| * Register: SymbTimRadmFlt1 |
| * Symbol Timer Register / RADM Filter Mask Register 1 |
| * Description: Symbol Timer / RADM Filter Mask 1 |
| * Fields: |
| * No masking errors while filtering |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t mask_radm_flt:16; |
| uint32_t dis_fc_wdog:1; |
| uint32_t rsrvd:4; |
| uint32_t skip_interval:11; |
| #else |
| uint32_t skip_interval:11; |
| uint32_t rsrvd:4; |
| uint32_t dis_fc_wdog:1; |
| uint32_t mask_radm_flt:16; |
| #endif |
| } bits; |
| } symb_tim_radm_flt1_t; |
| |
| |
| /* |
| * Register: RadmFlt2 |
| * RADM Filter Mask Register 2 |
| * Description: RADM Filter Mask Register 2 |
| * Fields: |
| * [31:2] = Reserved [1]=0=Vendor MSG Type0 dropped & treated as |
| * UR, [0]=0=Vendor MSG Type1 silently dropped. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t mask_radm_flt:32; |
| #else |
| uint32_t mask_radm_flt:32; |
| #endif |
| } bits; |
| } radm_flt2_t; |
| |
| |
| /* |
| * Register: CascadeDebReg0 |
| * Cascade core (EP) Debug Register 0 |
| * Description: Debug Register 0 EP Core SII Interface bus : |
| * cxplDebugInfo[31:0] |
| * Fields: |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rmlh_ts_link_ctrl:4; |
| uint32_t rmlh_ts_lane_num_is_k237:1; |
| uint32_t rmlh_ts_link_num_is_k237:1; |
| uint32_t rmlh_rcvd_idle_bit0:1; |
| uint32_t rmlh_rcvd_idle_bit1:1; |
| uint32_t mac_phy_txdata:16; |
| uint32_t mac_phy_txdatak:2; |
| uint32_t rsrvd:1; |
| uint32_t xmlh_ltssm_state:5; |
| #else |
| uint32_t xmlh_ltssm_state:5; |
| uint32_t rsrvd:1; |
| uint32_t mac_phy_txdatak:2; |
| uint32_t mac_phy_txdata:16; |
| uint32_t rmlh_rcvd_idle_bit1:1; |
| uint32_t rmlh_rcvd_idle_bit0:1; |
| uint32_t rmlh_ts_link_num_is_k237:1; |
| uint32_t rmlh_ts_lane_num_is_k237:1; |
| uint32_t rmlh_ts_link_ctrl:4; |
| #endif |
| } bits; |
| } cascade_deb_reg0_t; |
| |
| |
| /* |
| * Register: CascadeDebReg1 |
| * Cascade Core (EP) Debug Register 1 |
| * Description: Debug Register 1 EP Core SII Interface bus : |
| * cxplDebugInfo[63:32] |
| * Fields: |
| * PCIe Link status. 0=down, 1=up |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t xmlh_scrambler_disable:1; |
| uint32_t xmlh_link_disable:1; |
| uint32_t xmlh_link_in_training:1; |
| uint32_t xmlh_rcvr_revrs_pol_en:1; |
| uint32_t xmlh_training_rst_n:1; |
| uint32_t rsrvd:4; |
| uint32_t mac_phy_txdetectrx_loopback:1; |
| uint32_t mac_phy_txelecidle_bit0:1; |
| uint32_t mac_phy_txcompliance_bit0:1; |
| uint32_t app_init_rst:1; |
| uint32_t rsrvd1:3; |
| uint32_t rmlh_rs_link_num:8; |
| uint32_t rmlh_link_mode:3; |
| uint32_t xmlh_link_up:1; |
| uint32_t rmlh_inskip_rcv:1; |
| uint32_t rmlh_ts1_rcvd:1; |
| uint32_t rmlh_ts2_rcvd:1; |
| uint32_t rmlh_rcvd_lane_rev:1; |
| #else |
| uint32_t rmlh_rcvd_lane_rev:1; |
| uint32_t rmlh_ts2_rcvd:1; |
| uint32_t rmlh_ts1_rcvd:1; |
| uint32_t rmlh_inskip_rcv:1; |
| uint32_t xmlh_link_up:1; |
| uint32_t rmlh_link_mode:3; |
| uint32_t rmlh_rs_link_num:8; |
| uint32_t rsrvd1:3; |
| uint32_t app_init_rst:1; |
| uint32_t mac_phy_txcompliance_bit0:1; |
| uint32_t mac_phy_txelecidle_bit0:1; |
| uint32_t mac_phy_txdetectrx_loopback:1; |
| uint32_t rsrvd:4; |
| uint32_t xmlh_training_rst_n:1; |
| uint32_t xmlh_rcvr_revrs_pol_en:1; |
| uint32_t xmlh_link_in_training:1; |
| uint32_t xmlh_link_disable:1; |
| uint32_t xmlh_scrambler_disable:1; |
| #endif |
| } bits; |
| } cascade_deb_reg1_t; |
| |
| |
| /* |
| * Register: TxpFcCreditStat |
| * Transmit Posted FC Credit Status |
| * Description: Transmit Posted FC Credit Status |
| * Fields: |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:12; |
| uint32_t txp_fc_hdr_credit_stat:8; |
| uint32_t txp_fc_data_credit_stat:12; |
| #else |
| uint32_t txp_fc_data_credit_stat:12; |
| uint32_t txp_fc_hdr_credit_stat:8; |
| uint32_t rsrvd:12; |
| #endif |
| } bits; |
| } txp_fc_credit_stat_t; |
| |
| |
| /* |
| * Register: TxnpFcCreditStat |
| * Transmit Non-Posted FC Credit Status |
| * Description: Transmit Non-Posted FC Credit Status |
| * Fields: |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:12; |
| uint32_t txnp_fc_hdr_credit_stat:8; |
| uint32_t txnp_fc_data_credit_stat:12; |
| #else |
| uint32_t txnp_fc_data_credit_stat:12; |
| uint32_t txnp_fc_hdr_credit_stat:8; |
| uint32_t rsrvd:12; |
| #endif |
| } bits; |
| } txnp_fc_credit_stat_t; |
| |
| |
| /* |
| * Register: TxcplFcCreditStat |
| * Transmit Completion FC Credit Status |
| * Description: Transmit Completion FC Credit Status |
| * Fields: |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:12; |
| uint32_t txcpl_fc_hdr_credit_stat:8; |
| uint32_t txcpl_fc_data_credit_stat:12; |
| #else |
| uint32_t txcpl_fc_data_credit_stat:12; |
| uint32_t txcpl_fc_hdr_credit_stat:8; |
| uint32_t rsrvd:12; |
| #endif |
| } bits; |
| } txcpl_fc_credit_stat_t; |
| |
| |
| /* |
| * Register: QueueStat |
| * Queue Status |
| * Description: Queue Status |
| * Fields: |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:29; |
| uint32_t rx_queue_not_empty:1; |
| uint32_t tx_rbuf_not_empty:1; |
| uint32_t tx_fc_credit_not_ret:1; |
| #else |
| uint32_t tx_fc_credit_not_ret:1; |
| uint32_t tx_rbuf_not_empty:1; |
| uint32_t rx_queue_not_empty:1; |
| uint32_t rsrvd:29; |
| #endif |
| } bits; |
| } queue_stat_t; |
| |
| |
| /* |
| * Register: GbtDebug0 |
| * GBT Debug, Status register |
| * Description: This register returns bits [31:0] of the PIPE core's |
| * gbtDebug bus |
| * Fields: |
| * [6] & [22] = rxclkO will always read 1'b0 [7] & [23] = |
| * tbcout10O will always read 1'b0 |
| * The value specified here is the Power On Reset value as given |
| * in spec. except for the clock bits which are hardwired to |
| * 1'b0. |
| * The gbtDebug[0:15] bus is provided for each lane as an output |
| * from the pcieGbtopWrapper.v module. These signals are not |
| * required for manufacturing test and may be left unconnected. |
| * The cw00041130PipeParam.vh bus width is the number of lanes |
| * multiplied by 16. lane0 is bits[15:0], lane1 is bits[31:16], |
| * lane2 is bits[47:32], lane3 is bits[63:48], lane4 is |
| * bits[79:64], lane5 is bits[95:80], lane6 is bits[111:96], |
| * lane7 is bits[127:112]. |
| * Refer to section 4.2.2.4, Gigablaze Debug Signals section. |
| * (pgs 4.27 - 4.28) in the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane0 is bits[15:0], which is gbtDebug0[15:0] lane1 is |
| * bits[31:16], which is gbtDebug0[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * Signal Bit Reset Description |
| * ------------------------------------------------------------------------- |
| * gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock |
| * gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock |
| * gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI |
| * [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8] |
| * [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock |
| * 10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO |
| * [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4] |
| * [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver |
| * loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass |
| * active low reserved [16n+1] [1] 0 reserved reserved [16n] [0] |
| * 0 reserved |
| * ------------------------------------------------------------------------- |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } gbt_debug0_t; |
| |
| |
| /* |
| * Register: GbtDebug1 |
| * GBT Debug, Status register |
| * Description: This register returns bits [63:32] of the PIPE core's |
| * gbtDebug bus |
| * Fields: |
| * [6] & [22] = rxclkO will always read 1'b0 [7] & [23] = |
| * tbcout10O will always read 1'b0 |
| * The value specified here is the Power On Reset value as given |
| * in spec. except for the clock bits which are hardwired to |
| * 1'b0. |
| * The gbtDebug[0:15] bus is provided for each lane as an output |
| * from the pcieGbtopWrapper.v module. These signals are not |
| * required for manufacturing test and may be left unconnected. |
| * The cw00041130PipeParam.vh bus width is the number of lanes |
| * multiplied by 16. |
| * Refer to section 4.2.2.4, Gigablaze Debug Signals section. |
| * (pgs 4.27 - 4.28) in the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane2 is bits[47:32], which is gbtDebug1[15:0] lane3 is |
| * bits[63:48], which is gbtDebug1[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * Signal Bit Reset Description |
| * ------------------------------------------------------------------------- |
| * gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock |
| * gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock |
| * gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI |
| * [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8] |
| * [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock |
| * 10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO |
| * [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4] |
| * [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver |
| * loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass |
| * active low reserved [16n+1] [1] 0 reserved reserved [16n] [0] |
| * 0 reserved |
| * ------------------------------------------------------------------------- |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } gbt_debug1_t; |
| |
| |
| /* |
| * Register: GbtDebug2 |
| * GBT Debug, Status register |
| * Description: This register returns bits [95:64] of the PIPE core's |
| * gbtDebug bus |
| * Fields: |
| * [6] & [22] = rxclkO will always read 1'b0 [7] & [23] = |
| * tbcout10O will always read 1'b0 |
| * The value specified here is the Power On Reset value as given |
| * in spec. except for the clock bits which are hardwired to |
| * 1'b0. |
| * The gbtDebug[0:15] bus is provided for each lane as an output |
| * from the pcieGbtopWrapper.v module. These signals are not |
| * required for manufacturing test and may be left unconnected. |
| * The cw00041130PipeParam.vh bus width is the number of lanes |
| * multiplied by 16. |
| * Refer to section 4.2.2.4, Gigablaze Debug Signals section. |
| * (pgs 4.27 - 4.28) in the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane4 is bits[79:64], which is gbtDebug2[15:0] lane5 is |
| * bits[95:80], which is gbtDebug2[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * Signal Bit Reset Description |
| * ------------------------------------------------------------------------- |
| * gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock |
| * gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock |
| * gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI |
| * [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8] |
| * [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock |
| * 10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO |
| * [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4] |
| * [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver |
| * loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass |
| * active low reserved [16n+1] [1] 0 reserved reserved [16n] [0] |
| * 0 reserved |
| * ------------------------------------------------------------------------- |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } gbt_debug2_t; |
| |
| |
| /* |
| * Register: GbtDebug3 |
| * GBT Debug, Status register |
| * Description: This register returns bits [127:96] of the PIPE |
| * core's gbtDebug bus |
| * Fields: |
| * [6] & [22] = rxclkO will always read 1'b0 [7] & [23] = |
| * tbcout10O will always read 1'b0 |
| * The value specified here is the Power On Reset value as given |
| * in spec. except for the clock bits which are hardwired to |
| * 1'b0. |
| * The gbtDebug[0:15] bus is provided for each lane as an output |
| * from the pcieGbtopWrapper.v module. These signals are not |
| * required for manufacturing test and may be left unconnected. |
| * The cw00041130PipeParam.vh bus width is the number of lanes |
| * multiplied by 16. |
| * Refer to section 4.2.2.4, Gigablaze Debug Signals section. |
| * (pgs 4.27 - 4.28) in the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane6 is bits[111:96], which is gbtDebug3[15:0] lane7 is |
| * bits[127:112], which is gbtDebug3[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * Signal Bit Reset Description |
| * ------------------------------------------------------------------------- |
| * gbtResetRbcI [16n+15] [15] 1 Reset receiver bit clock |
| * gbtResetTbc20I [16n+14] [14] 1 Reset transmit 20-bit clock |
| * gbtResetRI [16n+13] [13] 1 Reset receiver logic gbtResetTI |
| * [16n+12] [12] 1 Reset transmit logic reserved [16n+11:16n+8] |
| * [11:8] 0 reserved gbtTbcout10 [16n+7] [7] 1 transmit clock |
| * 10-bit gbtRxclkO [16n+6] [6] 0 receiver PLL clock gbtRxpresO |
| * [16n+5] [5] 0 receiver detect present gbtRxpresvalidO [16n+4] |
| * [4] 0 gbtRxpresO is valid gbtRxlosO [16n+3] [3] 1 raw receiver |
| * loss-of-signal gbtPassnO [16n+2] [2] 1 GigaBlaze BIST pass |
| * active low reserved [16n+1] [1] 0 reserved reserved [16n] [0] |
| * 0 reserved |
| * ------------------------------------------------------------------------- |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } gbt_debug3_t; |
| |
| |
| /* |
| * Register: PipeDebug0 |
| * PIPE Debug, status register |
| * Description: This register returns bits [31:0] of the PIPE core's |
| * gbtDebug bus |
| * Fields: |
| * The value specified here is the Power On Reset value as given |
| * in spec. |
| * This 16-bit debug bus reports operating conditions for the |
| * PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0 |
| * is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32], |
| * lane3 is bits[63:48], lane4 is bits[79:64], lane5 is |
| * bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112]. |
| * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in |
| * the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane0 is bit[15:0], which is pipeDebug0[15:0] lane1 is |
| * bit[31:16], which is pipeDebug0[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * pipeDebug Signal or Condition Description Reset |
| * ------------------------------------------------------------------------- |
| * [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO |
| * underflow occurred |
| * [14] skipInsert or EFIFO skip inserted or 0 skipDelete |
| * deleted 0 |
| * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag |
| * Used with skipcharflag to verify EFIFO depth. |
| * [12] skipcharflag Skip flag written by EFIFO 0 |
| * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000 |
| * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set |
| * output |
| * [6] efifoBytesync EFIFO output byte 0 synchronization |
| * [5] rxinvalid 8b/10b error or 0 or code violation |
| * [4] rxinitdone Receiver bit-init done. 0 Synchronous with |
| * pipeClk. |
| * [3] txinitdone Transmitter-bit init done. 0 Synchronous with |
| * pipeClk. |
| * [2] filteredrxlos Filtered loss of signal used 1 to generate |
| * p2lRxelectidle. Synchronous with pipeClk. |
| * [1] rxdetectInt Receiver detected 0 |
| * [0] pipeMasterDoneOut Receiver detection valid 0 |
| * |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } pipe_debug0_t; |
| |
| |
| /* |
| * Register: PipeDebug1 |
| * PIPE Debug, status register |
| * Description: This register returns bits [63:32] of the PIPE core's |
| * gbtDebug bus |
| * Fields: |
| * The value specified here is the Power On Reset value as given |
| * in spec. |
| * This 16-bit debug bus reports operating conditions for the |
| * PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0 |
| * is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32], |
| * lane3 is bits[63:48], lane4 is bits[79:64], lane5 is |
| * bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112]. |
| * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in |
| * the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane2 is bits[47:32], which is pipeDebug1[15:0] lane3 is |
| * bits[63:48], which is pipeDebug1[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * pipeDebug Signal or Condition Description Reset |
| * ------------------------------------------------------------------------- |
| * [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO |
| * underflow occurred |
| * [14] skipInsert or EFIFO skip inserted or 0 skipDelete |
| * deleted 0 |
| * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag |
| * Used with skipcharflag to verify EFIFO depth. |
| * [12] skipcharflag Skip flag written by EFIFO 0 |
| * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000 |
| * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set |
| * output |
| * [6] efifoBytesync EFIFO output byte 0 synchronization |
| * [5] rxinvalid 8b/10b error or 0 or code violation |
| * [4] rxinitdone Receiver bit-init done. 0 Synchronous with |
| * pipeClk. |
| * [3] txinitdone Transmitter-bit init done. 0 Synchronous with |
| * pipeClk. |
| * [2] filteredrxlos Filtered loss of signal used 1 to generate |
| * p2lRxelectidle. Synchronous with pipeClk. |
| * [1] rxdetectInt Receiver detected 0 |
| * [0] pipeMasterDoneOut Receiver detection valid 0 |
| * |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } pipe_debug1_t; |
| |
| |
| /* |
| * Register: PipeDebug2 |
| * PIPE Debug, status register |
| * The value specified here is the Power On Reset value as given |
| * in spec. |
| * This 16-bit debug bus reports operating conditions for the |
| * PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0 |
| * is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32], |
| * lane3 is bits[63:48], lane4 is bits[79:64], lane5 is |
| * bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112]. |
| * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in |
| * the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane4 is bits[79:64], which is pipeDebug2[15:0] lane5 is |
| * bits[95:80], which is pipeDebug2[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * pipeDebug Signal or Condition Description Reset |
| * ------------------------------------------------------------------------- |
| * [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO |
| * underflow occurred |
| * [14] skipInsert or EFIFO skip inserted or 0 skipDelete |
| * deleted 0 |
| * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag |
| * Used with skipcharflag to verify EFIFO depth. |
| * [12] skipcharflag Skip flag written by EFIFO 0 |
| * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000 |
| * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set |
| * output |
| * [6] efifoBytesync EFIFO output byte 0 synchronization |
| * [5] rxinvalid 8b/10b error or 0 or code violation |
| * [4] rxinitdone Receiver bit-init done. 0 Synchronous with |
| * pipeClk. |
| * [3] txinitdone Transmitter-bit init done. 0 Synchronous with |
| * pipeClk. |
| * [2] filteredrxlos Filtered loss of signal used 1 to generate |
| * p2lRxelectidle. Synchronous with pipeClk. |
| * [1] rxdetectInt Receiver detected 0 |
| * [0] pipeMasterDoneOut Receiver detection valid 0 |
| * |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } pipe_debug2_t; |
| |
| |
| /* |
| * Register: PipeDebug3 |
| * PIPE Debug, status register |
| * Description: This register returns bits [127:96] of the PIPE |
| * core's gbtDebug bus |
| * Fields: |
| * The value specified here is the Power On Reset value as given |
| * in spec. |
| * This 16-bit debug bus reports operating conditions for the |
| * PIPE. The pipeDebug[0:15] bus is provided for each lane. lane0 |
| * is bits[15:0], lane1 is bits[31:16], lane2 is bits[47:32], |
| * lane3 is bits[63:48], lane4 is bits[79:64], lane5 is |
| * bits[95:80], lane6 is bits[111:96], lane7 is bits[127:112]. |
| * Refer to section 4.2.1.5 Single-Lane PIPE Debug Signals in |
| * the following document : |
| * /home/cadtools/cores/lsi/cw000411/cw00041131/prod/docs/manuals/ |
| * cw000411TechMan.pdf |
| * lane6 is bits[111:96], which is pipeDebug3[15:0] lane7 is |
| * bits[127:112], which is pipeDebug3[31:16] |
| * |
| * ------------------------------------------------------------------------- |
| * pipeDebug Signal or Condition Description Reset |
| * ------------------------------------------------------------------------- |
| * [15] efifoOverflow or EFIFO overflow or 0 efifoUnderflow EFIFO |
| * underflow occurred |
| * [14] skipInsert or EFIFO skip inserted or 0 skipDelete |
| * deleted 0 |
| * [13] fifordData[12] == Skip flag read by EFIFO. 0 skipFlag |
| * Used with skipcharflag to verify EFIFO depth. |
| * [12] skipcharflag Skip flag written by EFIFO 0 |
| * [11:8] efifoDepth[3:0] Indicates EFIFO depth 0000 |
| * [7] efifoEios Detected EFIFO 0 electrical-idle ordered-set |
| * output |
| * [6] efifoBytesync EFIFO output byte 0 synchronization |
| * [5] rxinvalid 8b/10b error or 0 or code violation |
| * [4] rxinitdone Receiver bit-init done. 0 Synchronous with |
| * pipeClk. |
| * [3] txinitdone Transmitter-bit init done. 0 Synchronous with |
| * pipeClk. |
| * [2] filteredrxlos Filtered loss of signal used 1 to generate |
| * p2lRxelectidle. Synchronous with pipeClk. |
| * [1] rxdetectInt Receiver detected 0 |
| * [0] pipeMasterDoneOut Receiver detection valid 0 |
| * |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } pipe_debug3_t; |
| |
| |
| /* |
| * Register: PcieEnhCapHdr |
| * PCIE Enhanced Capability Header |
| * Description: PCIE Enhanced Capability Header |
| * Fields: |
| * Next Capability Offset (END, no more) |
| * Capability Version |
| * PCI Express Enhanced Capability ID (0x1 = Advanced Error |
| * Reporting) |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t nxt_cap_offset:12; |
| uint32_t cap_ver:4; |
| uint32_t pcie_enh_cap_id:16; |
| #else |
| uint32_t pcie_enh_cap_id:16; |
| uint32_t cap_ver:4; |
| uint32_t nxt_cap_offset:12; |
| #endif |
| } bits; |
| } pcie_enh_cap_hdr_t; |
| |
| |
| /* |
| * Register: UncErrStat |
| * Uncorrectable Error Status |
| * Description: Uncorrectable Error Status |
| * Fields: |
| * Unsupported Request Error |
| * ECRC Error |
| * Malformed TLP |
| * Reciever Overflow |
| * Unexpected Completion |
| * Completion Abort |
| * Completion Timeout |
| * Flow Control Protocol Error |
| * Poisoned TLP |
| * Introduced in PCIe 1.1 specification. |
| * Data Link Protocol Error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:11; |
| uint32_t unsup_req_err:1; |
| uint32_t ecrc_err:1; |
| uint32_t bad_tlp:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t unexp_cpl:1; |
| uint32_t cpl_abrt:1; |
| uint32_t cpl_tmout:1; |
| uint32_t fc_err:1; |
| uint32_t psn_tlp:1; |
| uint32_t rsrvd1:6; |
| uint32_t surprise_down_err:1; |
| uint32_t dlp_err:1; |
| uint32_t rsrvd2:4; |
| #else |
| uint32_t rsrvd2:4; |
| uint32_t dlp_err:1; |
| uint32_t surprise_down_err:1; |
| uint32_t rsrvd1:6; |
| uint32_t psn_tlp:1; |
| uint32_t fc_err:1; |
| uint32_t cpl_tmout:1; |
| uint32_t cpl_abrt:1; |
| uint32_t unexp_cpl:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t bad_tlp:1; |
| uint32_t ecrc_err:1; |
| uint32_t unsup_req_err:1; |
| uint32_t rsrvd:11; |
| #endif |
| } bits; |
| } unc_err_stat_t; |
| |
| |
| /* |
| * Register: UncErrMask |
| * Uncorrectable Error Mask |
| * Description: Uncorrectable Error Mask |
| * Fields: |
| * Unsupported Request Error |
| * ECRC Error |
| * Malformed TLP |
| * Reciever Overflow |
| * Unexpected Completion |
| * Completion Abort |
| * Completion Timeout |
| * Flow Control Protocol Error |
| * Poisoned TLP |
| * Introduced in PCIe 1.1 |
| * Data Link Protocol Error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:11; |
| uint32_t unsup_req_err:1; |
| uint32_t ecrc_err:1; |
| uint32_t bad_tlp:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t unexp_cpl:1; |
| uint32_t cpl_abrt:1; |
| uint32_t cpl_tmout:1; |
| uint32_t fc_err:1; |
| uint32_t psn_tlp:1; |
| uint32_t rsrvd1:6; |
| uint32_t surprise_down_err:1; |
| uint32_t dlp_err:1; |
| uint32_t rsrvd2:4; |
| #else |
| uint32_t rsrvd2:4; |
| uint32_t dlp_err:1; |
| uint32_t surprise_down_err:1; |
| uint32_t rsrvd1:6; |
| uint32_t psn_tlp:1; |
| uint32_t fc_err:1; |
| uint32_t cpl_tmout:1; |
| uint32_t cpl_abrt:1; |
| uint32_t unexp_cpl:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t bad_tlp:1; |
| uint32_t ecrc_err:1; |
| uint32_t unsup_req_err:1; |
| uint32_t rsrvd:11; |
| #endif |
| } bits; |
| } unc_err_mask_t; |
| |
| |
| /* |
| * Register: UncErrSvrty |
| * Uncorrectable Error Severity |
| * Description: Uncorrectable Error Severity |
| * Fields: |
| * Unsupported Request Error |
| * ECRC Error |
| * Malformed TLP |
| * Reciever Overflow |
| * Unexpected Completion |
| * Completion Abort |
| * Completion Timeout |
| * Flow Control Protocol Error |
| * Poisoned TLP |
| * Introduced in PCIe 1.1 specification. Not supported; use PCIe |
| * default. |
| * Data Link Protocol Error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:11; |
| uint32_t unsup_req_err:1; |
| uint32_t ecrc_err:1; |
| uint32_t bad_tlp:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t unexp_cpl:1; |
| uint32_t cpl_abrt:1; |
| uint32_t cpl_tmout:1; |
| uint32_t fc_err:1; |
| uint32_t psn_tlp:1; |
| uint32_t rsrvd1:6; |
| uint32_t surprise_down_err:1; |
| uint32_t dlp_err:1; |
| uint32_t rsrvd2:4; |
| #else |
| uint32_t rsrvd2:4; |
| uint32_t dlp_err:1; |
| uint32_t surprise_down_err:1; |
| uint32_t rsrvd1:6; |
| uint32_t psn_tlp:1; |
| uint32_t fc_err:1; |
| uint32_t cpl_tmout:1; |
| uint32_t cpl_abrt:1; |
| uint32_t unexp_cpl:1; |
| uint32_t rcv_ovfl:1; |
| uint32_t bad_tlp:1; |
| uint32_t ecrc_err:1; |
| uint32_t unsup_req_err:1; |
| uint32_t rsrvd:11; |
| #endif |
| } bits; |
| } unc_err_svrty_t; |
| |
| |
| /* |
| * Register: CorrErrStat |
| * Correctable Error Status |
| * Description: Correctable Error Status |
| * Fields: |
| * Advisory Non-Fatal Error Introduced in PCIe 1.1 specification. |
| * Reply Timer Timeout |
| * Replay Number Rollover |
| * Bad DLLP |
| * Bad TLP |
| * Receive Error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:18; |
| uint32_t adv_nf_err:1; |
| uint32_t rply_tmr_tmout:1; |
| uint32_t rsrvd1:3; |
| uint32_t rply_rlovr:1; |
| uint32_t bad_dllp:1; |
| uint32_t bad_tlp:1; |
| uint32_t rsrvd2:5; |
| uint32_t rcv_err:1; |
| #else |
| uint32_t rcv_err:1; |
| uint32_t rsrvd2:5; |
| uint32_t bad_tlp:1; |
| uint32_t bad_dllp:1; |
| uint32_t rply_rlovr:1; |
| uint32_t rsrvd1:3; |
| uint32_t rply_tmr_tmout:1; |
| uint32_t adv_nf_err:1; |
| uint32_t rsrvd:18; |
| #endif |
| } bits; |
| } corr_err_stat_t; |
| |
| |
| /* |
| * Register: CorrErrMask |
| * Correctable Error Mask |
| * Description: Correctable Error Mask |
| * Fields: |
| * Advisory Non Fatal Error Mask |
| * Reply Timer Timeout |
| * Replay Number Rollover |
| * Bad DLLP |
| * Bad TLP |
| * Receive Error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:18; |
| uint32_t adv_nf_err_mask:1; |
| uint32_t rply_tmr_tmout:1; |
| uint32_t rsrvd1:3; |
| uint32_t rply_rlovr:1; |
| uint32_t bad_dllp:1; |
| uint32_t bad_tlp:1; |
| uint32_t rsrvd2:5; |
| uint32_t rcv_err:1; |
| #else |
| uint32_t rcv_err:1; |
| uint32_t rsrvd2:5; |
| uint32_t bad_tlp:1; |
| uint32_t bad_dllp:1; |
| uint32_t rply_rlovr:1; |
| uint32_t rsrvd1:3; |
| uint32_t rply_tmr_tmout:1; |
| uint32_t adv_nf_err_mask:1; |
| uint32_t rsrvd:18; |
| #endif |
| } bits; |
| } corr_err_mask_t; |
| |
| |
| /* |
| * Register: AdvCapCtrl |
| * Advanced Capability and Control |
| * Description: Advanced Capability and Control |
| * Fields: |
| * ECRC Check Enable |
| * ECRC Check Capable |
| * ECRC Generation Enable |
| * ECRC Generation Capability |
| * First Error Pointer |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:23; |
| uint32_t ecrc_chk_en:1; |
| uint32_t ecrc_chk_cap:1; |
| uint32_t ecrc_gen_en:1; |
| uint32_t ecrc_gen_cap:1; |
| uint32_t st_err_ptr:5; |
| #else |
| uint32_t st_err_ptr:5; |
| uint32_t ecrc_gen_cap:1; |
| uint32_t ecrc_gen_en:1; |
| uint32_t ecrc_chk_cap:1; |
| uint32_t ecrc_chk_en:1; |
| uint32_t rsrvd:23; |
| #endif |
| } bits; |
| } adv_cap_ctrl_t; |
| |
| |
| /* |
| * Register: HdrLog0 |
| * Header Log0 |
| * Description: Header Log0 |
| * Fields: |
| * First DW of TLP header with error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } hdr_log0_t; |
| |
| |
| /* |
| * Register: HdrLog1 |
| * Header Log1 |
| * Description: Header Log1 |
| * Fields: |
| * Second DW of TLP header with error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } hdr_log1_t; |
| |
| |
| /* |
| * Register: HdrLog2 |
| * Header Log2 |
| * Description: Header Log2 |
| * Fields: |
| * Third DW of TLP header with error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } hdr_log2_t; |
| |
| |
| /* |
| * Register: HdrLog3 |
| * Header Log3 |
| * Description: Header Log3 |
| * Fields: |
| * Fourth DW of TLP header with error |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t data:32; |
| #else |
| uint32_t data:32; |
| #endif |
| } bits; |
| } hdr_log3_t; |
| |
| |
| /* |
| * Register: PipeRxTxControl |
| * Pipe Rx/Tx Control |
| * 00 : ewrap : Enable wrapback test mode 01 : padLoopback : |
| * Enable Pad Serial Loopback test mode 10 : revLoopback : Enable |
| * Reverse Loopback test mode 11 : efifoLoopback : Enable PCI |
| * Express Slave loop back |
| * 100 : Clock generator test x10 : Vil/Vih test x01 : Vih/Vil |
| * test x11 : No-error test. A full test of the transceiver 111 : |
| * Forced-error test. A full test of the transceiver with forced |
| * errors |
| * 1 : selects 20-bit mode 0 : selects 10-bit mode |
| * 1 : selects Tx 20-bit fifo mode |
| * 00 : 52 us (470 cycles) 01 : 53 us (720 cycles) 10 : 54 us |
| * (970 cycles) 11 : 55 us (1220 cycles) |
| * 1 : selects 20-bit mode 0 : selects 10-bit mode |
| * 1 : Enable receiver reference clocks |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:1; |
| uint32_t loopback:1; |
| uint32_t loopback_mode_sel:2; |
| uint32_t rsrvd1:1; |
| uint32_t en_bist:3; |
| uint32_t tdws20:1; |
| uint32_t tdenfifo:1; |
| uint32_t rxpreswin:2; |
| uint32_t rdws20:1; |
| uint32_t enstretch:1; |
| uint32_t rsrvd2:18; |
| #else |
| uint32_t rsrvd2:18; |
| uint32_t enstretch:1; |
| uint32_t rdws20:1; |
| uint32_t rxpreswin:2; |
| uint32_t tdenfifo:1; |
| uint32_t tdws20:1; |
| uint32_t en_bist:3; |
| uint32_t rsrvd1:1; |
| uint32_t loopback_mode_sel:2; |
| uint32_t loopback:1; |
| uint32_t rsrvd:1; |
| #endif |
| } bits; |
| } pipe_rx_tx_control_t; |
| |
| |
| /* |
| * Register: PipeRxTxStatus |
| * Pipe Rx/Tx Status |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:32; |
| #else |
| uint32_t rsrvd:32; |
| #endif |
| } bits; |
| } pipe_rx_tx_status_t; |
| |
| |
| /* |
| * Register: PipeRxTxPwrCntl |
| * Pipe Rx/Tx Power Control |
| * 1 : power down termination trimming circuit 0 : normal |
| * operation |
| * Power down PECL Clock buffer 1 : when a bit is 1, power down |
| * associated clock buffer cell 0 : normal operation |
| * Power down Transmit PLL 1 : when a bit is 1, power down |
| * associated Tx PLL circuit 0 : normal operation |
| * Power down Differential O/P Clock buffer 1 : when a bit is 1, |
| * power down associated differntial clock buffer that drives |
| * gbtClkoutN/p 0 : normal operation |
| * Power down Transmitter Analog section 1 : when a bit is 1, |
| * power down analog section of the associated Transmitter and |
| * the Tx buffer 0 : normal operation |
| * Power down RxLOS 1 : when a bit is 1, it powers down the Rx |
| * LOS circuitry for the associated serdes lanes 0 : normal |
| * operation |
| * Power down Receiver Analog section 1 : when a bit is 1, power |
| * down analog section of the associated Receiver and the Tx |
| * buffer 0 : normal operation |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:1; |
| uint32_t pdrtrim:1; |
| uint32_t pdownpecl:2; |
| uint32_t pdownpll:2; |
| uint32_t pdclkout:2; |
| uint32_t pdownt:8; |
| uint32_t pdrxlos:8; |
| uint32_t pdownr:8; |
| #else |
| uint32_t pdownr:8; |
| uint32_t pdrxlos:8; |
| uint32_t pdownt:8; |
| uint32_t pdclkout:2; |
| uint32_t pdownpll:2; |
| uint32_t pdownpecl:2; |
| uint32_t pdrtrim:1; |
| uint32_t rsrvd:1; |
| #endif |
| } bits; |
| } pipe_rx_tx_pwr_cntl_t; |
| |
| |
| /* |
| * Register: PipeRxTxParam |
| * Pipe Rx/Tx Parameter |
| * Tx Driver Emphasis |
| * Serial output Slew Rate Control |
| * Tx Voltage Mux control |
| * Tx Voltage Pulse control |
| * Output Swing setting |
| * Transmitter Clock generator pole adjust |
| * Transmitter Clock generator zero adjust |
| * Receiver Clock generator pole adjust |
| * Receiver Clock generator zero adjust |
| * Bias Control for factory testing and debugging |
| * Receiver LOS Threshold adjustment. This value is determined by |
| * LSI. |
| * Receiver Input Equalizer control |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:1; |
| uint32_t emph:3; |
| uint32_t rsrvd1:1; |
| uint32_t risefall:3; |
| uint32_t vmuxlo:2; |
| uint32_t vpulselo:2; |
| uint32_t vtxlo:4; |
| uint32_t tp:2; |
| uint32_t tz:2; |
| uint32_t rp:2; |
| uint32_t rz:2; |
| uint32_t biascntl:1; |
| uint32_t losadj:3; |
| uint32_t rxeq:4; |
| #else |
| uint32_t rxeq:4; |
| uint32_t losadj:3; |
| uint32_t biascntl:1; |
| uint32_t rz:2; |
| uint32_t rp:2; |
| uint32_t tz:2; |
| uint32_t tp:2; |
| uint32_t vtxlo:4; |
| uint32_t vpulselo:2; |
| uint32_t vmuxlo:2; |
| uint32_t risefall:3; |
| uint32_t rsrvd1:1; |
| uint32_t emph:3; |
| uint32_t rsrvd:1; |
| #endif |
| } bits; |
| } pipe_rx_tx_param_t; |
| |
| |
| /* |
| * Register: PipeRxTxClock |
| * Pipe Rx/Tx Clock |
| * Reverse Loopback clock select 00 : gbtRbcAO 01 : gbtRbcBO 10 : |
| * gbtRbcCO 11 : gbtRbcDO |
| * Select Master Clock 100 : All lanes 000 : Lane A 001 : Lane B |
| * 010 : Lane C 011 : Lane D |
| * Transmit PLL Divider control |
| * Transmit Data rate control |
| * Receiver PLL Frequency control |
| * Bit rate control to enable bit doubling feature |
| * Reset Transmitter lane |
| * Reset Receiver lane |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:2; |
| uint32_t revlbrefsel:2; |
| uint32_t rsrvd1:1; |
| uint32_t tdmaster:3; |
| uint32_t fbdivt:3; |
| uint32_t half_ratet:1; |
| uint32_t fbdivr:3; |
| uint32_t half_rater:1; |
| uint32_t txreset:8; |
| uint32_t rxreset:8; |
| #else |
| uint32_t rxreset:8; |
| uint32_t txreset:8; |
| uint32_t half_rater:1; |
| uint32_t fbdivr:3; |
| uint32_t half_ratet:1; |
| uint32_t fbdivt:3; |
| uint32_t tdmaster:3; |
| uint32_t rsrvd1:1; |
| uint32_t revlbrefsel:2; |
| uint32_t rsrvd:2; |
| #endif |
| } bits; |
| } pipe_rx_tx_clock_t; |
| |
| |
| /* |
| * Register: PipeGlueCntl0 |
| * Pipe Glue Control 0 |
| * Lock to Bitstream Initialization Time |
| * RXLOS Test bit |
| * Electrical Idle Ordered set enable |
| * Enable RxLOS |
| * Enable Fast resync |
| * RxLOS Sample Interval |
| * RxLOS threshold |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t bitlocktime:16; |
| uint32_t rxlos_test:1; |
| uint32_t eiosenable:1; |
| uint32_t rxlosenable:1; |
| uint32_t fastresync:1; |
| uint32_t samplerate:4; |
| uint32_t thresholdcount:8; |
| #else |
| uint32_t thresholdcount:8; |
| uint32_t samplerate:4; |
| uint32_t fastresync:1; |
| uint32_t rxlosenable:1; |
| uint32_t eiosenable:1; |
| uint32_t rxlos_test:1; |
| uint32_t bitlocktime:16; |
| #endif |
| } bits; |
| } pipe_glue_cntl0_t; |
| |
| |
| /* |
| * Register: PipeGlueCntl1 |
| * Pipe Glue Control 1 |
| * Receiver Trim Resistance Configuration |
| * Transmitter Trim Resistance Configuration |
| * Auto Trim Enable |
| * 50 Ohm Termination Enable |
| * Customer select for reference clock frequency |
| * EFIFO Same clock select |
| * EFIFO start depth |
| * Lock to refclk initialization time |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t termrcfg:2; |
| uint32_t termtcfg:2; |
| uint32_t rtrimen:1; |
| uint32_t ref50:1; |
| uint32_t freq_sel:1; |
| uint32_t same_sel:1; |
| uint32_t rsrvd:1; |
| uint32_t start_efifo:3; |
| uint32_t rsrvd1:2; |
| uint32_t inittime:18; |
| #else |
| uint32_t inittime:18; |
| uint32_t rsrvd1:2; |
| uint32_t start_efifo:3; |
| uint32_t rsrvd:1; |
| uint32_t same_sel:1; |
| uint32_t freq_sel:1; |
| uint32_t ref50:1; |
| uint32_t rtrimen:1; |
| uint32_t termtcfg:2; |
| uint32_t termrcfg:2; |
| #endif |
| } bits; |
| } pipe_glue_cntl1_t; |
| |
| |
| /* |
| * Register: HcrReg |
| * HCR Registers |
| * Description: Hydra Specific Configuration Registers for use by |
| * software. These registers are loaded with the SPROM contents at |
| * power on. A maximum of 128 DWords has been assigned for s/w to |
| * use. This space generally stores the following informations : MAC |
| * Address Number of MAC addresses MAC Phy Type Other data fields are |
| * upto the software to use. |
| * |
| * Fields: |
| * Hydra specific configuration controlled by software |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t hcr_val:32; |
| #else |
| uint32_t hcr_val:32; |
| #endif |
| } bits; |
| } hcr_reg_t; |
| |
| |
| /* |
| * Register: BlockReset |
| * Block Reset |
| * Description: Soft resets to modules. Blade domain modules are |
| * reset by setting the corresponding block reset to 1. Shared domain |
| * resets are sent to SPI for processing and corresponding action by |
| * SPI. Shared domains are reset only if all the blades have |
| * requested a reset for that block. Below is an example scenario : |
| * s/w initiates the reset by writing '1' to the dpmRst bit dpmRst |
| * bit remains '1' until dpmRstStat is detected to be 1. Once |
| * dpmRstStat is detected to be 1, even if s/w writes 1 to this bit |
| * again no new reset will be initiated to the shared domain, ie, |
| * DPM. dpmRstStat is driven by external i/f (shared domain status |
| * provided by SPI) dpmRstStat bit will show '1' as long as the input |
| * stays at 1 or until s/w reads the status and is cleared only after |
| * s/w reads it and if dpmRstStat is 0 by then. |
| * If Host wants to reset entire Hydra it should do so through the |
| * mailbox. In this case, the message interprettation is upto the |
| * software. Writing a '1' to any of these bits generates a single |
| * pulse to the SP module which then controls the reset of the |
| * respective block. |
| * |
| * Fields: |
| * 1 : indicates that an active reset has been applied to the SP |
| * based on the request from all of the blades. Clears on Read |
| * provided the reset to SP has been deasserted by then by SPI. |
| * Setting to 1 allows this blade to request Service Processor |
| * (Shared) reset. However, SP reset can only occur if all blades |
| * agree. The success of reset request is indicated by spRstStat |
| * = 1 which is wired-AND of request from all the blades. Current |
| * request can be removed by writing a '0' to this bit. This bit |
| * clears automatically on detecting spRstStat = 1. |
| * Enable blade to service processor (Shared) reset voter |
| * registration = 1, disabled = 0 |
| * Issue power reset to the EP Core Clears to 0, writing 0 has no |
| * effect. |
| * Issue core reset to the EP Core Clears to 0, writing 0 has no |
| * effect. |
| * Issue system reset (sysPor) to the PIPE Core This issues reset |
| * to the EP core, PCIe domains of Tdc, Rdc, and CIP. This shuts |
| * down the PCIe clock until Pipe core comes out of reset. The |
| * status of the Pipe core can be read by reading out the |
| * cipLinkStat register's pipe core status and pcie reset status |
| * bits. Clears to 0, writing 0 has no effect. |
| * 1 : indicates that an active reset has been applied to the |
| * NMAC based on the request from all of the blades. Clears on |
| * Read provided the reset to NMAC has been deasserted by then by |
| * SPI. |
| * 1 : indicates that an active reset has been applied to the TDP |
| * based on the request from all of the blades. Clears on Read |
| * provided the reset to TDP has been deasserted by then by SPI. |
| * 1 : indicates that an active reset has been applied to the DPM |
| * based on the request from all of the blades. Clears on Read |
| * provided the reset to DPM has been deasserted by then by SPI. |
| * This bit is effective only if sharedVoterEn (bit 24 of this |
| * reg) has been enabled. Writing '1' sends a request to SP to |
| * reset NMAC if sharedVoterEn=1. Intended for backdoor access. |
| * The success of reset request is indicated by nmacRstStat = 1 |
| * which is wired-AND of request from all the blades. This also |
| * means that the reset request is successful only if all the |
| * blades requested for reset of this block. Current request can |
| * be removed by writing a '0' to this bit. This bit clears |
| * automatically on detecting nmacRstStat = 1. |
| * This bit is effective only if sharedVoterEn (bit 24 of this |
| * reg) has been enabled. Writing '1' sends a request to SP to |
| * reset TDP if sharedVoterEn=1. Intended for backdoor access. |
| * Intended for backdoor access. The success of reset request is |
| * indicated by tdpRstStat = 1 which is wired-AND of request from |
| * all the blades. This also means that the reset request is |
| * successful only if all the blades requested for reset of this |
| * block. Current request can be removed by writing a '0' to this |
| * bit. This bit clears automatically on detecting tdpRstStat = |
| * 1. |
| * This bit is effective only if sharedVoterEn (bit 24 of this |
| * reg) has been enabled. Writing '1' sends a request to SP to |
| * reset DPM if sharedVoterEn=1. Intended for backdoor access. |
| * Intended for backdoor access. The success of reset request is |
| * indicated by dpmRstStat = 1 which is wired-AND of request from |
| * all the blades. This also means that the reset request is |
| * successful only if all the blades requested for reset of this |
| * block. Current request can be removed by writing a '0' to this |
| * bit. This bit clears automatically on detecting dpmRstStat = |
| * 1. |
| * Setting to 1 generates tdcCoreReset and tdcPcieReset to the |
| * TDC block. The reset will stay asserted for atleast 4 clock |
| * cycles. Clears to 0, writing 0 has no effect. |
| * Setting to 1 generates rdcCoreReset and rdcPcieReset to the |
| * RDC block. The reset will stay asserted for atleast 4 clock |
| * cycles. Clears to 0, writing 0 has no effect. |
| * Setting to 1 generates reset to the PFC block. The reset will |
| * stay asserted for atleast 4 clock cycles. Clears to 0, writing |
| * 0 has no effect. |
| * Setting to 1 generates reset to the VMAC block. The reset will |
| * stay asserted for atleast 4 clock cycles. Clears to 0, writing |
| * 0 has no effect. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:13; |
| uint32_t sp_rst_stat:1; |
| uint32_t sp_rst:1; |
| uint32_t shared_voter_en:1; |
| uint32_t epcore_pwr_rst:1; |
| uint32_t epcore_core_rst:1; |
| uint32_t pipe_sys_rst:1; |
| uint32_t nmac_rst_stat:1; |
| uint32_t tdp_rst_stat:1; |
| uint32_t dpm_rst_stat:1; |
| uint32_t rsrvd1:1; |
| uint32_t nmac_rst:1; |
| uint32_t tdp_rst:1; |
| uint32_t dpm_rst:1; |
| uint32_t rsrvd2:1; |
| uint32_t tdc_rst:1; |
| uint32_t rdc_rst:1; |
| uint32_t pfc_rst:1; |
| uint32_t vmac_rst:1; |
| uint32_t rsrvd3:1; |
| #else |
| uint32_t rsrvd3:1; |
| uint32_t vmac_rst:1; |
| uint32_t pfc_rst:1; |
| uint32_t rdc_rst:1; |
| uint32_t tdc_rst:1; |
| uint32_t rsrvd2:1; |
| uint32_t dpm_rst:1; |
| uint32_t tdp_rst:1; |
| uint32_t nmac_rst:1; |
| uint32_t rsrvd1:1; |
| uint32_t dpm_rst_stat:1; |
| uint32_t tdp_rst_stat:1; |
| uint32_t nmac_rst_stat:1; |
| uint32_t pipe_sys_rst:1; |
| uint32_t epcore_core_rst:1; |
| uint32_t epcore_pwr_rst:1; |
| uint32_t shared_voter_en:1; |
| uint32_t sp_rst:1; |
| uint32_t sp_rst_stat:1; |
| uint32_t rsrvd:13; |
| #endif |
| } bits; |
| } block_reset_t; |
| |
| |
| /* |
| * Register: TimeoutCfg |
| * PIO Timeout Configuration |
| * Description: PIO Timeout Configuration register to control wait |
| * time for a PIO access to complete. The timer resolution is in 250 |
| * MHz clock. |
| * Fields: |
| * Programmable timeout counter value for PIO clients who did not |
| * ack a transaction in time. Minimum value should be 64. |
| * Timeout enable for PIO access to clients. 1 = enable. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:21; |
| uint32_t tmout_cnt:10; |
| uint32_t tmout_en:1; |
| #else |
| uint32_t tmout_en:1; |
| uint32_t tmout_cnt:10; |
| uint32_t rsrvd:21; |
| #endif |
| } bits; |
| } timeout_cfg_t; |
| |
| |
| /* |
| * Register: HeartCfg |
| * PIO Heartbeat Config |
| * Description: PIO Blade presence indication : Heartbeat |
| * configuration The timer resolution is in 250 MHz clock. |
| * Fields: |
| * Heartbeat countdown 250Mhz clock divider which serves as |
| * resolution for the heartTimer. |
| * Heartbeat countdown enable |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t divider:28; |
| uint32_t rsrvd:3; |
| uint32_t en:1; |
| #else |
| uint32_t en:1; |
| uint32_t rsrvd:3; |
| uint32_t divider:28; |
| #endif |
| } bits; |
| } heart_cfg_t; |
| |
| |
| /* |
| * Register: HeartTimer |
| * PIO Heartbeat Timer |
| * Description: PIO Blade presence indication : Heartbeat timer The |
| * timer resolution is in 250 MHz clock. |
| * Fields: |
| * Number of heartCfg.divider ticks of the 250Mhz clock before |
| * blade presence expires. This register decrements for every |
| * heartCfg.divider number of 250MHz clock cycles. It expires to |
| * 0 and so must be written periodically to reset the timer back |
| * to the required value. This counter does not have any effect |
| * on CIP functionality. |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t timer:32; |
| #else |
| uint32_t timer:32; |
| #endif |
| } bits; |
| } heart_timer_t; |
| |
| |
| /* |
| * Register: CipGpCtrl |
| * CIP General Purpose Control Register |
| */ |
| typedef union { |
| uint32_t value; |
| struct { |
| #if defined(_BIG_ENDIAN) |
| uint32_t rsrvd:30; |
| uint32_t dma_override_relaxord:1; |
|