nxge_txc_hw.h revision 6f45ec7b0b964c3be967c4880e8867ac1e7763a5
/*
* 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 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_NXGE_NXGE_TXC_HW_H
#define _SYS_NXGE_NXGE_TXC_HW_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <nxge_defs.h>
/* Transmit Ring Scheduler Registers */
#define TXC_PORT_DMA_ENABLE_REG (FZC_TXC + 0x20028)
#define TXC_PORT_DMA_LIST 0 /* RW bit 23:0 */
#define TXC_DMA_DMA_LIST_MASK 0x0000000000FFFFFFULL
#define TXC_DMA_DMA_LIST_MASK_N2 0x000000000000FFFFULL
typedef union _txc_port_enable_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:8;
uint32_t port_dma_list:24;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port_dma_list:24;
uint32_t res:8;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_port_enable_t, *p_txc_port_enable_t;
typedef union _txc_port_enable_n2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:16;
uint32_t port_dma_list:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port_dma_list:16;
uint32_t res:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_port_enable_n2_t, *p_txc_port_enable_n2_t;
/* Transmit Controller - Registers */
#define TXC_FZC_OFFSET 0x1000
#define TXC_FZC_PORT_OFFSET(port) (port * TXC_FZC_OFFSET)
#define TXC_FZC_CHANNEL_OFFSET(channel) (channel * TXC_FZC_OFFSET)
#define TXC_FZC_REG_CN_OFFSET(x, cn) (x + TXC_FZC_CHANNEL_OFFSET(cn))
#define TXC_FZC_CONTROL_OFFSET 0x100
#define TXC_FZC_CNTL_PORT_OFFSET(port) (port * TXC_FZC_CONTROL_OFFSET)
#define TXC_FZC_REG_PT_OFFSET(x, pt) (x + TXC_FZC_CNTL_PORT_OFFSET(pt))
#define TXC_DMA_MAX_BURST_REG (FZC_TXC + 0x00000)
#define TXC_DMA_MAX_BURST_SHIFT 0 /* RW bit 19:0 */
#define TXC_DMA_MAX_BURST_MASK 0x00000000000FFFFFULL
#define TXC_MAX_BURST_OFFSET(channel) (TXC_DMA_MAX_BURST_REG + \
(channel * TXC_FZC_OFFSET))
typedef union _txc_dma_max_burst_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:12;
uint32_t dma_max_burst:20;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t dma_max_burst:20;
uint32_t res:12;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_dma_max_burst_t, *p_txc_dma_max_burst_t;
/* DRR Performance Monitoring Register */
#define TXC_DMA_MAX_LENGTH_REG (FZC_TXC + 0x00008)
#define TXC_DMA_MAX_LENGTH_SHIFT /* RW bit 27:0 */
#define TXC_DMA_MAX_LENGTH_MASK 0x000000000FFFFFFFULL
#define TXC_DMA_MAX_LEN_OFFSET(channel) (TXC_DMA_MAX_LENGTH_REG + \
(channel * TXC_FZC_OFFSET))
typedef union _txc_dma_max_length_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:4;
uint32_t dma_length:28;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t dma_length:28;
uint32_t res:4;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_dma_max_length_t, *p_txc_dma_max_length_t;
#define TXC_CONTROL_REG (FZC_TXC + 0x20000)
#define TXC_DMA_LENGTH_SHIFT 0 /* RW bit 27:0 */
#define TXC_DMA_LENGTH_MASK 0x000000000FFFFFFFULL
typedef union _txc_control_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:27;
uint32_t txc_enabled:1;
uint32_t port3_enabled:1;
uint32_t port2_enabled:1;
uint32_t port1_enabled:1;
uint32_t port0_enabled:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_enabled:1;
uint32_t port1_enabled:1;
uint32_t port2_enabled:1;
uint32_t port3_enabled:1;
uint32_t txc_enabled:1;
uint32_t res:27;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_control_t, *p_txc_control_t;
typedef union _txc_control_n2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:27;
uint32_t txc_enabled:1;
uint32_t res1:2;
uint32_t port1_enabled:1;
uint32_t port0_enabled:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_enabled:1;
uint32_t port1_enabled:1;
uint32_t res1:2;
uint32_t txc_enabled:1;
uint32_t res:27;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_control_n2_t, *p_txc_control_n2_t;
#define TXC_TRAINING_REG (FZC_TXC + 0x20008)
#define TXC_TRAINING_VECTOR 0 /* RW bit 32:0 */
#define TXC_TRAINING_VECTOR_MASK 0x00000000FFFFFFFFULL
typedef union _txc_training_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t txc_training_vector:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t txc_training_vector:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_training_t, *p_txc_training_t;
#define TXC_DEBUG_SELECT_REG (FZC_TXC + 0x20010)
#define TXC_DEBUG_SELECT_SHIFT 0 /* WO bit 5:0 */
#define TXC_DEBUG_SELECT_MASK 0x000000000000003FULL
typedef union _txc_debug_select_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:26;
uint32_t debug_select:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t debug_select:6;
uint32_t res:26;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_debug_select_t, *p_txc_debug_select_t;
#define TXC_MAX_REORDER_REG (FZC_TXC + 0x20018)
#define TXC_MAX_REORDER_MASK_2 (0xf)
#define TXC_MAX_REORDER_MASK_4 (0x7)
#define TXC_MAX_REORDER_SHIFT_BITS 8
#define TXC_MAX_REORDER_SHIFT(port) (port * (TXC_MAX_REORDER_SHIFT_BITS))
typedef union _txc_max_reorder_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t resv3:4;
uint32_t port3:4;
uint32_t resv2:4;
uint32_t port2:4;
uint32_t resv1:4;
uint32_t port1:4;
uint32_t resv0:4;
uint32_t port0:4;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0:4;
uint32_t resv0:4;
uint32_t port1:4;
uint32_t resv1:4;
uint32_t port2:4;
uint32_t resv2:4;
uint32_t port3:4;
uint32_t resv3:4;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_max_reorder_t, *p_txc_max_reorder_t;
#define TXC_PORT_CTL_REG (FZC_TXC + 0x20020) /* RO */
#define TXC_PORT_CTL_OFFSET(port) (TXC_PORT_CTL_REG + \
(port * TXC_FZC_CONTROL_OFFSET))
#define TXC_PORT_CNTL_CLEAR 0x1
typedef union _txc_port_ctl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd:31;
uint32_t clr_all_stat:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t clr_all_stat:1;
uint32_t rsvd:31;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_port_ctl_t, *p_txc_port_ctl_t;
#define TXC_PKT_STUFFED_REG (FZC_TXC + 0x20030)
#define TXC_PKT_STUFF_PKTASY_SHIFT 16 /* RW bit 16:0 */
#define TXC_PKT_STUFF_PKTASY_MASK 0x000000000000FFFFULL
#define TXC_PKT_STUFF_REORDER_SHIFT 0 /* RW bit 31:16 */
#define TXC_PKT_STUFF_REORDER_MASK 0x00000000FFFF0000ULL
typedef union _txc_pkt_stuffed_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t pkt_pro_reorder:16;
uint32_t pkt_proc_pktasy:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkt_proc_pktasy:16;
uint32_t pkt_pro_reorder:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_pkt_stuffed_t, *p_txc_pkt_stuffed_t;
#define TXC_PKT_XMIT_REG (FZC_TXC + 0x20038)
#define TXC_PKTS_XMIT_SHIFT 0 /* RW bit 15:0 */
#define TXC_PKTS_XMIT_MASK 0x000000000000FFFFULL
#define TXC_BYTES_XMIT_SHIFT 16 /* RW bit 31:16 */
#define TXC_BYTES_XMIT_MASK 0x00000000FFFF0000ULL
typedef union _txc_pkt_xmit_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t bytes_transmitted:16;
uint32_t pkts_transmitted:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkts_transmitted:16;
uint32_t bytes_transmitted:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_pkt_xmit, *p_txc_pkt_xmit;
/* count 4 step 0x00100 */
#define TXC_ROECC_CTL_REG (FZC_TXC + 0x20040)
#define TXC_ROECC_CTL_OFFSET(port) (TXC_ROECC_CTL_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_roecc_ctl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t disable_ue_error:1;
uint32_t rsvd:13;
uint32_t double_bit_err:1;
uint32_t single_bit_err:1;
uint32_t rsvd_2:5;
uint32_t all_pkts:1;
uint32_t alternate_pkts:1;
uint32_t one_pkt:1;
uint32_t rsvd_3:5;
uint32_t last_line_pkt:1;
uint32_t second_line_pkt:1;
uint32_t firstd_line_pkt:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t firstd_line_pkt:1;
uint32_t second_line_pkt:1;
uint32_t last_line_pkt:1;
uint32_t rsvd_3:5;
uint32_t one_pkt:1;
uint32_t alternate_pkts:1;
uint32_t all_pkts:1;
uint32_t rsvd_2:5;
uint32_t single_bit_err:1;
uint32_t double_bit_err:1;
uint32_t rsvd:13;
uint32_t disable_ue_error:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_roecc_ctl_t, *p_txc_roecc_ctl_t;
#define TXC_ROECC_ST_REG (FZC_TXC + 0x20048)
#define TXC_ROECC_ST_OFFSET(port) (TXC_ROECC_ST_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_roecc_st_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t clr_st:1;
uint32_t res:13;
uint32_t correct_error:1;
uint32_t uncorrect_error:1;
uint32_t rsvd:6;
uint32_t ecc_address:10;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ecc_address:10;
uint32_t rsvd:6;
uint32_t uncorrect_error:1;
uint32_t correct_error:1;
uint32_t res:13;
uint32_t clr_st:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_roecc_st_t, *p_txc_roecc_st_t;
#define TXC_RO_DATA0_REG (FZC_TXC + 0x20050)
#define TXC_RO_DATA0_OFFSET(port) (TXC_RO_DATA0_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_data0_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_ecc_data0:32; /* ro_ecc_data[31:0] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_ecc_data0:32; /* ro_ecc_data[31:0] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_data0_t, *p_txc_ro_data0_t;
#define TXC_RO_DATA1_REG (FZC_TXC + 0x20058)
#define TXC_RO_DATA1_OFFSET(port) (TXC_RO_DATA1_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_data1_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_ecc_data1:32; /* ro_ecc_data[63:32] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_ecc_data1:32; /* ro_ecc_data[31:32] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_data1_t, *p_txc_ro_data1_t;
#define TXC_RO_DATA2_REG (FZC_TXC + 0x20060)
#define TXC_RO_DATA2_OFFSET(port) (TXC_RO_DATA2_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_data2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_ecc_data2:32; /* ro_ecc_data[95:64] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_ecc_data2:32; /* ro_ecc_data[95:64] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_data2_t, *p_txc_ro_data2_t;
#define TXC_RO_DATA3_REG (FZC_TXC + 0x20068)
#define TXC_RO_DATA3_OFFSET(port) (TXC_RO_DATA3_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_data3_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_ecc_data3:32; /* ro_ecc_data[127:96] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_ecc_data3:32; /* ro_ecc_data[127:96] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_data3_t, *p_txc_ro_data3_t;
#define TXC_RO_DATA4_REG (FZC_TXC + 0x20070)
#define TXC_RO_DATA4_OFFSET(port) (TXC_RO_DATA4_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_data4_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_ecc_data4:32; /* ro_ecc_data[151:128] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_ecc_data4:32; /* ro_ecc_data[151:128] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_data4_t, *p_txc_ro_data4_t;
/* count 4 step 0x00100 */
#define TXC_SFECC_CTL_REG (FZC_TXC + 0x20078)
#define TXC_SFECC_CTL_OFFSET(port) (TXC_SFECC_CTL_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sfecc_ctl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t disable_ue_error:1;
uint32_t rsvd:13;
uint32_t double_bit_err:1;
uint32_t single_bit_err:1;
uint32_t rsvd_2:5;
uint32_t all_pkts:1;
uint32_t alternate_pkts:1;
uint32_t one_pkt:1;
uint32_t rsvd_3:5;
uint32_t last_line_pkt:1;
uint32_t second_line_pkt:1;
uint32_t firstd_line_pkt:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t firstd_line_pkt:1;
uint32_t second_line_pkt:1;
uint32_t last_line_pkt:1;
uint32_t rsvd_3:5;
uint32_t one_pkt:1;
uint32_t alternate_pkts:1;
uint32_t all_pkts:1;
uint32_t rsvd_2:5;
uint32_t single_bit_err:1;
uint32_t double_bit_err:1;
uint32_t rsvd:13;
uint32_t disable_ue_error:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sfecc_ctl_t, *p_txc_sfecc_ctl_t;
#define TXC_SFECC_ST_REG (FZC_TXC + 0x20080)
#define TXC_SFECC_ST_OFFSET(port) (TXC_SFECC_ST_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sfecc_st_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t clr_st:1;
uint32_t res:13;
uint32_t correct_error:1;
uint32_t uncorrect_error:1;
uint32_t rsvd:6;
uint32_t ecc_address:10;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ecc_address:10;
uint32_t rsvd:6;
uint32_t uncorrect_error:1;
uint32_t correct_error:1;
uint32_t res:13;
uint32_t clr_st:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sfecc_st_t, *p_txc_sfecc_st_t;
#define TXC_SF_DATA0_REG (FZC_TXC + 0x20088)
#define TXC_SF_DATA0_OFFSET(port) (TXC_SF_DATA0_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sf_data0_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sf_ecc_data0:32; /* sf_ecc_data[31:0] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sf_ecc_data0:32; /* sf_ecc_data[31:0] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sf_data0_t, *p_txc_sf_data0_t;
#define TXC_SF_DATA1_REG (FZC_TXC + 0x20090)
#define TXC_SF_DATA1_OFFSET(port) (TXC_SF_DATA1_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sf_data1_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sf_ecc_data1:32; /* sf_ecc_data[63:32] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sf_ecc_data1:32; /* sf_ecc_data[31:32] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sf_data1_t, *p_txc_sf_data1_t;
#define TXC_SF_DATA2_REG (FZC_TXC + 0x20098)
#define TXC_SF_DATA2_OFFSET(port) (TXC_SF_DATA2_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sf_data2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sf_ecc_data2:32; /* sf_ecc_data[95:64] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sf_ecc_data2:32; /* sf_ecc_data[95:64] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sf_data2_t, *p_txc_sf_data2_t;
#define TXC_SF_DATA3_REG (FZC_TXC + 0x200A0)
#define TXC_SF_DATA3_OFFSET(port) (TXC_SF_DATA3_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sf_data3_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sf_ecc_data3:32; /* sf_ecc_data[127:96] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sf_ecc_data3:32; /* sf_ecc_data[127:96] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sf_data3_t, *p_txc_sf_data3_t;
#define TXC_SF_DATA4_REG (FZC_TXC + 0x200A8)
#define TXC_SF_DATA4_OFFSET(port) (TXC_SF_DATA4_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_sf_data4_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sf_ecc_data4:32; /* sf_ecc_data[151:128] */
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sf_ecc_data4:32; /* sf_ecc_data[151:128] */
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_sf_data4_t, *p_txc_sf_data4_t;
#define TXC_RO_TIDS_REG (FZC_TXC + 0x200B0)
#define TXC_RO_TIDS_OFFSET(port) (TXC_RO_TIDS_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_TIDS_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_tids_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t tids_in_use:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t tids_in_use:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_tids_t, *p_txc_ro_tids_t;
#define TXC_RO_STATE0_REG (FZC_TXC + 0x200B8)
#define TXC_RO_STATE0_OFFSET(port) (TXC_STATE0_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_STATE0_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_state0_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t duplicate_tid:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t duplicate_tid:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_state0_t, *p_txc_ro_state0_t;
#define TXC_RO_STATE1_REG (FZC_TXC + 0x200C0)
#define TXC_RO_STATE1_OFFSET(port) (TXC_STATE1_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_STATE1_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_state1_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t unused_tid:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t unused_tid:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_state1_t, *p_txc_ro_state1_t;
#define TXC_RO_STATE2_REG (FZC_TXC + 0x200C8)
#define TXC_RO_STATE2_OFFSET(port) (TXC_STATE2_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_STATE2_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_state2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t transaction_timeout:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t transaction_timeout:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_state2_t, *p_txc_ro_state2_t;
#define TXC_RO_STATE3_REG (FZC_TXC + 0x200D0)
#define TXC_RO_STATE3_OFFSET(port) (TXC_RO_STATE3_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_state3_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t enable_spacefilled_watermark:1;
uint32_t ro_spacefilled_watermask:10;
uint32_t ro_fifo_spaceavailable:10;
uint32_t rsv:2;
uint32_t enable_ro_watermark:1;
uint32_t highest_reorder_used:4;
uint32_t num_reorder_used:4;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t num_reorder_used:4;
uint32_t highest_reorder_used:4;
uint32_t enable_ro_watermark:1;
uint32_t rsv:2;
uint32_t ro_fifo_spaceavailable:10;
uint32_t ro_spacefilled_watermask:10;
uint32_t enable_spacefilled_watermark:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_state3_t, *p_txc_ro_state3_t;
#define TXC_RO_CTL_REG (FZC_TXC + 0x200D8)
#define TXC_RO_CTL_OFFSET(port) (TXC_RO_CTL_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
typedef union _txc_ro_ctl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t clr_fail_state:1;
uint32_t rsvd3:3;
uint32_t ro_addr1:4;
uint32_t rsvd2:1;
uint32_t address_failed:1;
uint32_t dma_failed:1;
uint32_t length_failed:1;
uint32_t rsv:1;
uint32_t capture_address_fail:1;
uint32_t capture_dma_fail:1;
uint32_t capture_length_fail:1;
uint32_t rsvd:8;
uint32_t ro_state_rd_done:1;
uint32_t ro_state_wr_done:1;
uint32_t ro_state_rd:1;
uint32_t ro_state_wr:1;
uint32_t ro_state_addr:4;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_state_addr:4;
uint32_t ro_state_wr:1;
uint32_t ro_state_rd:1;
uint32_t ro_state_wr_done:1;
uint32_t ro_state_rd_done:1;
uint32_t rsvd:8;
uint32_t capture_length_fail:1;
uint32_t capture_dma_fail:1;
uint32_t capture_address_fail:1;
uint32_t rsv:1;
uint32_t length_failed:1;
uint32_t dma_failed:1;
uint32_t address_failed:1;
uint32_t rsvd2:1;
uint32_t ro_addr1:4;
uint32_t rsvd3:3;
uint32_t clr_fail_state:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_ctl_t, *p_txc_ro_ctl_t;
#define TXC_RO_ST_DATA0_REG (FZC_TXC + 0x200E0)
#define TXC_RO_ST_DATA0_OFFSET(port) (TXC_RO_ST_DATA0_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_ST_DATA0_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_st_data0_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_st_dat0:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_st_dat0:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_st_data0_t, *p_txc_ro_st_data0_t;
#define TXC_RO_ST_DATA1_REG (FZC_TXC + 0x200E8)
#define TXC_RO_ST_DATA1_OFFSET(port) (TXC_RO_ST_DATA1_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_ST_DATA1_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_st_data1_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_st_dat1:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_st_dat1:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_st_data1_t, *p_txc_ro_st_data1_t;
#define TXC_RO_ST_DATA2_REG (FZC_TXC + 0x200F0)
#define TXC_RO_ST_DATA2_OFFSET(port) (TXC_RO_ST_DATA2_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_ST_DATA2_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_st_data2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_st_dat2:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_st_dat2:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_st_data2_t, *p_txc_ro_st_data2_t;
#define TXC_RO_ST_DATA3_REG (FZC_TXC + 0x200F8)
#define TXC_RO_ST_DATA3_OFFSET(port) (TXC_RO_ST_DATA3_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_RO_ST_DATA3_MASK 0x00000000FFFFFFFFULL
typedef union _txc_ro_st_data3_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t ro_st_dat3:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t ro_st_dat3:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_ro_st_data3_t, *p_txc_ro_st_data3_t;
#define TXC_PORT_PACKET_REQ_REG (FZC_TXC + 0x20100)
#define TXC_PORT_PACKET_REQ_OFFSET(port) (TXC_PORT_PACKET_REQ_REG + \
(TXC_FZC_CNTL_PORT_OFFSET(port)))
#define TXC_PORT_PACKET_REQ_MASK 0x00000000FFFFFFFFULL
typedef union _txc_port_packet_req_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t gather_req:4;
uint32_t packet_eq:12;
uint32_t pkterr_abort:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkterr_abort:16;
uint32_t packet_eq:12;
uint32_t gather_req:4;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_port_packet_req_t, *p_txc_port_packet_req_t;
/* Reorder error bits in interrupt registers */
#define TXC_INT_STAT_SF_CORR_ERR 0x01
#define TXC_INT_STAT_SF_UNCORR_ERR 0x02
#define TXC_INT_STAT_RO_CORR_ERR 0x04
#define TXC_INT_STAT_RO_UNCORR_ERR 0x08
#define TXC_INT_STAT_REORDER_ERR 0x10
#define TXC_INT_STAT_PKTASSYDEAD 0x20
#define TXC_INT_STAT_DBG_REG (FZC_TXC + 0x20420)
#define TXC_INT_STAT_DBG_MASK 0x00000000FFFFFFFFULL
typedef union _txc_int_stat_dbg_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd3:2;
uint32_t port3_int_status:6;
uint32_t rsvd2:2;
uint32_t port2_int_status:6;
uint32_t rsvd1:2;
uint32_t port1_int_status:6;
uint32_t rsvd:2;
uint32_t port0_int_status:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_int_status:6;
uint32_t rsvd:2;
uint32_t port1_int_status:6;
uint32_t rsvd1:2;
uint32_t port2_int_status:6;
uint32_t rsvd2:2;
uint32_t port3_int_status:6;
uint32_t rsvd3:2;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_int_stat_dbg_t, *p_txc_int_stat_dbg_t;
#define TXC_INT_STAT_REG (FZC_TXC + 0x20428)
#define TXC_INT_STAT_MASK 0x00000000FFFFFFFFULL
typedef union _txc_int_stat_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd3:2;
uint32_t port3_int_status:6;
uint32_t rsvd2:2;
uint32_t port2_int_status:6;
uint32_t rsvd1:2;
uint32_t port1_int_status:6;
uint32_t rsvd:2;
uint32_t port0_int_status:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_int_status:6;
uint32_t rsvd:2;
uint32_t port1_int_status:6;
uint32_t rsvd1:2;
uint32_t port2_int_status:6;
uint32_t rsvd2:2;
uint32_t port3_int_status:6;
uint32_t rsvd3:2;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_int_stat_t, *p_txc_int_stat_t;
#define TXC_INT_MASK_REG (FZC_TXC + 0x20430)
#define TXC_INT_MASK_MASK 0x00000000FFFFFFFFULL
typedef union _txc_int_mask_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd3:2;
uint32_t port3_int_mask:6;
uint32_t rsvd2:2;
uint32_t port2_int_mask:6;
uint32_t rsvd1:2;
uint32_t port1_int_mask:6;
uint32_t rsvd:2;
uint32_t port0_int_mask:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_int_mask:6;
uint32_t rsvd:2;
uint32_t port1_int_mask:6;
uint32_t rsvd1:2;
uint32_t port2_int_mask:6;
uint32_t rsvd2:2;
uint32_t port3_int_mask:6;
uint32_t rsvd3:2;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_int_mask_t, *p_txc_int_mask_t;
/* 2 ports */
typedef union _txc_int_mask_n2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd1:18;
uint32_t port1_int_mask:6;
uint32_t rsvd:2;
uint32_t port0_int_mask:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t port0_int_mask:6;
uint32_t rsvd:2;
uint32_t port1_int_mask:6;
uint32_t rsvd1:18;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txc_int_mask_n2_t, *p_txc_int_mask_n2_t;
typedef struct _txc_ro_states {
txc_roecc_st_t roecc;
txc_ro_data0_t d0;
txc_ro_data1_t d1;
txc_ro_data2_t d2;
txc_ro_data3_t d3;
txc_ro_data4_t d4;
txc_ro_tids_t tids;
txc_ro_state0_t st0;
txc_ro_state1_t st1;
txc_ro_state2_t st2;
txc_ro_state3_t st3;
txc_ro_ctl_t ctl;
} txc_ro_states_t, *p_txc_ro_states_t;
typedef struct _txc_sf_states {
txc_sfecc_st_t sfecc;
txc_sf_data0_t d0;
txc_sf_data1_t d1;
txc_sf_data2_t d2;
txc_sf_data3_t d3;
txc_sf_data4_t d4;
} txc_sf_states_t, *p_txc_sf_states_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_NXGE_NXGE_TXC_HW_H */