/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2020 Marvell International Ltd. */ #ifndef __CVMX_GSERX_DEFS_H__ #define __CVMX_GSERX_DEFS_H__ #define CVMX_GSERX_DLMX_TX_AMPLITUDE(offset, block_id) (0x0001180090003008ull) #define CVMX_GSERX_DLMX_TX_PREEMPH(offset, block_id) (0x0001180090003028ull) #define CVMX_GSERX_DLMX_MPLL_EN(offset, block_id) (0x0001180090001020ull) #define CVMX_GSERX_DLMX_REF_SSP_EN(offset, block_id) (0x0001180090001048ull) #define CVMX_GSERX_DLMX_TX_RATE(offset, block_id) (0x0001180090003030ull) #define CVMX_GSERX_DLMX_TX_EN(offset, block_id) (0x0001180090003020ull) #define CVMX_GSERX_DLMX_TX_CM_EN(offset, block_id) (0x0001180090003010ull) #define CVMX_GSERX_DLMX_TX_RESET(offset, block_id) (0x0001180090003038ull) #define CVMX_GSERX_DLMX_TX_DATA_EN(offset, block_id) (0x0001180090003018ull) #define CVMX_GSERX_DLMX_RX_RATE(offset, block_id) (0x0001180090002028ull) #define CVMX_GSERX_DLMX_RX_PLL_EN(offset, block_id) (0x0001180090002020ull) #define CVMX_GSERX_DLMX_RX_DATA_EN(offset, block_id) (0x0001180090002008ull) #define CVMX_GSERX_DLMX_RX_RESET(offset, block_id) (0x0001180090002030ull) #define CVMX_GSERX_DLMX_TX_STATUS(offset, block_id) \ (0x0001180090003000ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_RX_STATUS(offset, block_id) \ (0x0001180090002000ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) static inline u64 CVMX_GSERX_SATA_STATUS(unsigned long offset) { switch (cvmx_get_octeon_family()) { case OCTEON_CN70XX & OCTEON_FAMILY_MASK: return 0x0001180090100200ull + (offset) * 0x1000000ull; case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: return 0x0001180090100900ull + (offset) * 0x1000000ull; case OCTEON_CN73XX & OCTEON_FAMILY_MASK: return 0x0001180090100900ull + (offset) * 0x1000000ull; } return 0x0001180090100900ull + (offset) * 0x1000000ull; } #define CVMX_GSERX_DLMX_RX_EQ(offset, block_id) \ (0x0001180090002010ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_REF_USE_PAD(offset, block_id) \ (0x0001180090001050ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_REFCLK_SEL(offset, block_id) \ (0x0001180090000008ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_PHY_RESET(offset, block_id) \ (0x0001180090001038ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_TEST_POWERDOWN(offset, block_id) \ (0x0001180090001060ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_REF_CLKDIV2(offset, block_id) \ (0x0001180090001040ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_MPLL_MULTIPLIER(offset, block_id) \ (0x0001180090001030ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_DLMX_MPLL_STATUS(offset, block_id) \ (0x0001180090001000ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_BR_RXX_CTL(offset, block_id) \ (0x0001180090000400ull + (((offset) & 3) + ((block_id) & 15) * 0x20000ull) * 128) #define CVMX_GSERX_BR_RXX_EER(offset, block_id) \ (0x0001180090000418ull + (((offset) & 3) + ((block_id) & 15) * 0x20000ull) * 128) #define CVMX_GSERX_PCIE_PIPE_PORT_SEL(offset) (0x0001180090080460ull) #define CVMX_GSERX_PCIE_PIPE_RST(offset) (0x0001180090080448ull) #define CVMX_GSERX_SATA_CFG(offset) (0x0001180090100208ull) #define CVMX_GSERX_SATA_REF_SSP_EN(offset) (0x0001180090100600ull) static inline u64 CVMX_GSERX_SATA_LANE_RST(unsigned long offset) { switch (cvmx_get_octeon_family()) { case OCTEON_CN70XX & OCTEON_FAMILY_MASK: return 0x0001180090100210ull + (offset) * 0x1000000ull; case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: return 0x0001180090000908ull + (offset) * 0x1000000ull; case OCTEON_CN73XX & OCTEON_FAMILY_MASK: return 0x0001180090000908ull + (offset) * 0x1000000ull; } return 0x0001180090000908ull + (offset) * 0x1000000ull; } #define CVMX_GSERX_EQ_WAIT_TIME(offset) (0x00011800904E0000ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_GLBL_MISC_CONFIG_1(offset) (0x0001180090460030ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_GLBL_PLL_CFG_3(offset) (0x0001180090460018ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_PHYX_OVRD_IN_LO(offset, block_id) \ (0x0001180090400088ull + (((offset) & 3) + ((block_id) & 0) * 0x0ull) * 524288) #define CVMX_GSERX_RX_PWR_CTRL_P1(offset) (0x00011800904600B0ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_RX_PWR_CTRL_P2(offset) (0x00011800904600B8ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_RX_EIE_DETSTS(offset) (0x0001180090000150ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_LANE_MODE(offset) (0x0001180090000118ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_LANE_VMA_FINE_CTRL_0(offset) \ (0x00011800904E01C8ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_LANEX_LBERT_CFG(offset, block_id) \ (0x00011800904C0020ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_MISC_CFG_0(offset, block_id) \ (0x00011800904C0000ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANE_PX_MODE_0(offset, block_id) \ (0x00011800904E0040ull + (((offset) & 15) + ((block_id) & 15) * 0x80000ull) * 32) #define CVMX_GSERX_LANE_PX_MODE_1(offset, block_id) \ (0x00011800904E0048ull + (((offset) & 15) + ((block_id) & 15) * 0x80000ull) * 32) #define CVMX_GSERX_LANEX_RX_CFG_0(offset, block_id) \ (0x0001180090440000ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CFG_1(offset, block_id) \ (0x0001180090440008ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CFG_2(offset, block_id) \ (0x0001180090440010ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CFG_3(offset, block_id) \ (0x0001180090440018ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CFG_4(offset, block_id) \ (0x0001180090440020ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CFG_5(offset, block_id) \ (0x0001180090440028ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_CTLE_CTRL(offset, block_id) \ (0x0001180090440058ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_LOOP_CTRL(offset, block_id) \ (0x0001180090440048ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_VALBBD_CTRL_0(offset, block_id) \ (0x0001180090440240ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_VALBBD_CTRL_1(offset, block_id) \ (0x0001180090440248ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_VALBBD_CTRL_2(offset, block_id) \ (0x0001180090440250ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_RX_MISC_OVRRD(offset, block_id) \ (0x0001180090440258ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_TX_CFG_0(offset, block_id) \ (0x00011800904400A8ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_TX_CFG_1(offset, block_id) \ (0x00011800904400B0ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_TX_CFG_2(offset, block_id) \ (0x00011800904400B8ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_TX_CFG_3(offset, block_id) \ (0x00011800904400C0ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_TX_PRE_EMPHASIS(offset, block_id) \ (0x00011800904400C8ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_RX_TXDIR_CTRL_0(offset) (0x00011800904600E8ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_RX_TXDIR_CTRL_1(offset) (0x00011800904600F0ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_RX_TXDIR_CTRL_2(offset) (0x00011800904600F8ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_LANEX_PCS_CTLIFC_0(offset, block_id) \ (0x00011800904C0060ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_PCS_CTLIFC_1(offset, block_id) \ (0x00011800904C0068ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_PCS_CTLIFC_2(offset, block_id) \ (0x00011800904C0070ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANEX_PWR_CTRL(offset, block_id) \ (0x00011800904400D8ull + (((offset) & 3) + ((block_id) & 15) * 0x10ull) * 1048576) #define CVMX_GSERX_LANE_VMA_FINE_CTRL_2(offset) \ (0x00011800904E01D8ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_PLL_STAT(offset) (0x0001180090000010ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_QLM_STAT(offset) (0x00011800900000A0ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_PLL_PX_MODE_0(offset, block_id) \ (0x00011800904E0030ull + (((offset) & 15) + ((block_id) & 15) * 0x80000ull) * 32) #define CVMX_GSERX_PLL_PX_MODE_1(offset, block_id) \ (0x00011800904E0038ull + (((offset) & 15) + ((block_id) & 15) * 0x80000ull) * 32) #define CVMX_GSERX_SLICE_CFG(offset) (0x0001180090460060ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_SLICEX_PCIE1_MODE(offset, block_id) \ (0x0001180090460228ull + (((offset) & 1) + ((block_id) & 15) * 0x8ull) * 2097152) #define CVMX_GSERX_SLICEX_PCIE2_MODE(offset, block_id) \ (0x0001180090460230ull + (((offset) & 1) + ((block_id) & 15) * 0x8ull) * 2097152) #define CVMX_GSERX_SLICEX_PCIE3_MODE(offset, block_id) \ (0x0001180090460238ull + (((offset) & 1) + ((block_id) & 15) * 0x8ull) * 2097152) #define CVMX_GSERX_SLICEX_RX_SDLL_CTRL(offset, block_id) \ (0x0001180090460220ull + (((offset) & 1) + ((block_id) & 15) * 0x8ull) * 2097152) #define CVMX_GSERX_REFCLK_SEL(offset) (0x0001180090000008ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_PHY_CTL(offset) (0x0001180090000000ull + ((offset) & 15) * 0x1000000ull) #define CVMX_GSERX_CFG(offset) (0x0001180090000080ull + ((offset) & 15) * 0x1000000ull) /** * cvmx_gser#_cfg */ union cvmx_gserx_cfg { u64 u64; struct cvmx_gserx_cfg_s { u64 reserved_9_63 : 55; u64 rmac_pipe : 1; u64 rmac : 1; u64 srio : 1; u64 sata : 1; u64 bgx_quad : 1; u64 bgx_dual : 1; u64 bgx : 1; u64 ila : 1; u64 pcie : 1; } s; struct cvmx_gserx_cfg_cn73xx { u64 reserved_6_63 : 58; u64 sata : 1; u64 bgx_quad : 1; u64 bgx_dual : 1; u64 bgx : 1; u64 ila : 1; u64 pcie : 1; } cn73xx; struct cvmx_gserx_cfg_cn78xx { u64 reserved_5_63 : 59; u64 bgx_quad : 1; u64 bgx_dual : 1; u64 bgx : 1; u64 ila : 1; u64 pcie : 1; } cn78xx; struct cvmx_gserx_cfg_cn78xx cn78xxp1; struct cvmx_gserx_cfg_s cnf75xx; }; typedef union cvmx_gserx_cfg cvmx_gserx_cfg_t; /** * cvmx_gser#_eq_wait_time * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_eq_wait_time { u64 u64; struct cvmx_gserx_eq_wait_time_s { u64 reserved_8_63 : 56; u64 rxeq_wait_cnt : 4; u64 txeq_wait_cnt : 4; } s; struct cvmx_gserx_eq_wait_time_s cn73xx; struct cvmx_gserx_eq_wait_time_s cn78xx; struct cvmx_gserx_eq_wait_time_s cn78xxp1; struct cvmx_gserx_eq_wait_time_s cnf75xx; }; typedef union cvmx_gserx_eq_wait_time cvmx_gserx_eq_wait_time_t; /** * cvmx_gser#_glbl_misc_config_1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_glbl_misc_config_1 { u64 u64; struct cvmx_gserx_glbl_misc_config_1_s { u64 reserved_10_63 : 54; u64 pcs_sds_vref_tr : 4; u64 pcs_sds_trim_chp_reg : 2; u64 pcs_sds_vco_reg_tr : 2; u64 pcs_sds_cvbg_en : 1; u64 pcs_sds_extvbg_en : 1; } s; struct cvmx_gserx_glbl_misc_config_1_s cn73xx; struct cvmx_gserx_glbl_misc_config_1_s cn78xx; struct cvmx_gserx_glbl_misc_config_1_s cn78xxp1; struct cvmx_gserx_glbl_misc_config_1_s cnf75xx; }; typedef union cvmx_gserx_glbl_misc_config_1 cvmx_gserx_glbl_misc_config_1_t; /** * cvmx_gser#_glbl_pll_cfg_3 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_glbl_pll_cfg_3 { u64 u64; struct cvmx_gserx_glbl_pll_cfg_3_s { u64 reserved_10_63 : 54; u64 pcs_sds_pll_vco_amp : 2; u64 pll_bypass_uq : 1; u64 pll_vctrl_sel_ovrrd_en : 1; u64 pll_vctrl_sel_ovrrd_val : 2; u64 pll_vctrl_sel_lcvco_val : 2; u64 pll_vctrl_sel_rovco_val : 2; } s; struct cvmx_gserx_glbl_pll_cfg_3_s cn73xx; struct cvmx_gserx_glbl_pll_cfg_3_s cn78xx; struct cvmx_gserx_glbl_pll_cfg_3_s cn78xxp1; struct cvmx_gserx_glbl_pll_cfg_3_s cnf75xx; }; typedef union cvmx_gserx_glbl_pll_cfg_3 cvmx_gserx_glbl_pll_cfg_3_t; /** * cvmx_gser#_dlm#_rx_data_en * * DLM Receiver Enable. * */ union cvmx_gserx_dlmx_rx_data_en { u64 u64; struct cvmx_gserx_dlmx_rx_data_en_s { u64 reserved_9_63 : 55; u64 rx1_data_en : 1; u64 reserved_1_7 : 7; u64 rx0_data_en : 1; } s; struct cvmx_gserx_dlmx_rx_data_en_s cn70xx; struct cvmx_gserx_dlmx_rx_data_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_data_en cvmx_gserx_dlmx_rx_data_en_t; /** * cvmx_gser#_dlm#_rx_pll_en * * DLM0 DPLL Enable. * */ union cvmx_gserx_dlmx_rx_pll_en { u64 u64; struct cvmx_gserx_dlmx_rx_pll_en_s { u64 reserved_9_63 : 55; u64 rx1_pll_en : 1; u64 reserved_1_7 : 7; u64 rx0_pll_en : 1; } s; struct cvmx_gserx_dlmx_rx_pll_en_s cn70xx; struct cvmx_gserx_dlmx_rx_pll_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_pll_en cvmx_gserx_dlmx_rx_pll_en_t; /** * cvmx_gser#_dlm#_rx_rate * * DLM0 Rx Data Rate. * */ union cvmx_gserx_dlmx_rx_rate { u64 u64; struct cvmx_gserx_dlmx_rx_rate_s { u64 reserved_10_63 : 54; u64 rx1_rate : 2; u64 reserved_2_7 : 6; u64 rx0_rate : 2; } s; struct cvmx_gserx_dlmx_rx_rate_s cn70xx; struct cvmx_gserx_dlmx_rx_rate_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_rate cvmx_gserx_dlmx_rx_rate_t; /** * cvmx_gser#_dlm#_rx_reset * * DLM0 Receiver Reset. * */ union cvmx_gserx_dlmx_rx_reset { u64 u64; struct cvmx_gserx_dlmx_rx_reset_s { u64 reserved_9_63 : 55; u64 rx1_reset : 1; u64 reserved_1_7 : 7; u64 rx0_reset : 1; } s; struct cvmx_gserx_dlmx_rx_reset_s cn70xx; struct cvmx_gserx_dlmx_rx_reset_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_reset cvmx_gserx_dlmx_rx_reset_t; /** * cvmx_gser#_dlm#_test_powerdown * * DLM Test Powerdown. * */ union cvmx_gserx_dlmx_test_powerdown { u64 u64; struct cvmx_gserx_dlmx_test_powerdown_s { u64 reserved_1_63 : 63; u64 test_powerdown : 1; } s; struct cvmx_gserx_dlmx_test_powerdown_s cn70xx; struct cvmx_gserx_dlmx_test_powerdown_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_test_powerdown cvmx_gserx_dlmx_test_powerdown_t; /** * cvmx_gser#_dlm#_tx_amplitude * * DLM0 Tx Amplitude (Full Swing Mode). * */ union cvmx_gserx_dlmx_tx_amplitude { u64 u64; struct cvmx_gserx_dlmx_tx_amplitude_s { u64 reserved_15_63 : 49; u64 tx1_amplitude : 7; u64 reserved_7_7 : 1; u64 tx0_amplitude : 7; } s; struct cvmx_gserx_dlmx_tx_amplitude_s cn70xx; struct cvmx_gserx_dlmx_tx_amplitude_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_amplitude cvmx_gserx_dlmx_tx_amplitude_t; /** * cvmx_gser#_dlm#_tx_en * * DLM Transmit Clocking and Data Sampling Enable. * */ union cvmx_gserx_dlmx_tx_en { u64 u64; struct cvmx_gserx_dlmx_tx_en_s { u64 reserved_9_63 : 55; u64 tx1_en : 1; u64 reserved_1_7 : 7; u64 tx0_en : 1; } s; struct cvmx_gserx_dlmx_tx_en_s cn70xx; struct cvmx_gserx_dlmx_tx_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_en cvmx_gserx_dlmx_tx_en_t; /** * cvmx_gser#_dlm#_tx_preemph * * DLM0 Tx Deemphasis. * */ union cvmx_gserx_dlmx_tx_preemph { u64 u64; struct cvmx_gserx_dlmx_tx_preemph_s { u64 reserved_15_63 : 49; u64 tx1_preemph : 7; u64 reserved_7_7 : 1; u64 tx0_preemph : 7; } s; struct cvmx_gserx_dlmx_tx_preemph_s cn70xx; struct cvmx_gserx_dlmx_tx_preemph_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_preemph cvmx_gserx_dlmx_tx_preemph_t; /** * cvmx_gser#_dlm#_tx_status * * DLM Transmit Common Mode Control Status. * */ union cvmx_gserx_dlmx_tx_status { u64 u64; struct cvmx_gserx_dlmx_tx_status_s { u64 reserved_10_63 : 54; u64 tx1_cm_status : 1; u64 tx1_status : 1; u64 reserved_2_7 : 6; u64 tx0_cm_status : 1; u64 tx0_status : 1; } s; struct cvmx_gserx_dlmx_tx_status_s cn70xx; struct cvmx_gserx_dlmx_tx_status_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_status cvmx_gserx_dlmx_tx_status_t; /** * cvmx_gser#_dlm#_rx_status * * DLM Receive DPLL State Indicator. * */ union cvmx_gserx_dlmx_rx_status { u64 u64; struct cvmx_gserx_dlmx_rx_status_s { u64 reserved_9_63 : 55; u64 rx1_status : 1; u64 reserved_1_7 : 7; u64 rx0_status : 1; } s; struct cvmx_gserx_dlmx_rx_status_s cn70xx; struct cvmx_gserx_dlmx_rx_status_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_status cvmx_gserx_dlmx_rx_status_t; /** * cvmx_gser#_dlm#_tx_rate * * DLM0 Tx Data Rate. * */ union cvmx_gserx_dlmx_tx_rate { u64 u64; struct cvmx_gserx_dlmx_tx_rate_s { u64 reserved_10_63 : 54; u64 tx1_rate : 2; u64 reserved_2_7 : 6; u64 tx0_rate : 2; } s; struct cvmx_gserx_dlmx_tx_rate_s cn70xx; struct cvmx_gserx_dlmx_tx_rate_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_rate cvmx_gserx_dlmx_tx_rate_t; /** * cvmx_gser#_sata_status * * SATA PHY Ready Status. * */ union cvmx_gserx_sata_status { u64 u64; struct cvmx_gserx_sata_status_s { u64 reserved_2_63 : 62; u64 p1_rdy : 1; u64 p0_rdy : 1; } s; struct cvmx_gserx_sata_status_s cn70xx; struct cvmx_gserx_sata_status_s cn70xxp1; struct cvmx_gserx_sata_status_s cn73xx; struct cvmx_gserx_sata_status_s cnf75xx; }; typedef union cvmx_gserx_sata_status cvmx_gserx_sata_status_t; /** * cvmx_gser#_dlm#_tx_data_en * * DLM0 Transmit Driver Enable. * */ union cvmx_gserx_dlmx_tx_data_en { u64 u64; struct cvmx_gserx_dlmx_tx_data_en_s { u64 reserved_9_63 : 55; u64 tx1_data_en : 1; u64 reserved_1_7 : 7; u64 tx0_data_en : 1; } s; struct cvmx_gserx_dlmx_tx_data_en_s cn70xx; struct cvmx_gserx_dlmx_tx_data_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_data_en cvmx_gserx_dlmx_tx_data_en_t; /** * cvmx_gser#_dlm#_tx_cm_en * * DLM0 Transmit Common-Mode Control Enable. * */ union cvmx_gserx_dlmx_tx_cm_en { u64 u64; struct cvmx_gserx_dlmx_tx_cm_en_s { u64 reserved_9_63 : 55; u64 tx1_cm_en : 1; u64 reserved_1_7 : 7; u64 tx0_cm_en : 1; } s; struct cvmx_gserx_dlmx_tx_cm_en_s cn70xx; struct cvmx_gserx_dlmx_tx_cm_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_cm_en cvmx_gserx_dlmx_tx_cm_en_t; /** * cvmx_gser#_dlm#_tx_reset * * DLM0 Tx Reset. * */ union cvmx_gserx_dlmx_tx_reset { u64 u64; struct cvmx_gserx_dlmx_tx_reset_s { u64 reserved_9_63 : 55; u64 tx1_reset : 1; u64 reserved_1_7 : 7; u64 tx0_reset : 1; } s; struct cvmx_gserx_dlmx_tx_reset_s cn70xx; struct cvmx_gserx_dlmx_tx_reset_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_tx_reset cvmx_gserx_dlmx_tx_reset_t; /** * cvmx_gser#_dlm#_mpll_status * * DLM PLL Lock Status. * */ union cvmx_gserx_dlmx_mpll_status { u64 u64; struct cvmx_gserx_dlmx_mpll_status_s { u64 reserved_1_63 : 63; u64 mpll_status : 1; } s; struct cvmx_gserx_dlmx_mpll_status_s cn70xx; struct cvmx_gserx_dlmx_mpll_status_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_mpll_status cvmx_gserx_dlmx_mpll_status_t; /** * cvmx_gser#_dlm#_phy_reset * * DLM Core and State Machine Reset. * */ union cvmx_gserx_dlmx_phy_reset { u64 u64; struct cvmx_gserx_dlmx_phy_reset_s { u64 reserved_1_63 : 63; u64 phy_reset : 1; } s; struct cvmx_gserx_dlmx_phy_reset_s cn70xx; struct cvmx_gserx_dlmx_phy_reset_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_phy_reset cvmx_gserx_dlmx_phy_reset_t; /** * cvmx_gser#_dlm#_ref_clkdiv2 * * DLM Input Reference Clock Divider Control. * */ union cvmx_gserx_dlmx_ref_clkdiv2 { u64 u64; struct cvmx_gserx_dlmx_ref_clkdiv2_s { u64 reserved_1_63 : 63; u64 ref_clkdiv2 : 1; } s; struct cvmx_gserx_dlmx_ref_clkdiv2_s cn70xx; struct cvmx_gserx_dlmx_ref_clkdiv2_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_ref_clkdiv2 cvmx_gserx_dlmx_ref_clkdiv2_t; /** * cvmx_gser#_dlm#_ref_ssp_en * * DLM0 Reference Clock Enable for the PHY. * */ union cvmx_gserx_dlmx_ref_ssp_en { u64 u64; struct cvmx_gserx_dlmx_ref_ssp_en_s { u64 reserved_1_63 : 63; u64 ref_ssp_en : 1; } s; struct cvmx_gserx_dlmx_ref_ssp_en_s cn70xx; struct cvmx_gserx_dlmx_ref_ssp_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_ref_ssp_en cvmx_gserx_dlmx_ref_ssp_en_t; union cvmx_gserx_dlmx_mpll_en { u64 u64; struct cvmx_gserx_dlmx_mpll_en_s { u64 reserved_1_63 : 63; u64 mpll_en : 1; } s; struct cvmx_gserx_dlmx_mpll_en_s cn70xx; struct cvmx_gserx_dlmx_mpll_en_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_mpll_en cvmx_gserx_dlmx_mpll_en_t; /** * cvmx_gser#_dlm#_rx_eq * * DLM Receiver Equalization Setting. * */ union cvmx_gserx_dlmx_rx_eq { u64 u64; struct cvmx_gserx_dlmx_rx_eq_s { u64 reserved_11_63 : 53; u64 rx1_eq : 3; u64 reserved_3_7 : 5; u64 rx0_eq : 3; } s; struct cvmx_gserx_dlmx_rx_eq_s cn70xx; struct cvmx_gserx_dlmx_rx_eq_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_rx_eq cvmx_gserx_dlmx_rx_eq_t; /** * cvmx_gser#_dlm#_mpll_multiplier * * DLM MPLL Frequency Multiplier Control. * */ union cvmx_gserx_dlmx_mpll_multiplier { u64 u64; struct cvmx_gserx_dlmx_mpll_multiplier_s { u64 reserved_7_63 : 57; u64 mpll_multiplier : 7; } s; struct cvmx_gserx_dlmx_mpll_multiplier_s cn70xx; struct cvmx_gserx_dlmx_mpll_multiplier_s cn70xxp1; }; typedef union cvmx_gserx_dlmx_mpll_multiplier cvmx_gserx_dlmx_mpll_multiplier_t; /** * cvmx_gser#_br_rx#_ctl */ union cvmx_gserx_br_rxx_ctl { u64 u64; struct cvmx_gserx_br_rxx_ctl_s { u64 reserved_4_63 : 60; u64 rxt_adtmout_disable : 1; u64 rxt_swm : 1; u64 rxt_preset : 1; u64 rxt_initialize : 1; } s; struct cvmx_gserx_br_rxx_ctl_s cn73xx; struct cvmx_gserx_br_rxx_ctl_s cn78xx; struct cvmx_gserx_br_rxx_ctl_cn78xxp1 { u64 reserved_3_63 : 61; u64 rxt_swm : 1; u64 rxt_preset : 1; u64 rxt_initialize : 1; } cn78xxp1; struct cvmx_gserx_br_rxx_ctl_s cnf75xx; }; typedef union cvmx_gserx_br_rxx_ctl cvmx_gserx_br_rxx_ctl_t; /** * cvmx_gser#_br_rx#_eer * * GSER software BASE-R RX link training equalization evaluation request (EER). A write to * [RXT_EER] initiates a equalization request to the RAW PCS. A read of this register returns the * equalization status message and a valid bit indicating it was updated. These registers are for * diagnostic use only. */ union cvmx_gserx_br_rxx_eer { u64 u64; struct cvmx_gserx_br_rxx_eer_s { u64 reserved_16_63 : 48; u64 rxt_eer : 1; u64 rxt_esv : 1; u64 rxt_esm : 14; } s; struct cvmx_gserx_br_rxx_eer_s cn73xx; struct cvmx_gserx_br_rxx_eer_s cn78xx; struct cvmx_gserx_br_rxx_eer_s cn78xxp1; struct cvmx_gserx_br_rxx_eer_s cnf75xx; }; typedef union cvmx_gserx_br_rxx_eer cvmx_gserx_br_rxx_eer_t; /** * cvmx_gser#_pcie_pipe_port_sel * * PCIE PIPE Enable Request. * */ union cvmx_gserx_pcie_pipe_port_sel { u64 u64; struct cvmx_gserx_pcie_pipe_port_sel_s { u64 reserved_3_63 : 61; u64 cfg_pem1_dlm2 : 1; u64 pipe_port_sel : 2; } s; struct cvmx_gserx_pcie_pipe_port_sel_s cn70xx; struct cvmx_gserx_pcie_pipe_port_sel_s cn70xxp1; }; typedef union cvmx_gserx_pcie_pipe_port_sel cvmx_gserx_pcie_pipe_port_sel_t; /** * cvmx_gser#_pcie_pipe_rst * * PCIE PIPE Reset. * */ union cvmx_gserx_pcie_pipe_rst { u64 u64; struct cvmx_gserx_pcie_pipe_rst_s { u64 reserved_4_63 : 60; u64 pipe3_rst : 1; u64 pipe2_rst : 1; u64 pipe1_rst : 1; u64 pipe0_rst : 1; } s; struct cvmx_gserx_pcie_pipe_rst_s cn70xx; struct cvmx_gserx_pcie_pipe_rst_s cn70xxp1; }; typedef union cvmx_gserx_pcie_pipe_rst cvmx_gserx_pcie_pipe_rst_t; /** * cvmx_gser#_sata_cfg * * SATA Config Enable. * */ union cvmx_gserx_sata_cfg { u64 u64; struct cvmx_gserx_sata_cfg_s { u64 reserved_1_63 : 63; u64 sata_en : 1; } s; struct cvmx_gserx_sata_cfg_s cn70xx; struct cvmx_gserx_sata_cfg_s cn70xxp1; }; typedef union cvmx_gserx_sata_cfg cvmx_gserx_sata_cfg_t; /** * cvmx_gser#_sata_lane_rst * * Lane Reset Control. * */ union cvmx_gserx_sata_lane_rst { u64 u64; struct cvmx_gserx_sata_lane_rst_s { u64 reserved_2_63 : 62; u64 l1_rst : 1; u64 l0_rst : 1; } s; struct cvmx_gserx_sata_lane_rst_s cn70xx; struct cvmx_gserx_sata_lane_rst_s cn70xxp1; struct cvmx_gserx_sata_lane_rst_s cn73xx; struct cvmx_gserx_sata_lane_rst_s cnf75xx; }; typedef union cvmx_gserx_sata_lane_rst cvmx_gserx_sata_lane_rst_t; /** * cvmx_gser#_sata_ref_ssp_en * * SATA Reference Clock Enable for the PHY. * */ union cvmx_gserx_sata_ref_ssp_en { u64 u64; struct cvmx_gserx_sata_ref_ssp_en_s { u64 reserved_1_63 : 63; u64 ref_ssp_en : 1; } s; struct cvmx_gserx_sata_ref_ssp_en_s cn70xx; struct cvmx_gserx_sata_ref_ssp_en_s cn70xxp1; }; typedef union cvmx_gserx_sata_ref_ssp_en cvmx_gserx_sata_ref_ssp_en_t; /** * cvmx_gser#_phy#_ovrd_in_lo * * PHY Override Input Low Register. * */ union cvmx_gserx_phyx_ovrd_in_lo { u64 u64; struct cvmx_gserx_phyx_ovrd_in_lo_s { u64 reserved_16_63 : 48; u64 res_ack_in_ovrd : 1; u64 res_ack_in : 1; u64 res_req_in_ovrd : 1; u64 res_req_in : 1; u64 rtune_req_ovrd : 1; u64 rtune_req : 1; u64 mpll_multiplier_ovrd : 1; u64 mpll_multiplier : 7; u64 mpll_en_ovrd : 1; u64 mpll_en : 1; } s; struct cvmx_gserx_phyx_ovrd_in_lo_s cn70xx; struct cvmx_gserx_phyx_ovrd_in_lo_s cn70xxp1; }; typedef union cvmx_gserx_phyx_ovrd_in_lo cvmx_gserx_phyx_ovrd_in_lo_t; /** * cvmx_gser#_phy_ctl * * This register contains general PHY/PLL control of the RAW PCS. * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_phy_ctl { u64 u64; struct cvmx_gserx_phy_ctl_s { u64 reserved_2_63 : 62; u64 phy_reset : 1; u64 phy_pd : 1; } s; struct cvmx_gserx_phy_ctl_s cn73xx; struct cvmx_gserx_phy_ctl_s cn78xx; struct cvmx_gserx_phy_ctl_s cn78xxp1; struct cvmx_gserx_phy_ctl_s cnf75xx; }; typedef union cvmx_gserx_phy_ctl cvmx_gserx_phy_ctl_t; /** * cvmx_gser#_rx_pwr_ctrl_p1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_rx_pwr_ctrl_p1 { u64 u64; struct cvmx_gserx_rx_pwr_ctrl_p1_s { u64 reserved_14_63 : 50; u64 p1_rx_resetn : 1; u64 pq_rx_allow_pll_pd : 1; u64 pq_rx_pcs_reset : 1; u64 p1_rx_agc_en : 1; u64 p1_rx_dfe_en : 1; u64 p1_rx_cdr_en : 1; u64 p1_rx_cdr_coast : 1; u64 p1_rx_cdr_clr : 1; u64 p1_rx_subblk_pd : 5; u64 p1_rx_chpd : 1; } s; struct cvmx_gserx_rx_pwr_ctrl_p1_s cn73xx; struct cvmx_gserx_rx_pwr_ctrl_p1_s cn78xx; struct cvmx_gserx_rx_pwr_ctrl_p1_s cn78xxp1; struct cvmx_gserx_rx_pwr_ctrl_p1_s cnf75xx; }; typedef union cvmx_gserx_rx_pwr_ctrl_p1 cvmx_gserx_rx_pwr_ctrl_p1_t; /** * cvmx_gser#_rx_pwr_ctrl_p2 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_rx_pwr_ctrl_p2 { u64 u64; struct cvmx_gserx_rx_pwr_ctrl_p2_s { u64 reserved_14_63 : 50; u64 p2_rx_resetn : 1; u64 p2_rx_allow_pll_pd : 1; u64 p2_rx_pcs_reset : 1; u64 p2_rx_agc_en : 1; u64 p2_rx_dfe_en : 1; u64 p2_rx_cdr_en : 1; u64 p2_rx_cdr_coast : 1; u64 p2_rx_cdr_clr : 1; u64 p2_rx_subblk_pd : 5; u64 p2_rx_chpd : 1; } s; struct cvmx_gserx_rx_pwr_ctrl_p2_s cn73xx; struct cvmx_gserx_rx_pwr_ctrl_p2_s cn78xx; struct cvmx_gserx_rx_pwr_ctrl_p2_s cn78xxp1; struct cvmx_gserx_rx_pwr_ctrl_p2_s cnf75xx; }; typedef union cvmx_gserx_rx_pwr_ctrl_p2 cvmx_gserx_rx_pwr_ctrl_p2_t; /** * cvmx_gser#_rx_txdir_ctrl_0 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_rx_txdir_ctrl_0 { u64 u64; struct cvmx_gserx_rx_txdir_ctrl_0_s { u64 reserved_13_63 : 51; u64 rx_boost_hi_thrs : 4; u64 rx_boost_lo_thrs : 4; u64 rx_boost_hi_val : 5; } s; struct cvmx_gserx_rx_txdir_ctrl_0_s cn73xx; struct cvmx_gserx_rx_txdir_ctrl_0_s cn78xx; struct cvmx_gserx_rx_txdir_ctrl_0_s cn78xxp1; struct cvmx_gserx_rx_txdir_ctrl_0_s cnf75xx; }; typedef union cvmx_gserx_rx_txdir_ctrl_0 cvmx_gserx_rx_txdir_ctrl_0_t; /** * cvmx_gser#_rx_txdir_ctrl_1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_rx_txdir_ctrl_1 { u64 u64; struct cvmx_gserx_rx_txdir_ctrl_1_s { u64 reserved_12_63 : 52; u64 rx_precorr_chg_dir : 1; u64 rx_tap1_chg_dir : 1; u64 rx_tap1_hi_thrs : 5; u64 rx_tap1_lo_thrs : 5; } s; struct cvmx_gserx_rx_txdir_ctrl_1_s cn73xx; struct cvmx_gserx_rx_txdir_ctrl_1_s cn78xx; struct cvmx_gserx_rx_txdir_ctrl_1_s cn78xxp1; struct cvmx_gserx_rx_txdir_ctrl_1_s cnf75xx; }; typedef union cvmx_gserx_rx_txdir_ctrl_1 cvmx_gserx_rx_txdir_ctrl_1_t; /** * cvmx_gser#_rx_txdir_ctrl_2 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_rx_txdir_ctrl_2 { u64 u64; struct cvmx_gserx_rx_txdir_ctrl_2_s { u64 reserved_16_63 : 48; u64 rx_precorr_hi_thrs : 8; u64 rx_precorr_lo_thrs : 8; } s; struct cvmx_gserx_rx_txdir_ctrl_2_s cn73xx; struct cvmx_gserx_rx_txdir_ctrl_2_s cn78xx; struct cvmx_gserx_rx_txdir_ctrl_2_s cn78xxp1; struct cvmx_gserx_rx_txdir_ctrl_2_s cnf75xx; }; typedef union cvmx_gserx_rx_txdir_ctrl_2 cvmx_gserx_rx_txdir_ctrl_2_t; /** * cvmx_gser#_rx_eie_detsts */ union cvmx_gserx_rx_eie_detsts { u64 u64; struct cvmx_gserx_rx_eie_detsts_s { u64 reserved_12_63 : 52; u64 cdrlock : 4; u64 eiests : 4; u64 eieltch : 4; } s; struct cvmx_gserx_rx_eie_detsts_s cn73xx; struct cvmx_gserx_rx_eie_detsts_s cn78xx; struct cvmx_gserx_rx_eie_detsts_s cn78xxp1; struct cvmx_gserx_rx_eie_detsts_s cnf75xx; }; typedef union cvmx_gserx_rx_eie_detsts cvmx_gserx_rx_eie_detsts_t; /** * cvmx_gser#_refclk_sel * * This register selects the reference clock. * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. * * Not used with GSER6, GSER7, and GSER8. */ union cvmx_gserx_refclk_sel { u64 u64; struct cvmx_gserx_refclk_sel_s { u64 reserved_3_63 : 61; u64 pcie_refclk125 : 1; u64 com_clk_sel : 1; u64 use_com1 : 1; } s; struct cvmx_gserx_refclk_sel_s cn73xx; struct cvmx_gserx_refclk_sel_s cn78xx; struct cvmx_gserx_refclk_sel_s cn78xxp1; struct cvmx_gserx_refclk_sel_s cnf75xx; }; typedef union cvmx_gserx_refclk_sel cvmx_gserx_refclk_sel_t; /** * cvmx_gser#_lane#_lbert_cfg * * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_lbert_cfg { u64 u64; struct cvmx_gserx_lanex_lbert_cfg_s { u64 reserved_16_63 : 48; u64 lbert_pg_err_insert : 1; u64 lbert_pm_sync_start : 1; u64 lbert_pg_en : 1; u64 lbert_pg_width : 2; u64 lbert_pg_mode : 4; u64 lbert_pm_en : 1; u64 lbert_pm_width : 2; u64 lbert_pm_mode : 4; } s; struct cvmx_gserx_lanex_lbert_cfg_s cn73xx; struct cvmx_gserx_lanex_lbert_cfg_s cn78xx; struct cvmx_gserx_lanex_lbert_cfg_s cn78xxp1; struct cvmx_gserx_lanex_lbert_cfg_s cnf75xx; }; typedef union cvmx_gserx_lanex_lbert_cfg cvmx_gserx_lanex_lbert_cfg_t; /** * cvmx_gser#_lane#_misc_cfg_0 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_misc_cfg_0 { u64 u64; struct cvmx_gserx_lanex_misc_cfg_0_s { u64 reserved_16_63 : 48; u64 use_pma_polarity : 1; u64 cfg_pcs_loopback : 1; u64 pcs_tx_mode_ovrrd_en : 1; u64 pcs_rx_mode_ovrrd_en : 1; u64 cfg_eie_det_cnt : 4; u64 eie_det_stl_on_time : 3; u64 eie_det_stl_off_time : 3; u64 tx_bit_order : 1; u64 rx_bit_order : 1; } s; struct cvmx_gserx_lanex_misc_cfg_0_s cn73xx; struct cvmx_gserx_lanex_misc_cfg_0_s cn78xx; struct cvmx_gserx_lanex_misc_cfg_0_s cn78xxp1; struct cvmx_gserx_lanex_misc_cfg_0_s cnf75xx; }; typedef union cvmx_gserx_lanex_misc_cfg_0 cvmx_gserx_lanex_misc_cfg_0_t; /** * cvmx_gser#_lane_p#_mode_0 * * These are the RAW PCS lane settings mode 0 registers. There is one register per * 4 lanes per GSER per GSER_LMODE_E value (0..11). Only one entry is used at any given time in a * given GSER lane - the one selected by the corresponding GSER()_LANE_MODE[LMODE]. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_px_mode_0 { u64 u64; struct cvmx_gserx_lane_px_mode_0_s { u64 reserved_15_63 : 49; u64 ctle : 2; u64 pcie : 1; u64 tx_ldiv : 2; u64 rx_ldiv : 2; u64 srate : 3; u64 reserved_4_4 : 1; u64 tx_mode : 2; u64 rx_mode : 2; } s; struct cvmx_gserx_lane_px_mode_0_s cn73xx; struct cvmx_gserx_lane_px_mode_0_s cn78xx; struct cvmx_gserx_lane_px_mode_0_s cn78xxp1; struct cvmx_gserx_lane_px_mode_0_s cnf75xx; }; typedef union cvmx_gserx_lane_px_mode_0 cvmx_gserx_lane_px_mode_0_t; /** * cvmx_gser#_lane_p#_mode_1 * * These are the RAW PCS lane settings mode 1 registers. There is one register per 4 lanes, * (0..3) per GSER per GSER_LMODE_E value (0..11). Only one entry is used at any given time in a * given * GSER lane - the one selected by the corresponding GSER()_LANE_MODE[LMODE]. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_px_mode_1 { u64 u64; struct cvmx_gserx_lane_px_mode_1_s { u64 reserved_16_63 : 48; u64 vma_fine_cfg_sel : 1; u64 vma_mm : 1; u64 cdr_fgain : 4; u64 ph_acc_adj : 10; } s; struct cvmx_gserx_lane_px_mode_1_s cn73xx; struct cvmx_gserx_lane_px_mode_1_s cn78xx; struct cvmx_gserx_lane_px_mode_1_s cn78xxp1; struct cvmx_gserx_lane_px_mode_1_s cnf75xx; }; typedef union cvmx_gserx_lane_px_mode_1 cvmx_gserx_lane_px_mode_1_t; /** * cvmx_gser#_lane#_rx_loop_ctrl * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_loop_ctrl { u64 u64; struct cvmx_gserx_lanex_rx_loop_ctrl_s { u64 reserved_12_63 : 52; u64 fast_dll_lock : 1; u64 fast_ofst_cncl : 1; u64 cfg_rx_lctrl : 10; } s; struct cvmx_gserx_lanex_rx_loop_ctrl_s cn73xx; struct cvmx_gserx_lanex_rx_loop_ctrl_s cn78xx; struct cvmx_gserx_lanex_rx_loop_ctrl_s cn78xxp1; struct cvmx_gserx_lanex_rx_loop_ctrl_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_loop_ctrl cvmx_gserx_lanex_rx_loop_ctrl_t; /** * cvmx_gser#_lane#_rx_valbbd_ctrl_0 * * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_valbbd_ctrl_0 { u64 u64; struct cvmx_gserx_lanex_rx_valbbd_ctrl_0_s { u64 reserved_14_63 : 50; u64 agc_gain : 2; u64 dfe_gain : 2; u64 dfe_c5_mval : 4; u64 dfe_c5_msgn : 1; u64 dfe_c4_mval : 4; u64 dfe_c4_msgn : 1; } s; struct cvmx_gserx_lanex_rx_valbbd_ctrl_0_s cn73xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_0_s cn78xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_0_s cn78xxp1; struct cvmx_gserx_lanex_rx_valbbd_ctrl_0_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_valbbd_ctrl_0 cvmx_gserx_lanex_rx_valbbd_ctrl_0_t; /** * cvmx_gser#_lane#_rx_valbbd_ctrl_1 * * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_valbbd_ctrl_1 { u64 u64; struct cvmx_gserx_lanex_rx_valbbd_ctrl_1_s { u64 reserved_15_63 : 49; u64 dfe_c3_mval : 4; u64 dfe_c3_msgn : 1; u64 dfe_c2_mval : 4; u64 dfe_c2_msgn : 1; u64 dfe_c1_mval : 4; u64 dfe_c1_msgn : 1; } s; struct cvmx_gserx_lanex_rx_valbbd_ctrl_1_s cn73xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_1_s cn78xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_1_s cn78xxp1; struct cvmx_gserx_lanex_rx_valbbd_ctrl_1_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_valbbd_ctrl_1 cvmx_gserx_lanex_rx_valbbd_ctrl_1_t; /** * cvmx_gser#_lane#_rx_valbbd_ctrl_2 * * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_valbbd_ctrl_2 { u64 u64; struct cvmx_gserx_lanex_rx_valbbd_ctrl_2_s { u64 reserved_6_63 : 58; u64 dfe_ovrd_en : 1; u64 dfe_c5_ovrd_val : 1; u64 dfe_c4_ovrd_val : 1; u64 dfe_c3_ovrd_val : 1; u64 dfe_c2_ovrd_val : 1; u64 dfe_c1_ovrd_val : 1; } s; struct cvmx_gserx_lanex_rx_valbbd_ctrl_2_s cn73xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_2_s cn78xx; struct cvmx_gserx_lanex_rx_valbbd_ctrl_2_s cn78xxp1; struct cvmx_gserx_lanex_rx_valbbd_ctrl_2_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_valbbd_ctrl_2 cvmx_gserx_lanex_rx_valbbd_ctrl_2_t; /** * cvmx_gser#_lane_vma_fine_ctrl_0 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_vma_fine_ctrl_0 { u64 u64; struct cvmx_gserx_lane_vma_fine_ctrl_0_s { u64 reserved_16_63 : 48; u64 rx_sdll_iq_max_fine : 4; u64 rx_sdll_iq_min_fine : 4; u64 rx_sdll_iq_step_fine : 2; u64 vma_window_wait_fine : 3; u64 lms_wait_time_fine : 3; } s; struct cvmx_gserx_lane_vma_fine_ctrl_0_s cn73xx; struct cvmx_gserx_lane_vma_fine_ctrl_0_s cn78xx; struct cvmx_gserx_lane_vma_fine_ctrl_0_s cn78xxp1; struct cvmx_gserx_lane_vma_fine_ctrl_0_s cnf75xx; }; typedef union cvmx_gserx_lane_vma_fine_ctrl_0 cvmx_gserx_lane_vma_fine_ctrl_0_t; /** * cvmx_gser#_lane_vma_fine_ctrl_1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_vma_fine_ctrl_1 { u64 u64; struct cvmx_gserx_lane_vma_fine_ctrl_1_s { u64 reserved_10_63 : 54; u64 rx_ctle_peak_max_fine : 4; u64 rx_ctle_peak_min_fine : 4; u64 rx_ctle_peak_step_fine : 2; } s; struct cvmx_gserx_lane_vma_fine_ctrl_1_s cn73xx; struct cvmx_gserx_lane_vma_fine_ctrl_1_s cn78xx; struct cvmx_gserx_lane_vma_fine_ctrl_1_s cn78xxp1; struct cvmx_gserx_lane_vma_fine_ctrl_1_s cnf75xx; }; typedef union cvmx_gserx_lane_vma_fine_ctrl_1 cvmx_gserx_lane_vma_fine_ctrl_1_t; /** * cvmx_gser#_lane_vma_fine_ctrl_2 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_vma_fine_ctrl_2 { u64 u64; struct cvmx_gserx_lane_vma_fine_ctrl_2_s { u64 reserved_10_63 : 54; u64 rx_prectle_gain_max_fine : 4; u64 rx_prectle_gain_min_fine : 4; u64 rx_prectle_gain_step_fine : 2; } s; struct cvmx_gserx_lane_vma_fine_ctrl_2_s cn73xx; struct cvmx_gserx_lane_vma_fine_ctrl_2_s cn78xx; struct cvmx_gserx_lane_vma_fine_ctrl_2_s cn78xxp1; struct cvmx_gserx_lane_vma_fine_ctrl_2_s cnf75xx; }; typedef union cvmx_gserx_lane_vma_fine_ctrl_2 cvmx_gserx_lane_vma_fine_ctrl_2_t; /** * cvmx_gser#_lane#_pwr_ctrl * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_pwr_ctrl { u64 u64; struct cvmx_gserx_lanex_pwr_ctrl_s { u64 reserved_15_63 : 49; u64 tx_sds_fifo_reset_ovrrd_en : 1; u64 tx_sds_fifo_reset_ovrrd_val : 1; u64 tx_pcs_reset_ovrrd_val : 1; u64 rx_pcs_reset_ovrrd_val : 1; u64 reserved_9_10 : 2; u64 rx_resetn_ovrrd_en : 1; u64 rx_resetn_ovrrd_val : 1; u64 rx_lctrl_ovrrd_en : 1; u64 rx_lctrl_ovrrd_val : 1; u64 tx_tristate_en_ovrrd_en : 1; u64 tx_pcs_reset_ovrrd_en : 1; u64 tx_elec_idle_ovrrd_en : 1; u64 tx_pd_ovrrd_en : 1; u64 tx_p2s_resetn_ovrrd_en : 1; } s; struct cvmx_gserx_lanex_pwr_ctrl_cn73xx { u64 reserved_15_63 : 49; u64 tx_sds_fifo_reset_ovrrd_en : 1; u64 tx_sds_fifo_reset_ovrrd_val : 1; u64 tx_pcs_reset_ovrrd_val : 1; u64 rx_pcs_reset_ovrrd_val : 1; u64 reserved_10_9 : 2; u64 rx_resetn_ovrrd_en : 1; u64 rx_resetn_ovrrd_val : 1; u64 rx_lctrl_ovrrd_en : 1; u64 rx_lctrl_ovrrd_val : 1; u64 tx_tristate_en_ovrrd_en : 1; u64 tx_pcs_reset_ovrrd_en : 1; u64 tx_elec_idle_ovrrd_en : 1; u64 tx_pd_ovrrd_en : 1; u64 tx_p2s_resetn_ovrrd_en : 1; } cn73xx; struct cvmx_gserx_lanex_pwr_ctrl_cn73xx cn78xx; struct cvmx_gserx_lanex_pwr_ctrl_s cn78xxp1; struct cvmx_gserx_lanex_pwr_ctrl_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_pwr_ctrl cvmx_gserx_lanex_pwr_ctrl_t; /** * cvmx_gser#_lane#_rx_cfg_0 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_0 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_0_s { u64 reserved_16_63 : 48; u64 rx_datarate_ovrrd_en : 1; u64 reserved_14_14 : 1; u64 rx_resetn_ovrrd_val : 1; u64 pcs_sds_rx_eyemon_en : 1; u64 pcs_sds_rx_pcm_ctrl : 4; u64 rx_datarate_ovrrd_val : 2; u64 cfg_rx_pol_invert : 1; u64 rx_subblk_pd_ovrrd_val : 5; } s; struct cvmx_gserx_lanex_rx_cfg_0_cn73xx { u64 reserved_16_63 : 48; u64 rx_datarate_ovrrd_en : 1; u64 pcs_rx_tristate_enable : 1; u64 rx_resetn_ovrrd_val : 1; u64 pcs_sds_rx_eyemon_en : 1; u64 pcs_sds_rx_pcm_ctrl : 4; u64 rx_datarate_ovrrd_val : 2; u64 cfg_rx_pol_invert : 1; u64 rx_subblk_pd_ovrrd_val : 5; } cn73xx; struct cvmx_gserx_lanex_rx_cfg_0_cn78xx { u64 reserved_16_63 : 48; u64 rx_datarate_ovrrd_en : 1; u64 pcs_sds_rx_tristate_enable : 1; u64 rx_resetn_ovrrd_val : 1; u64 pcs_sds_rx_eyemon_en : 1; u64 pcs_sds_rx_pcm_ctrl : 4; u64 rx_datarate_ovrrd_val : 2; u64 cfg_rx_pol_invert : 1; u64 rx_subblk_pd_ovrrd_val : 5; } cn78xx; struct cvmx_gserx_lanex_rx_cfg_0_cn78xx cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_0_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_0 cvmx_gserx_lanex_rx_cfg_0_t; /** * cvmx_gser#_lane#_rx_cfg_1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_1 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_1_s { u64 reserved_16_63 : 48; u64 rx_chpd_ovrrd_val : 1; u64 pcs_sds_rx_os_men : 1; u64 eie_en_ovrrd_en : 1; u64 eie_en_ovrrd_val : 1; u64 reserved_11_11 : 1; u64 rx_pcie_mode_ovrrd_en : 1; u64 rx_pcie_mode_ovrrd_val : 1; u64 cfg_rx_dll_locken : 1; u64 pcs_sds_rx_cdr_ssc_mode : 8; } s; struct cvmx_gserx_lanex_rx_cfg_1_s cn73xx; struct cvmx_gserx_lanex_rx_cfg_1_s cn78xx; struct cvmx_gserx_lanex_rx_cfg_1_s cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_1_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_1 cvmx_gserx_lanex_rx_cfg_1_t; /** * cvmx_gser#_lane#_rx_cfg_2 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_2 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_2_s { u64 reserved_15_63 : 49; u64 pcs_sds_rx_terminate_to_vdda : 1; u64 pcs_sds_rx_sampler_boost : 2; u64 pcs_sds_rx_sampler_boost_en : 1; u64 reserved_10_10 : 1; u64 rx_sds_rx_agc_mval : 10; } s; struct cvmx_gserx_lanex_rx_cfg_2_s cn73xx; struct cvmx_gserx_lanex_rx_cfg_2_s cn78xx; struct cvmx_gserx_lanex_rx_cfg_2_s cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_2_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_2 cvmx_gserx_lanex_rx_cfg_2_t; /** * cvmx_gser#_lane#_rx_cfg_3 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_3 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_3_s { u64 reserved_16_63 : 48; u64 cfg_rx_errdet_ctrl : 16; } s; struct cvmx_gserx_lanex_rx_cfg_3_s cn73xx; struct cvmx_gserx_lanex_rx_cfg_3_s cn78xx; struct cvmx_gserx_lanex_rx_cfg_3_s cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_3_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_3 cvmx_gserx_lanex_rx_cfg_3_t; /** * cvmx_gser#_lane#_rx_cfg_4 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_4 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_4_s { u64 reserved_16_63 : 48; u64 cfg_rx_errdet_ctrl : 16; } s; struct cvmx_gserx_lanex_rx_cfg_4_s cn73xx; struct cvmx_gserx_lanex_rx_cfg_4_s cn78xx; struct cvmx_gserx_lanex_rx_cfg_4_s cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_4_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_4 cvmx_gserx_lanex_rx_cfg_4_t; /** * cvmx_gser#_lane#_rx_cfg_5 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_cfg_5 { u64 u64; struct cvmx_gserx_lanex_rx_cfg_5_s { u64 reserved_5_63 : 59; u64 rx_agc_men_ovrrd_en : 1; u64 rx_agc_men_ovrrd_val : 1; u64 rx_widthsel_ovrrd_en : 1; u64 rx_widthsel_ovrrd_val : 2; } s; struct cvmx_gserx_lanex_rx_cfg_5_s cn73xx; struct cvmx_gserx_lanex_rx_cfg_5_s cn78xx; struct cvmx_gserx_lanex_rx_cfg_5_s cn78xxp1; struct cvmx_gserx_lanex_rx_cfg_5_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_cfg_5 cvmx_gserx_lanex_rx_cfg_5_t; /** * cvmx_gser#_lane#_rx_ctle_ctrl * * These are the RAW PCS per-lane RX CTLE control registers. * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_ctle_ctrl { u64 u64; struct cvmx_gserx_lanex_rx_ctle_ctrl_s { u64 reserved_16_63 : 48; u64 pcs_sds_rx_ctle_bias_ctrl : 2; u64 pcs_sds_rx_ctle_zero : 4; u64 rx_ctle_pole_ovrrd_en : 1; u64 rx_ctle_pole_ovrrd_val : 4; u64 pcs_sds_rx_ctle_pole_max : 2; u64 pcs_sds_rx_ctle_pole_min : 2; u64 pcs_sds_rx_ctle_pole_step : 1; } s; struct cvmx_gserx_lanex_rx_ctle_ctrl_s cn73xx; struct cvmx_gserx_lanex_rx_ctle_ctrl_s cn78xx; struct cvmx_gserx_lanex_rx_ctle_ctrl_s cn78xxp1; struct cvmx_gserx_lanex_rx_ctle_ctrl_s cnf75xx; }; typedef union cvmx_gserx_lanex_rx_ctle_ctrl cvmx_gserx_lanex_rx_ctle_ctrl_t; /** * cvmx_gser#_lane#_rx_misc_ovrrd * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_rx_misc_ovrrd { u64 u64; struct cvmx_gserx_lanex_rx_misc_ovrrd_s { u64 reserved_14_63 : 50; u64 cfg_rx_oob_clk_en_ovrrd_val : 1; u64 cfg_rx_oob_clk_en_ovrrd_en : 1; u64 cfg_rx_eie_det_ovrrd_val : 1; u64 cfg_rx_eie_det_ovrrd_en : 1; u64 cfg_rx_cdr_ctrl_ovrrd_en : 1; u64 cfg_rx_eq_eval_ovrrd_val : 1; u64 cfg_rx_eq_eval_ovrrd_en : 1; u64 reserved_6_6 : 1; u64 cfg_rx_dll_locken_ovrrd_en : 1; u64 cfg_rx_errdet_ctrl_ovrrd_en : 1; u64 reserved_1_3 : 3; u64 cfg_rxeq_eval_restore_en : 1; } s; struct cvmx_gserx_lanex_rx_misc_ovrrd_cn73xx { u64 reserved_14_63 : 50; u64 cfg_rx_oob_clk_en_ovrrd_val : 1; u64 cfg_rx_oob_clk_en_ovrrd_en : 1; u64 cfg_rx_eie_det_ovrrd_val : 1; u64 cfg_rx_eie_det_ovrrd_en : 1; u64 cfg_rx_cdr_ctrl_ovrrd_en : 1; u64 cfg_rx_eq_eval_ovrrd_val : 1; u64 cfg_rx_eq_eval_ovrrd_en : 1; u64 reserved_6_6 : 1; u64 cfg_rx_dll_locken_ovrrd_en : 1; u64 cfg_rx_errdet_ctrl_ovrrd_en : 1; u64 reserved_3_1 : 3; u64 cfg_rxeq_eval_restore_en : 1; } cn73xx; struct cvmx_gserx_lanex_rx_misc_ovrrd_cn73xx cn78xx; struct cvmx_gserx_lanex_rx_misc_ovrrd_cn78xxp1 { u64 reserved_14_63 : 50; u64 cfg_rx_oob_clk_en_ovrrd_val : 1; u64 cfg_rx_oob_clk_en_ovrrd_en : 1; u64 cfg_rx_eie_det_ovrrd_val : 1; u64 cfg_rx_eie_det_ovrrd_en : 1; u64 cfg_rx_cdr_ctrl_ovrrd_en : 1; u64 cfg_rx_eq_eval_ovrrd_val : 1; u64 cfg_rx_eq_eval_ovrrd_en : 1; u64 reserved_6_6 : 1; u64 cfg_rx_dll_locken_ovrrd_en : 1; u64 cfg_rx_errdet_ctrl_ovrrd_en : 1; u64 reserved_0_3 : 4; } cn78xxp1; struct cvmx_gserx_lanex_rx_misc_ovrrd_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_rx_misc_ovrrd cvmx_gserx_lanex_rx_misc_ovrrd_t; /** * cvmx_gser#_lane#_tx_cfg_0 * * These registers are reset by hardware only during chip cold reset. The * values of the CSR fields in these registers do not change during chip * warm or soft resets. */ union cvmx_gserx_lanex_tx_cfg_0 { u64 u64; struct cvmx_gserx_lanex_tx_cfg_0_s { u64 reserved_16_63 : 48; u64 tx_tristate_en_ovrrd_val : 1; u64 tx_chpd_ovrrd_val : 1; u64 reserved_10_13 : 4; u64 tx_resetn_ovrrd_val : 1; u64 tx_cm_mode : 1; u64 cfg_tx_swing : 5; u64 fast_rdet_mode : 1; u64 fast_tristate_mode : 1; u64 reserved_0_0 : 1; } s; struct cvmx_gserx_lanex_tx_cfg_0_cn73xx { u64 reserved_16_63 : 48; u64 tx_tristate_en_ovrrd_val : 1; u64 tx_chpd_ovrrd_val : 1; u64 reserved_13_10 : 4; u64 tx_resetn_ovrrd_val : 1; u64 tx_cm_mode : 1; u64 cfg_tx_swing : 5; u64 fast_rdet_mode : 1; u64 fast_tristate_mode : 1; u64 reserved_0_0 : 1; } cn73xx; struct cvmx_gserx_lanex_tx_cfg_0_cn73xx cn78xx; struct cvmx_gserx_lanex_tx_cfg_0_s cn78xxp1; struct cvmx_gserx_lanex_tx_cfg_0_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_tx_cfg_0 cvmx_gserx_lanex_tx_cfg_0_t; /** * cvmx_gser#_lane#_tx_cfg_1 * * These registers are reset by hardware only during chip cold reset. The * values of the CSR fields in these registers do not change during chip * warm or soft resets. */ union cvmx_gserx_lanex_tx_cfg_1 { u64 u64; struct cvmx_gserx_lanex_tx_cfg_1_s { u64 reserved_15_63 : 49; u64 tx_widthsel_ovrrd_en : 1; u64 tx_widthsel_ovrrd_val : 2; u64 tx_vboost_en_ovrrd_en : 1; u64 tx_turbo_en_ovrrd_en : 1; u64 tx_swing_ovrrd_en : 1; u64 tx_premptap_ovrrd_val : 1; u64 tx_elec_idle_ovrrd_en : 1; u64 smpl_rate_ovrrd_en : 1; u64 smpl_rate_ovrrd_val : 3; u64 tx_datarate_ovrrd_en : 1; u64 tx_datarate_ovrrd_val : 2; } s; struct cvmx_gserx_lanex_tx_cfg_1_s cn73xx; struct cvmx_gserx_lanex_tx_cfg_1_s cn78xx; struct cvmx_gserx_lanex_tx_cfg_1_s cn78xxp1; struct cvmx_gserx_lanex_tx_cfg_1_s cnf75xx; }; typedef union cvmx_gserx_lanex_tx_cfg_1 cvmx_gserx_lanex_tx_cfg_1_t; /** * cvmx_gser#_lane#_tx_cfg_2 * * These registers are for diagnostic use only. These registers are reset by hardware only during * chip cold reset. The values of the CSR fields in these registers do not change during chip * warm or soft resets. */ union cvmx_gserx_lanex_tx_cfg_2 { u64 u64; struct cvmx_gserx_lanex_tx_cfg_2_s { u64 reserved_16_63 : 48; u64 pcs_sds_tx_dcc_en : 1; u64 reserved_3_14 : 12; u64 rcvr_test_ovrrd_en : 1; u64 rcvr_test_ovrrd_val : 1; u64 tx_rx_detect_dis_ovrrd_val : 1; } s; struct cvmx_gserx_lanex_tx_cfg_2_cn73xx { u64 reserved_16_63 : 48; u64 pcs_sds_tx_dcc_en : 1; u64 reserved_14_3 : 12; u64 rcvr_test_ovrrd_en : 1; u64 rcvr_test_ovrrd_val : 1; u64 tx_rx_detect_dis_ovrrd_val : 1; } cn73xx; struct cvmx_gserx_lanex_tx_cfg_2_cn73xx cn78xx; struct cvmx_gserx_lanex_tx_cfg_2_s cn78xxp1; struct cvmx_gserx_lanex_tx_cfg_2_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_tx_cfg_2 cvmx_gserx_lanex_tx_cfg_2_t; /** * cvmx_gser#_lane#_tx_cfg_3 * * These registers are for diagnostic use only. These registers are reset by hardware only during * chip cold reset. The values of the CSR fields in these registers do not change during chip * warm or soft resets. */ union cvmx_gserx_lanex_tx_cfg_3 { u64 u64; struct cvmx_gserx_lanex_tx_cfg_3_s { u64 reserved_15_63 : 49; u64 cfg_tx_vboost_en : 1; u64 reserved_7_13 : 7; u64 pcs_sds_tx_gain : 3; u64 pcs_sds_tx_srate_sel : 3; u64 cfg_tx_turbo_en : 1; } s; struct cvmx_gserx_lanex_tx_cfg_3_cn73xx { u64 reserved_15_63 : 49; u64 cfg_tx_vboost_en : 1; u64 reserved_13_7 : 7; u64 pcs_sds_tx_gain : 3; u64 pcs_sds_tx_srate_sel : 3; u64 cfg_tx_turbo_en : 1; } cn73xx; struct cvmx_gserx_lanex_tx_cfg_3_cn73xx cn78xx; struct cvmx_gserx_lanex_tx_cfg_3_s cn78xxp1; struct cvmx_gserx_lanex_tx_cfg_3_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_tx_cfg_3 cvmx_gserx_lanex_tx_cfg_3_t; /** * cvmx_gser#_lane#_tx_pre_emphasis * * These registers are reset by hardware only during chip cold reset. The * values of the CSR fields in these registers do not change during chip * warm or soft resets. */ union cvmx_gserx_lanex_tx_pre_emphasis { u64 u64; struct cvmx_gserx_lanex_tx_pre_emphasis_s { u64 reserved_9_63 : 55; u64 cfg_tx_premptap : 9; } s; struct cvmx_gserx_lanex_tx_pre_emphasis_s cn73xx; struct cvmx_gserx_lanex_tx_pre_emphasis_s cn78xx; struct cvmx_gserx_lanex_tx_pre_emphasis_s cn78xxp1; struct cvmx_gserx_lanex_tx_pre_emphasis_s cnf75xx; }; typedef union cvmx_gserx_lanex_tx_pre_emphasis cvmx_gserx_lanex_tx_pre_emphasis_t; /** * cvmx_gser#_lane#_pcs_ctlifc_0 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_pcs_ctlifc_0 { u64 u64; struct cvmx_gserx_lanex_pcs_ctlifc_0_s { u64 reserved_14_63 : 50; u64 cfg_tx_vboost_en_ovrrd_val : 1; u64 cfg_tx_coeff_req_ovrrd_val : 1; u64 cfg_rx_cdr_coast_req_ovrrd_val : 1; u64 cfg_tx_detrx_en_req_ovrrd_val : 1; u64 cfg_soft_reset_req_ovrrd_val : 1; u64 cfg_lane_pwr_off_ovrrd_val : 1; u64 cfg_tx_mode_ovrrd_val : 2; u64 cfg_tx_pstate_req_ovrrd_val : 2; u64 cfg_lane_mode_req_ovrrd_val : 4; } s; struct cvmx_gserx_lanex_pcs_ctlifc_0_s cn73xx; struct cvmx_gserx_lanex_pcs_ctlifc_0_s cn78xx; struct cvmx_gserx_lanex_pcs_ctlifc_0_s cn78xxp1; struct cvmx_gserx_lanex_pcs_ctlifc_0_s cnf75xx; }; typedef union cvmx_gserx_lanex_pcs_ctlifc_0 cvmx_gserx_lanex_pcs_ctlifc_0_t; /** * cvmx_gser#_lane#_pcs_ctlifc_1 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_pcs_ctlifc_1 { u64 u64; struct cvmx_gserx_lanex_pcs_ctlifc_1_s { u64 reserved_9_63 : 55; u64 cfg_rx_pstate_req_ovrrd_val : 2; u64 reserved_2_6 : 5; u64 cfg_rx_mode_ovrrd_val : 2; } s; struct cvmx_gserx_lanex_pcs_ctlifc_1_cn73xx { u64 reserved_9_63 : 55; u64 cfg_rx_pstate_req_ovrrd_val : 2; u64 reserved_6_2 : 5; u64 cfg_rx_mode_ovrrd_val : 2; } cn73xx; struct cvmx_gserx_lanex_pcs_ctlifc_1_cn73xx cn78xx; struct cvmx_gserx_lanex_pcs_ctlifc_1_s cn78xxp1; struct cvmx_gserx_lanex_pcs_ctlifc_1_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_pcs_ctlifc_1 cvmx_gserx_lanex_pcs_ctlifc_1_t; /** * cvmx_gser#_lane#_pcs_ctlifc_2 * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lanex_pcs_ctlifc_2 { u64 u64; struct cvmx_gserx_lanex_pcs_ctlifc_2_s { u64 reserved_16_63 : 48; u64 ctlifc_ovrrd_req : 1; u64 reserved_9_14 : 6; u64 cfg_tx_vboost_en_ovrrd_en : 1; u64 cfg_tx_coeff_req_ovrrd_en : 1; u64 cfg_rx_cdr_coast_req_ovrrd_en : 1; u64 cfg_tx_detrx_en_req_ovrrd_en : 1; u64 cfg_soft_reset_req_ovrrd_en : 1; u64 cfg_lane_pwr_off_ovrrd_en : 1; u64 cfg_tx_pstate_req_ovrrd_en : 1; u64 cfg_rx_pstate_req_ovrrd_en : 1; u64 cfg_lane_mode_req_ovrrd_en : 1; } s; struct cvmx_gserx_lanex_pcs_ctlifc_2_cn73xx { u64 reserved_16_63 : 48; u64 ctlifc_ovrrd_req : 1; u64 reserved_14_9 : 6; u64 cfg_tx_vboost_en_ovrrd_en : 1; u64 cfg_tx_coeff_req_ovrrd_en : 1; u64 cfg_rx_cdr_coast_req_ovrrd_en : 1; u64 cfg_tx_detrx_en_req_ovrrd_en : 1; u64 cfg_soft_reset_req_ovrrd_en : 1; u64 cfg_lane_pwr_off_ovrrd_en : 1; u64 cfg_tx_pstate_req_ovrrd_en : 1; u64 cfg_rx_pstate_req_ovrrd_en : 1; u64 cfg_lane_mode_req_ovrrd_en : 1; } cn73xx; struct cvmx_gserx_lanex_pcs_ctlifc_2_cn73xx cn78xx; struct cvmx_gserx_lanex_pcs_ctlifc_2_s cn78xxp1; struct cvmx_gserx_lanex_pcs_ctlifc_2_cn73xx cnf75xx; }; typedef union cvmx_gserx_lanex_pcs_ctlifc_2 cvmx_gserx_lanex_pcs_ctlifc_2_t; /** * cvmx_gser#_lane_mode * * These registers are reset by hardware only during chip cold reset. The values of the CSR * fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_lane_mode { u64 u64; struct cvmx_gserx_lane_mode_s { u64 reserved_4_63 : 60; u64 lmode : 4; } s; struct cvmx_gserx_lane_mode_s cn73xx; struct cvmx_gserx_lane_mode_s cn78xx; struct cvmx_gserx_lane_mode_s cn78xxp1; struct cvmx_gserx_lane_mode_s cnf75xx; }; typedef union cvmx_gserx_lane_mode cvmx_gserx_lane_mode_t; /** * cvmx_gser#_pll_p#_mode_0 * * These are the RAW PCS PLL global settings mode 0 registers. There is one register per GSER per * GSER_LMODE_E value (0..11). Only one entry is used at any given time in a given GSER - the one * selected by the corresponding GSER()_LANE_MODE[LMODE]. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during subsequent chip warm or * soft resets. */ union cvmx_gserx_pll_px_mode_0 { u64 u64; struct cvmx_gserx_pll_px_mode_0_s { u64 reserved_16_63 : 48; u64 pll_icp : 4; u64 pll_rloop : 3; u64 pll_pcs_div : 9; } s; struct cvmx_gserx_pll_px_mode_0_s cn73xx; struct cvmx_gserx_pll_px_mode_0_s cn78xx; struct cvmx_gserx_pll_px_mode_0_s cn78xxp1; struct cvmx_gserx_pll_px_mode_0_s cnf75xx; }; typedef union cvmx_gserx_pll_px_mode_0 cvmx_gserx_pll_px_mode_0_t; /** * cvmx_gser#_pll_p#_mode_1 * * These are the RAW PCS PLL global settings mode 1 registers. There is one register per GSER per * GSER_LMODE_E value (0..11). Only one entry is used at any given time in a given GSER - the one * selected by the corresponding GSER()_LANE_MODE[LMODE]. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in this register do not change during subsequent chip warm or * soft resets. */ union cvmx_gserx_pll_px_mode_1 { u64 u64; struct cvmx_gserx_pll_px_mode_1_s { u64 reserved_14_63 : 50; u64 pll_16p5en : 1; u64 pll_cpadj : 2; u64 pll_pcie3en : 1; u64 pll_opr : 1; u64 pll_div : 9; } s; struct cvmx_gserx_pll_px_mode_1_s cn73xx; struct cvmx_gserx_pll_px_mode_1_s cn78xx; struct cvmx_gserx_pll_px_mode_1_s cn78xxp1; struct cvmx_gserx_pll_px_mode_1_s cnf75xx; }; typedef union cvmx_gserx_pll_px_mode_1 cvmx_gserx_pll_px_mode_1_t; /** * cvmx_gser#_pll_stat */ union cvmx_gserx_pll_stat { u64 u64; struct cvmx_gserx_pll_stat_s { u64 reserved_1_63 : 63; u64 pll_lock : 1; } s; struct cvmx_gserx_pll_stat_s cn73xx; struct cvmx_gserx_pll_stat_s cn78xx; struct cvmx_gserx_pll_stat_s cn78xxp1; struct cvmx_gserx_pll_stat_s cnf75xx; }; typedef union cvmx_gserx_pll_stat cvmx_gserx_pll_stat_t; /** * cvmx_gser#_qlm_stat */ union cvmx_gserx_qlm_stat { u64 u64; struct cvmx_gserx_qlm_stat_s { u64 reserved_2_63 : 62; u64 rst_rdy : 1; u64 dcok : 1; } s; struct cvmx_gserx_qlm_stat_s cn73xx; struct cvmx_gserx_qlm_stat_s cn78xx; struct cvmx_gserx_qlm_stat_s cn78xxp1; struct cvmx_gserx_qlm_stat_s cnf75xx; }; typedef union cvmx_gserx_qlm_stat cvmx_gserx_qlm_stat_t; /** * cvmx_gser#_slice_cfg * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. */ union cvmx_gserx_slice_cfg { u64 u64; struct cvmx_gserx_slice_cfg_s { u64 reserved_12_63 : 52; u64 tx_rx_detect_lvl_enc : 4; u64 reserved_6_7 : 2; u64 pcs_sds_rx_pcie_pterm : 2; u64 pcs_sds_rx_pcie_nterm : 2; u64 pcs_sds_tx_stress_eye : 2; } s; struct cvmx_gserx_slice_cfg_cn73xx { u64 reserved_12_63 : 52; u64 tx_rx_detect_lvl_enc : 4; u64 reserved_7_6 : 2; u64 pcs_sds_rx_pcie_pterm : 2; u64 pcs_sds_rx_pcie_nterm : 2; u64 pcs_sds_tx_stress_eye : 2; } cn73xx; struct cvmx_gserx_slice_cfg_cn73xx cn78xx; struct cvmx_gserx_slice_cfg_s cn78xxp1; struct cvmx_gserx_slice_cfg_cn73xx cnf75xx; }; typedef union cvmx_gserx_slice_cfg cvmx_gserx_slice_cfg_t; /** * cvmx_gser#_slice#_pcie1_mode * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. * * Slice 1 does not exist on GSER0, GSER1, GSER4, GSER5, GSER6, GSER7, and GSER8. */ union cvmx_gserx_slicex_pcie1_mode { u64 u64; struct cvmx_gserx_slicex_pcie1_mode_s { u64 reserved_15_63 : 49; u64 slice_spare_1_0 : 2; u64 rx_ldll_isel : 2; u64 rx_sdll_isel : 2; u64 rx_pi_bwsel : 3; u64 rx_ldll_bwsel : 3; u64 rx_sdll_bwsel : 3; } s; struct cvmx_gserx_slicex_pcie1_mode_s cn73xx; struct cvmx_gserx_slicex_pcie1_mode_s cn78xx; struct cvmx_gserx_slicex_pcie1_mode_s cn78xxp1; struct cvmx_gserx_slicex_pcie1_mode_s cnf75xx; }; typedef union cvmx_gserx_slicex_pcie1_mode cvmx_gserx_slicex_pcie1_mode_t; /** * cvmx_gser#_slice#_pcie2_mode * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. * * Slice 1 does not exist on GSER0, GSER1, GSER4, GSER5, GSER6, GSER7, and GSER8. */ union cvmx_gserx_slicex_pcie2_mode { u64 u64; struct cvmx_gserx_slicex_pcie2_mode_s { u64 reserved_15_63 : 49; u64 slice_spare_1_0 : 2; u64 rx_ldll_isel : 2; u64 rx_sdll_isel : 2; u64 rx_pi_bwsel : 3; u64 rx_ldll_bwsel : 3; u64 rx_sdll_bwsel : 3; } s; struct cvmx_gserx_slicex_pcie2_mode_s cn73xx; struct cvmx_gserx_slicex_pcie2_mode_s cn78xx; struct cvmx_gserx_slicex_pcie2_mode_s cn78xxp1; struct cvmx_gserx_slicex_pcie2_mode_s cnf75xx; }; typedef union cvmx_gserx_slicex_pcie2_mode cvmx_gserx_slicex_pcie2_mode_t; /** * cvmx_gser#_slice#_pcie3_mode * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. * * Slice 1 does not exist on GSER0, GSER1, GSER4, GSER5, GSER6, GSER7, and GSER8. */ union cvmx_gserx_slicex_pcie3_mode { u64 u64; struct cvmx_gserx_slicex_pcie3_mode_s { u64 reserved_15_63 : 49; u64 slice_spare_1_0 : 2; u64 rx_ldll_isel : 2; u64 rx_sdll_isel : 2; u64 rx_pi_bwsel : 3; u64 rx_ldll_bwsel : 3; u64 rx_sdll_bwsel : 3; } s; struct cvmx_gserx_slicex_pcie3_mode_s cn73xx; struct cvmx_gserx_slicex_pcie3_mode_s cn78xx; struct cvmx_gserx_slicex_pcie3_mode_s cn78xxp1; struct cvmx_gserx_slicex_pcie3_mode_s cnf75xx; }; typedef union cvmx_gserx_slicex_pcie3_mode cvmx_gserx_slicex_pcie3_mode_t; /** * cvmx_gser#_slice#_rx_sdll_ctrl * * These registers are for diagnostic use only. * These registers are reset by hardware only during chip cold reset. * The values of the CSR fields in these registers do not change during chip warm or soft resets. * * Slice 1 does not exist on GSER0, GSER1, GSER4, GSER5, GSER6, GSER7, and GSER8. */ union cvmx_gserx_slicex_rx_sdll_ctrl { u64 u64; struct cvmx_gserx_slicex_rx_sdll_ctrl_s { u64 reserved_16_63 : 48; u64 pcs_sds_oob_clk_ctrl : 2; u64 reserved_7_13 : 7; u64 pcs_sds_rx_sdll_tune : 3; u64 pcs_sds_rx_sdll_swsel : 4; } s; struct cvmx_gserx_slicex_rx_sdll_ctrl_cn73xx { u64 reserved_16_63 : 48; u64 pcs_sds_oob_clk_ctrl : 2; u64 reserved_13_7 : 7; u64 pcs_sds_rx_sdll_tune : 3; u64 pcs_sds_rx_sdll_swsel : 4; } cn73xx; struct cvmx_gserx_slicex_rx_sdll_ctrl_cn73xx cn78xx; struct cvmx_gserx_slicex_rx_sdll_ctrl_s cn78xxp1; struct cvmx_gserx_slicex_rx_sdll_ctrl_cn73xx cnf75xx; }; typedef union cvmx_gserx_slicex_rx_sdll_ctrl cvmx_gserx_slicex_rx_sdll_ctrl_t; #endif