GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,914 @@
|
||||
/*
|
||||
* Copyright (C) 2018 Marvell International Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
/* Marvell CP110 SoC COMPHY unit driver */
|
||||
|
||||
#ifndef COMPHY_CP110_H
|
||||
#define COMPHY_CP110_H
|
||||
|
||||
#define SD_ADDR(base, lane) (base + 0x1000 * lane)
|
||||
#define HPIPE_ADDR(base, lane) (SD_ADDR(base, lane) + 0x800)
|
||||
#define COMPHY_ADDR(base, lane) (base + 0x28 * lane)
|
||||
|
||||
#define MAX_NUM_OF_FFE 8
|
||||
#define RX_TRAINING_TIMEOUT 500
|
||||
|
||||
/* Comphy registers */
|
||||
#define COMMON_PHY_CFG1_REG 0x0
|
||||
#define COMMON_PHY_CFG1_PWR_UP_OFFSET 1
|
||||
#define COMMON_PHY_CFG1_PWR_UP_MASK \
|
||||
(0x1 << COMMON_PHY_CFG1_PWR_UP_OFFSET)
|
||||
#define COMMON_PHY_CFG1_PIPE_SELECT_OFFSET 2
|
||||
#define COMMON_PHY_CFG1_PIPE_SELECT_MASK \
|
||||
(0x1 << COMMON_PHY_CFG1_PIPE_SELECT_OFFSET)
|
||||
#define COMMON_PHY_CFG1_CORE_RSTN_OFFSET 13
|
||||
#define COMMON_PHY_CFG1_CORE_RSTN_MASK \
|
||||
(0x1 << COMMON_PHY_CFG1_CORE_RSTN_OFFSET)
|
||||
#define COMMON_PHY_CFG1_PWR_ON_RESET_OFFSET 14
|
||||
#define COMMON_PHY_CFG1_PWR_ON_RESET_MASK \
|
||||
(0x1 << COMMON_PHY_CFG1_PWR_ON_RESET_OFFSET)
|
||||
#define COMMON_PHY_PHY_MODE_OFFSET 15
|
||||
#define COMMON_PHY_PHY_MODE_MASK \
|
||||
(0x1 << COMMON_PHY_PHY_MODE_OFFSET)
|
||||
|
||||
#define COMMON_PHY_CFG6_REG 0x14
|
||||
#define COMMON_PHY_CFG6_IF_40_SEL_OFFSET 18
|
||||
#define COMMON_PHY_CFG6_IF_40_SEL_MASK \
|
||||
(0x1 << COMMON_PHY_CFG6_IF_40_SEL_OFFSET)
|
||||
|
||||
#define COMMON_PHY_CFG6_REG 0x14
|
||||
#define COMMON_PHY_CFG6_IF_40_SEL_OFFSET 18
|
||||
#define COMMON_PHY_CFG6_IF_40_SEL_MASK \
|
||||
(0x1 << COMMON_PHY_CFG6_IF_40_SEL_OFFSET)
|
||||
|
||||
#define COMMON_SELECTOR_PHY_REG_OFFSET 0x140
|
||||
#define COMMON_SELECTOR_PIPE_REG_OFFSET 0x144
|
||||
#define COMMON_SELECTOR_COMPHY_MASK 0xf
|
||||
#define COMMON_SELECTOR_COMPHYN_FIELD_WIDTH 4
|
||||
#define COMMON_SELECTOR_COMPHYN_SATA 0x4
|
||||
#define COMMON_SELECTOR_PIPE_COMPHY_PCIE 0x4
|
||||
#define COMMON_SELECTOR_PIPE_COMPHY_USBH 0x1
|
||||
#define COMMON_SELECTOR_PIPE_COMPHY_USBD 0x2
|
||||
|
||||
/* SGMII/Base-X/SFI/RXAUI */
|
||||
#define COMMON_SELECTOR_COMPHY0_1_2_NETWORK 0x1
|
||||
#define COMMON_SELECTOR_COMPHY3_RXAUI 0x1
|
||||
#define COMMON_SELECTOR_COMPHY3_SGMII 0x2
|
||||
#define COMMON_SELECTOR_COMPHY4_PORT1 0x1
|
||||
#define COMMON_SELECTOR_COMPHY4_ALL_OTHERS 0x2
|
||||
#define COMMON_SELECTOR_COMPHY5_RXAUI 0x2
|
||||
#define COMMON_SELECTOR_COMPHY5_SGMII 0x1
|
||||
|
||||
#define COMMON_PHY_SD_CTRL1 0x148
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_0_PORT_OFFSET 0
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_1_PORT_OFFSET 4
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_2_PORT_OFFSET 8
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_3_PORT_OFFSET 12
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_0_3_PORT_MASK 0xFFFF
|
||||
#define COMMON_PHY_SD_CTRL1_COMPHY_0_1_PORT_MASK 0xFF
|
||||
#define COMMON_PHY_SD_CTRL1_PCIE_X4_EN_OFFSET 24
|
||||
#define COMMON_PHY_SD_CTRL1_PCIE_X4_EN_MASK \
|
||||
(0x1 << COMMON_PHY_SD_CTRL1_PCIE_X4_EN_OFFSET)
|
||||
#define COMMON_PHY_SD_CTRL1_PCIE_X2_EN_OFFSET 25
|
||||
#define COMMON_PHY_SD_CTRL1_PCIE_X2_EN_MASK \
|
||||
(0x1 << COMMON_PHY_SD_CTRL1_PCIE_X2_EN_OFFSET)
|
||||
#define COMMON_PHY_SD_CTRL1_RXAUI1_OFFSET 26
|
||||
#define COMMON_PHY_SD_CTRL1_RXAUI1_MASK \
|
||||
(0x1 << COMMON_PHY_SD_CTRL1_RXAUI1_OFFSET)
|
||||
#define COMMON_PHY_SD_CTRL1_RXAUI0_OFFSET 27
|
||||
#define COMMON_PHY_SD_CTRL1_RXAUI0_MASK \
|
||||
(0x1 << COMMON_PHY_SD_CTRL1_RXAUI0_OFFSET)
|
||||
|
||||
/* DFX register */
|
||||
#define DFX_BASE (0x400000)
|
||||
#define DFX_DEV_GEN_CTRL12_REG (0x280)
|
||||
#define DFX_DEV_GEN_PCIE_CLK_SRC_MUX (0x3)
|
||||
#define DFX_DEV_GEN_PCIE_CLK_SRC_OFFSET 7
|
||||
#define DFX_DEV_GEN_PCIE_CLK_SRC_MASK \
|
||||
(0x3 << DFX_DEV_GEN_PCIE_CLK_SRC_OFFSET)
|
||||
|
||||
/* SerDes IP registers */
|
||||
#define SD_EXTERNAL_CONFIG0_REG 0
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_PLL_OFFSET 1
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_PLL_MASK \
|
||||
(1 << SD_EXTERNAL_CONFIG0_SD_PU_PLL_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_OFFSET 3
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_MASK \
|
||||
(0xf << SD_EXTERNAL_CONFIG0_SD_PHY_GEN_RX_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_OFFSET 7
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_MASK \
|
||||
(0xf << SD_EXTERNAL_CONFIG0_SD_PHY_GEN_TX_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_RX_OFFSET 11
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_RX_MASK \
|
||||
(1 << SD_EXTERNAL_CONFIG0_SD_PU_RX_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_TX_OFFSET 12
|
||||
#define SD_EXTERNAL_CONFIG0_SD_PU_TX_MASK \
|
||||
(1 << SD_EXTERNAL_CONFIG0_SD_PU_TX_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_OFFSET 14
|
||||
#define SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_MASK \
|
||||
(1 << SD_EXTERNAL_CONFIG0_HALF_BUS_MODE_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG0_MEDIA_MODE_OFFSET 15
|
||||
#define SD_EXTERNAL_CONFIG0_MEDIA_MODE_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG0_MEDIA_MODE_OFFSET)
|
||||
|
||||
#define SD_EXTERNAL_CONFIG1_REG 0x4
|
||||
#define SD_EXTERNAL_CONFIG1_TX_IDLE_OFFSET 2
|
||||
#define SD_EXTERNAL_CONFIG1_TX_IDLE_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG1_TX_IDLE_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG1_RESET_IN_OFFSET 3
|
||||
#define SD_EXTERNAL_CONFIG1_RESET_IN_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG1_RESET_IN_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG1_RX_INIT_OFFSET 4
|
||||
#define SD_EXTERNAL_CONFIG1_RX_INIT_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG1_RX_INIT_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG1_RESET_CORE_OFFSET 5
|
||||
#define SD_EXTERNAL_CONFIG1_RESET_CORE_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG1_RESET_CORE_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG1_RF_RESET_IN_OFFSET 6
|
||||
#define SD_EXTERNAL_CONFIG1_RF_RESET_IN_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG1_RF_RESET_IN_OFFSET)
|
||||
|
||||
#define SD_EXTERNAL_CONFIG2_REG 0x8
|
||||
#define SD_EXTERNAL_CONFIG2_PIN_DFE_EN_OFFSET 4
|
||||
#define SD_EXTERNAL_CONFIG2_PIN_DFE_EN_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG2_PIN_DFE_EN_OFFSET)
|
||||
#define SD_EXTERNAL_CONFIG2_SSC_ENABLE_OFFSET 7
|
||||
#define SD_EXTERNAL_CONFIG2_SSC_ENABLE_MASK \
|
||||
(0x1 << SD_EXTERNAL_CONFIG2_SSC_ENABLE_OFFSET)
|
||||
|
||||
#define SD_EXTERNAL_STATUS_REG 0xc
|
||||
#define SD_EXTERNAL_STATUS_START_RX_TRAINING_OFFSET 7
|
||||
#define SD_EXTERNAL_STATUS_START_RX_TRAINING_MASK \
|
||||
(1 << SD_EXTERNAL_STATUS_START_RX_TRAINING_OFFSET)
|
||||
|
||||
#define SD_EXTERNAL_STATUS0_REG 0x18
|
||||
#define SD_EXTERNAL_STATUS0_PLL_TX_OFFSET 2
|
||||
#define SD_EXTERNAL_STATUS0_PLL_TX_MASK \
|
||||
(0x1 << SD_EXTERNAL_STATUS0_PLL_TX_OFFSET)
|
||||
#define SD_EXTERNAL_STATUS0_PLL_RX_OFFSET 3
|
||||
#define SD_EXTERNAL_STATUS0_PLL_RX_MASK \
|
||||
(0x1 << SD_EXTERNAL_STATUS0_PLL_RX_OFFSET)
|
||||
#define SD_EXTERNAL_STATUS0_RX_INIT_OFFSET 4
|
||||
#define SD_EXTERNAL_STATUS0_RX_INIT_MASK \
|
||||
(0x1 << SD_EXTERNAL_STATUS0_RX_INIT_OFFSET)
|
||||
|
||||
#define SD_EXTERNAL_STATAUS1_REG 0x1c
|
||||
#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_OFFSET 0
|
||||
#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_MASK \
|
||||
(1 << SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_COMP_OFFSET)
|
||||
#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_OFFSET 1
|
||||
#define SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_MASK \
|
||||
(1 << SD_EXTERNAL_STATAUS1_REG_RX_TRAIN_FAILED_OFFSET)
|
||||
|
||||
/* HPIPE registers */
|
||||
#define HPIPE_PWR_PLL_REG 0x4
|
||||
#define HPIPE_PWR_PLL_REF_FREQ_OFFSET 0
|
||||
#define HPIPE_PWR_PLL_REF_FREQ_MASK \
|
||||
(0x1f << HPIPE_PWR_PLL_REF_FREQ_OFFSET)
|
||||
#define HPIPE_PWR_PLL_PHY_MODE_OFFSET 5
|
||||
#define HPIPE_PWR_PLL_PHY_MODE_MASK \
|
||||
(0x7 << HPIPE_PWR_PLL_PHY_MODE_OFFSET)
|
||||
|
||||
#define HPIPE_CAL_REG1_REG 0xc
|
||||
#define HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET 10
|
||||
#define HPIPE_CAL_REG_1_EXT_TXIMP_MASK \
|
||||
(0x1f << HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET)
|
||||
#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET 15
|
||||
#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_MASK \
|
||||
(0x1 << HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET)
|
||||
|
||||
#define HPIPE_SQUELCH_FFE_SETTING_REG 0x18
|
||||
#define HPIPE_SQUELCH_THRESH_IN_OFFSET 8
|
||||
#define HPIPE_SQUELCH_THRESH_IN_MASK \
|
||||
(0xf << HPIPE_SQUELCH_THRESH_IN_OFFSET)
|
||||
#define HPIPE_SQUELCH_DETECTED_OFFSET 14
|
||||
#define HPIPE_SQUELCH_DETECTED_MASK \
|
||||
(0x1 << HPIPE_SQUELCH_DETECTED_OFFSET)
|
||||
|
||||
#define HPIPE_DFE_REG0 0x1c
|
||||
#define HPIPE_DFE_RES_FORCE_OFFSET 15
|
||||
#define HPIPE_DFE_RES_FORCE_MASK \
|
||||
(0x1 << HPIPE_DFE_RES_FORCE_OFFSET)
|
||||
|
||||
#define HPIPE_DFE_F3_F5_REG 0x28
|
||||
#define HPIPE_DFE_F3_F5_DFE_EN_OFFSET 14
|
||||
#define HPIPE_DFE_F3_F5_DFE_EN_MASK \
|
||||
(0x1 << HPIPE_DFE_F3_F5_DFE_EN_OFFSET)
|
||||
#define HPIPE_DFE_F3_F5_DFE_CTRL_OFFSET 15
|
||||
#define HPIPE_DFE_F3_F5_DFE_CTRL_MASK \
|
||||
(0x1 << HPIPE_DFE_F3_F5_DFE_CTRL_OFFSET)
|
||||
|
||||
#define HPIPE_ADAPTED_DFE_COEFFICIENT_1_REG 0x30
|
||||
#define HPIPE_ADAPTED_DFE_RES_OFFSET 13
|
||||
#define HPIPE_ADAPTED_DFE_RES_MASK \
|
||||
(0x3 << HPIPE_ADAPTED_DFE_RES_OFFSET)
|
||||
|
||||
#define HPIPE_G1_SET_0_REG 0x34
|
||||
#define HPIPE_G1_SET_0_G1_TX_AMP_OFFSET 1
|
||||
#define HPIPE_G1_SET_0_G1_TX_AMP_MASK \
|
||||
(0x1f << HPIPE_G1_SET_0_G1_TX_AMP_OFFSET)
|
||||
#define HPIPE_G1_SET_0_G1_TX_AMP_ADJ_OFFSET 6
|
||||
#define HPIPE_G1_SET_0_G1_TX_AMP_ADJ_MASK \
|
||||
(0x1 << HPIPE_G1_SET_0_G1_TX_AMP_ADJ_OFFSET)
|
||||
#define HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET 7
|
||||
#define HPIPE_G1_SET_0_G1_TX_EMPH1_MASK \
|
||||
(0xf << HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET)
|
||||
#define HPIPE_G1_SET_0_G1_TX_EMPH1_EN_OFFSET 11
|
||||
#define HPIPE_G1_SET_0_G1_TX_EMPH1_EN_MASK \
|
||||
(0x1 << HPIPE_G1_SET_0_G1_TX_EMPH1_EN_OFFSET)
|
||||
|
||||
#define HPIPE_G1_SET_1_REG 0x38
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUPI_OFFSET 0
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUPI_MASK \
|
||||
(0x7 << HPIPE_G1_SET_1_G1_RX_SELMUPI_OFFSET)
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUPF_OFFSET 3
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUPF_MASK \
|
||||
(0x7 << HPIPE_G1_SET_1_G1_RX_SELMUPF_OFFSET)
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUFI_OFFSET 6
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUFI_MASK \
|
||||
(0x3 << HPIPE_G1_SET_1_G1_RX_SELMUFI_OFFSET)
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUFF_OFFSET 8
|
||||
#define HPIPE_G1_SET_1_G1_RX_SELMUFF_MASK \
|
||||
(0x3 << HPIPE_G1_SET_1_G1_RX_SELMUFF_OFFSET)
|
||||
#define HPIPE_G1_SET_1_G1_RX_DFE_EN_OFFSET 10
|
||||
#define HPIPE_G1_SET_1_G1_RX_DFE_EN_MASK \
|
||||
(0x1 << HPIPE_G1_SET_1_G1_RX_DFE_EN_OFFSET)
|
||||
#define HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_OFFSET 11
|
||||
#define HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_MASK \
|
||||
(0x3 << HPIPE_G1_SET_1_G1_RX_DIGCK_DIV_OFFSET)
|
||||
|
||||
#define HPIPE_G2_SET_0_REG 0x3c
|
||||
#define HPIPE_G2_SET_0_G2_TX_AMP_OFFSET 1
|
||||
#define HPIPE_G2_SET_0_G2_TX_AMP_MASK \
|
||||
(0x1f << HPIPE_G2_SET_0_G2_TX_AMP_OFFSET)
|
||||
#define HPIPE_G2_SET_0_G2_TX_AMP_ADJ_OFFSET 6
|
||||
#define HPIPE_G2_SET_0_G2_TX_AMP_ADJ_MASK \
|
||||
(0x1 << HPIPE_G2_SET_0_G2_TX_AMP_ADJ_OFFSET)
|
||||
#define HPIPE_G2_SET_0_G2_TX_EMPH1_OFFSET 7
|
||||
#define HPIPE_G2_SET_0_G2_TX_EMPH1_MASK \
|
||||
(0xf << HPIPE_G2_SET_0_G2_TX_EMPH1_OFFSET)
|
||||
#define HPIPE_G2_SET_0_G2_TX_EMPH1_EN_OFFSET 11
|
||||
#define HPIPE_G2_SET_0_G2_TX_EMPH1_EN_MASK \
|
||||
(0x1 << HPIPE_G2_SET_0_G2_TX_EMPH1_EN_OFFSET)
|
||||
|
||||
#define HPIPE_G2_SET_1_REG 0x40
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUPI_OFFSET 0
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUPI_MASK \
|
||||
(0x7 << HPIPE_G2_SET_1_G2_RX_SELMUPI_OFFSET)
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUPF_OFFSET 3
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUPF_MASK \
|
||||
(0x7 << HPIPE_G2_SET_1_G2_RX_SELMUPF_OFFSET)
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUFI_OFFSET 6
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUFI_MASK \
|
||||
(0x3 << HPIPE_G2_SET_1_G2_RX_SELMUFI_OFFSET)
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUFF_OFFSET 8
|
||||
#define HPIPE_G2_SET_1_G2_RX_SELMUFF_MASK \
|
||||
(0x3 << HPIPE_G2_SET_1_G2_RX_SELMUFF_OFFSET)
|
||||
#define HPIPE_G2_SET_1_G2_RX_DFE_EN_OFFSET 10
|
||||
#define HPIPE_G2_SET_1_G2_RX_DFE_EN_MASK \
|
||||
(0x1 << HPIPE_G2_SET_1_G2_RX_DFE_EN_OFFSET)
|
||||
#define HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_OFFSET 11
|
||||
#define HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_MASK \
|
||||
(0x3 << HPIPE_G2_SET_1_G2_RX_DIGCK_DIV_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SET_0_REG 0x44
|
||||
#define HPIPE_G3_SET_0_G3_TX_AMP_OFFSET 1
|
||||
#define HPIPE_G3_SET_0_G3_TX_AMP_MASK \
|
||||
(0x1f << HPIPE_G3_SET_0_G3_TX_AMP_OFFSET)
|
||||
#define HPIPE_G3_SET_0_G3_TX_AMP_ADJ_OFFSET 6
|
||||
#define HPIPE_G3_SET_0_G3_TX_AMP_ADJ_MASK \
|
||||
(0x1 << HPIPE_G3_SET_0_G3_TX_AMP_ADJ_OFFSET)
|
||||
#define HPIPE_G3_SET_0_G3_TX_EMPH1_OFFSET 7
|
||||
#define HPIPE_G3_SET_0_G3_TX_EMPH1_MASK \
|
||||
(0xf << HPIPE_G3_SET_0_G3_TX_EMPH1_OFFSET)
|
||||
#define HPIPE_G3_SET_0_G3_TX_EMPH1_EN_OFFSET 11
|
||||
#define HPIPE_G3_SET_0_G3_TX_EMPH1_EN_MASK \
|
||||
(0x1 << HPIPE_G3_SET_0_G3_TX_EMPH1_EN_OFFSET)
|
||||
#define HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_OFFSET 12
|
||||
#define HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_MASK \
|
||||
(0x7 << HPIPE_G3_SET_0_G3_TX_SLEW_RATE_SEL_OFFSET)
|
||||
#define HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_OFFSET 15
|
||||
#define HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_MASK \
|
||||
(0x1 << HPIPE_G3_SET_0_G3_TX_SLEW_CTRL_EN_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SET_1_REG 0x48
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUPI_OFFSET 0
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUPI_MASK \
|
||||
(0x7 << HPIPE_G3_SET_1_G3_RX_SELMUPI_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUPF_OFFSET 3
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUPF_MASK \
|
||||
(0x7 << HPIPE_G3_SET_1_G3_RX_SELMUPF_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUFI_OFFSET 6
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUFI_MASK \
|
||||
(0x3 << HPIPE_G3_SET_1_G3_RX_SELMUFI_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUFF_OFFSET 8
|
||||
#define HPIPE_G3_SET_1_G3_RX_SELMUFF_MASK \
|
||||
(0x3 << HPIPE_G3_SET_1_G3_RX_SELMUFF_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_RX_DFE_EN_OFFSET 10
|
||||
#define HPIPE_G3_SET_1_G3_RX_DFE_EN_MASK \
|
||||
(0x1 << HPIPE_G3_SET_1_G3_RX_DFE_EN_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_OFFSET 11
|
||||
#define HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_MASK \
|
||||
(0x3 << HPIPE_G3_SET_1_G3_RX_DIGCK_DIV_OFFSET)
|
||||
#define HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_OFFSET 13
|
||||
#define HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_MASK \
|
||||
(0x1 << HPIPE_G3_SET_1_G3_SAMPLER_INPAIRX2_EN_OFFSET)
|
||||
|
||||
#define HPIPE_PHY_TEST_CONTROL_REG 0x54
|
||||
#define HPIPE_PHY_TEST_PATTERN_SEL_OFFSET 4
|
||||
#define HPIPE_PHY_TEST_PATTERN_SEL_MASK \
|
||||
(0xf << HPIPE_PHY_TEST_PATTERN_SEL_OFFSET)
|
||||
#define HPIPE_PHY_TEST_RESET_OFFSET 14
|
||||
#define HPIPE_PHY_TEST_RESET_MASK \
|
||||
(0x1 << HPIPE_PHY_TEST_RESET_OFFSET)
|
||||
#define HPIPE_PHY_TEST_EN_OFFSET 15
|
||||
#define HPIPE_PHY_TEST_EN_MASK \
|
||||
(0x1 << HPIPE_PHY_TEST_EN_OFFSET)
|
||||
|
||||
#define HPIPE_PHY_TEST_DATA_REG 0x6c
|
||||
#define HPIPE_PHY_TEST_DATA_OFFSET 0
|
||||
#define HPIPE_PHY_TEST_DATA_MASK \
|
||||
(0xffff << HPIPE_PHY_TEST_DATA_OFFSET)
|
||||
|
||||
#define HPIPE_PHY_TEST_PRBS_ERROR_COUNTER_1_REG 0x80
|
||||
|
||||
#define HPIPE_PHY_TEST_OOB_0_REGISTER 0x84
|
||||
#define HPIPE_PHY_PT_OOB_EN_OFFSET 14
|
||||
#define HPIPE_PHY_PT_OOB_EN_MASK \
|
||||
(0x1 << HPIPE_PHY_PT_OOB_EN_OFFSET)
|
||||
#define HPIPE_PHY_TEST_PT_TESTMODE_OFFSET 12
|
||||
#define HPIPE_PHY_TEST_PT_TESTMODE_MASK \
|
||||
(0x3 << HPIPE_PHY_TEST_PT_TESTMODE_OFFSET)
|
||||
|
||||
#define HPIPE_LOOPBACK_REG 0x8c
|
||||
#define HPIPE_LOOPBACK_SEL_OFFSET 1
|
||||
#define HPIPE_LOOPBACK_SEL_MASK \
|
||||
(0x7 << HPIPE_LOOPBACK_SEL_OFFSET)
|
||||
#define HPIPE_CDR_LOCK_OFFSET 7
|
||||
#define HPIPE_CDR_LOCK_MASK \
|
||||
(0x1 << HPIPE_CDR_LOCK_OFFSET)
|
||||
#define HPIPE_CDR_LOCK_DET_EN_OFFSET 8
|
||||
#define HPIPE_CDR_LOCK_DET_EN_MASK \
|
||||
(0x1 << HPIPE_CDR_LOCK_DET_EN_OFFSET)
|
||||
|
||||
#define HPIPE_SYNC_PATTERN_REG 0x090
|
||||
#define HPIPE_SYNC_PATTERN_TXD_INV_OFFSET 10
|
||||
#define HPIPE_SYNC_PATTERN_TXD_INV_MASK \
|
||||
(0x1 << HPIPE_SYNC_PATTERN_TXD_INV_OFFSET)
|
||||
#define HPIPE_SYNC_PATTERN_RXD_INV_OFFSET 11
|
||||
#define HPIPE_SYNC_PATTERN_RXD_INV_MASK \
|
||||
(0x1 << HPIPE_SYNC_PATTERN_RXD_INV_OFFSET)
|
||||
|
||||
#define HPIPE_INTERFACE_REG 0x94
|
||||
#define HPIPE_INTERFACE_GEN_MAX_OFFSET 10
|
||||
#define HPIPE_INTERFACE_GEN_MAX_MASK \
|
||||
(0x3 << HPIPE_INTERFACE_GEN_MAX_OFFSET)
|
||||
#define HPIPE_INTERFACE_DET_BYPASS_OFFSET 12
|
||||
#define HPIPE_INTERFACE_DET_BYPASS_MASK \
|
||||
(0x1 << HPIPE_INTERFACE_DET_BYPASS_OFFSET)
|
||||
#define HPIPE_INTERFACE_LINK_TRAIN_OFFSET 14
|
||||
#define HPIPE_INTERFACE_LINK_TRAIN_MASK \
|
||||
(0x1 << HPIPE_INTERFACE_LINK_TRAIN_OFFSET)
|
||||
|
||||
#define HPIPE_G1_SET_2_REG 0xf4
|
||||
#define HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET 0
|
||||
#define HPIPE_G1_SET_2_G1_TX_EMPH0_MASK \
|
||||
(0xf << HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET)
|
||||
#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_OFFSET 4
|
||||
#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_MASK \
|
||||
(0x1 << HPIPE_G1_SET_2_G1_TX_EMPH0_EN_OFFSET)
|
||||
|
||||
#define HPIPE_G2_SET_2_REG 0xf8
|
||||
#define HPIPE_G2_SET_2_G2_TX_EMPH0_OFFSET 0
|
||||
#define HPIPE_G2_SET_2_G2_TX_EMPH0_MASK \
|
||||
(0xf << HPIPE_G2_SET_2_G2_TX_EMPH0_OFFSET)
|
||||
#define HPIPE_G2_SET_2_G2_TX_EMPH0_EN_OFFSET 4
|
||||
#define HPIPE_G2_SET_2_G2_TX_EMPH0_EN_MASK \
|
||||
(0x1 << HPIPE_G2_SET_2_G2_TX_EMPH0_EN_OFFSET)
|
||||
#define HPIPE_G2_TX_SSC_AMP_OFFSET 9
|
||||
#define HPIPE_G2_TX_SSC_AMP_MASK \
|
||||
(0x7f << HPIPE_G2_TX_SSC_AMP_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SET_2_REG 0xfc
|
||||
#define HPIPE_G3_SET_2_G3_TX_EMPH0_OFFSET 0
|
||||
#define HPIPE_G3_SET_2_G3_TX_EMPH0_MASK \
|
||||
(0xf << HPIPE_G3_SET_2_G3_TX_EMPH0_OFFSET)
|
||||
#define HPIPE_G3_SET_2_G3_TX_EMPH0_EN_OFFSET 4
|
||||
#define HPIPE_G3_SET_2_G3_TX_EMPH0_EN_MASK \
|
||||
(0x1 << HPIPE_G3_SET_2_G3_TX_EMPH0_EN_OFFSET)
|
||||
#define HPIPE_G3_TX_SSC_AMP_OFFSET 9
|
||||
#define HPIPE_G3_TX_SSC_AMP_MASK \
|
||||
(0x7f << HPIPE_G3_TX_SSC_AMP_OFFSET)
|
||||
|
||||
#define HPIPE_VDD_CAL_0_REG 0x108
|
||||
#define HPIPE_CAL_VDD_CONT_MODE_OFFSET 15
|
||||
#define HPIPE_CAL_VDD_CONT_MODE_MASK \
|
||||
(0x1 << HPIPE_CAL_VDD_CONT_MODE_OFFSET)
|
||||
|
||||
#define HPIPE_VDD_CAL_CTRL_REG 0x114
|
||||
#define HPIPE_EXT_SELLV_RXSAMPL_OFFSET 5
|
||||
#define HPIPE_EXT_SELLV_RXSAMPL_MASK \
|
||||
(0x1f << HPIPE_EXT_SELLV_RXSAMPL_OFFSET)
|
||||
|
||||
#define HPIPE_PCIE_REG0 0x120
|
||||
#define HPIPE_PCIE_IDLE_SYNC_OFFSET 12
|
||||
#define HPIPE_PCIE_IDLE_SYNC_MASK \
|
||||
(0x1 << HPIPE_PCIE_IDLE_SYNC_OFFSET)
|
||||
#define HPIPE_PCIE_SEL_BITS_OFFSET 13
|
||||
#define HPIPE_PCIE_SEL_BITS_MASK \
|
||||
(0x3 << HPIPE_PCIE_SEL_BITS_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_ALIGN_REG 0x124
|
||||
#define HPIPE_LANE_ALIGN_OFF_OFFSET 12
|
||||
#define HPIPE_LANE_ALIGN_OFF_MASK \
|
||||
(0x1 << HPIPE_LANE_ALIGN_OFF_OFFSET)
|
||||
|
||||
#define HPIPE_MISC_REG 0x13C
|
||||
#define HPIPE_MISC_CLK100M_125M_OFFSET 4
|
||||
#define HPIPE_MISC_CLK100M_125M_MASK \
|
||||
(0x1 << HPIPE_MISC_CLK100M_125M_OFFSET)
|
||||
#define HPIPE_MISC_ICP_FORCE_OFFSET 5
|
||||
#define HPIPE_MISC_ICP_FORCE_MASK \
|
||||
(0x1 << HPIPE_MISC_ICP_FORCE_OFFSET)
|
||||
#define HPIPE_MISC_TXDCLK_2X_OFFSET 6
|
||||
#define HPIPE_MISC_TXDCLK_2X_MASK \
|
||||
(0x1 << HPIPE_MISC_TXDCLK_2X_OFFSET)
|
||||
#define HPIPE_MISC_CLK500_EN_OFFSET 7
|
||||
#define HPIPE_MISC_CLK500_EN_MASK \
|
||||
(0x1 << HPIPE_MISC_CLK500_EN_OFFSET)
|
||||
#define HPIPE_MISC_REFCLK_SEL_OFFSET 10
|
||||
#define HPIPE_MISC_REFCLK_SEL_MASK \
|
||||
(0x1 << HPIPE_MISC_REFCLK_SEL_OFFSET)
|
||||
|
||||
#define HPIPE_RX_CONTROL_1_REG 0x140
|
||||
#define HPIPE_RX_CONTROL_1_RXCLK2X_SEL_OFFSET 11
|
||||
#define HPIPE_RX_CONTROL_1_RXCLK2X_SEL_MASK \
|
||||
(0x1 << HPIPE_RX_CONTROL_1_RXCLK2X_SEL_OFFSET)
|
||||
#define HPIPE_RX_CONTROL_1_CLK8T_EN_OFFSET 12
|
||||
#define HPIPE_RX_CONTROL_1_CLK8T_EN_MASK \
|
||||
(0x1 << HPIPE_RX_CONTROL_1_CLK8T_EN_OFFSET)
|
||||
|
||||
#define HPIPE_PWR_CTR_REG 0x148
|
||||
#define HPIPE_PWR_CTR_RST_DFE_OFFSET 0
|
||||
#define HPIPE_PWR_CTR_RST_DFE_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_RST_DFE_OFFSET)
|
||||
#define HPIPE_PWR_CTR_SFT_RST_OFFSET 10
|
||||
#define HPIPE_PWR_CTR_SFT_RST_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_SFT_RST_OFFSET)
|
||||
|
||||
#define HPIPE_SPD_DIV_FORCE_REG 0x154
|
||||
#define HPIPE_TXDIGCK_DIV_FORCE_OFFSET 7
|
||||
#define HPIPE_TXDIGCK_DIV_FORCE_MASK \
|
||||
(0x1 << HPIPE_TXDIGCK_DIV_FORCE_OFFSET)
|
||||
#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_OFFSET 8
|
||||
#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_MASK \
|
||||
(0x3 << HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_OFFSET)
|
||||
#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_OFFSET 10
|
||||
#define HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_MASK \
|
||||
(0x1 << HPIPE_SPD_DIV_FORCE_RX_SPD_DIV_FORCE_OFFSET)
|
||||
#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_OFFSET 13
|
||||
#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_MASK \
|
||||
(0x3 << HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_OFFSET)
|
||||
#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_OFFSET 15
|
||||
#define HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_MASK \
|
||||
(0x1 << HPIPE_SPD_DIV_FORCE_TX_SPD_DIV_FORCE_OFFSET)
|
||||
|
||||
/* HPIPE_RX_CLK_ALIGN90_AND_TX_IDLE_CALIBRATION_CTRL_REG */
|
||||
#define HPIPE_RX_CLK_ALIGN90_AND_TX_IDLE_CALIB_CTRL_REG 0x168
|
||||
#define HPIPE_CAL_RXCLKALIGN_90_EXT_EN_OFFSET 15
|
||||
#define HPIPE_CAL_RXCLKALIGN_90_EXT_EN_MASK \
|
||||
(0x1 << HPIPE_CAL_RXCLKALIGN_90_EXT_EN_OFFSET)
|
||||
#define HPIPE_CAL_OS_PH_EXT_OFFSET 8
|
||||
#define HPIPE_CAL_OS_PH_EXT_MASK \
|
||||
(0x7f << HPIPE_CAL_OS_PH_EXT_OFFSET)
|
||||
|
||||
#define HPIPE_SAMPLER_N_PROC_CALIB_CTRL_REG 0x16C
|
||||
#define HPIPE_RX_SAMPLER_OS_GAIN_OFFSET 6
|
||||
#define HPIPE_RX_SAMPLER_OS_GAIN_MASK \
|
||||
(0x3 << HPIPE_RX_SAMPLER_OS_GAIN_OFFSET)
|
||||
#define HPIPE_SMAPLER_OFFSET 12
|
||||
#define HPIPE_SMAPLER_MASK \
|
||||
(0x1 << HPIPE_SMAPLER_OFFSET)
|
||||
|
||||
#define HPIPE_TX_REG1_REG 0x174
|
||||
#define HPIPE_TX_REG1_TX_EMPH_RES_OFFSET 5
|
||||
#define HPIPE_TX_REG1_TX_EMPH_RES_MASK \
|
||||
(0x3 << HPIPE_TX_REG1_TX_EMPH_RES_OFFSET)
|
||||
#define HPIPE_TX_REG1_SLC_EN_OFFSET 10
|
||||
#define HPIPE_TX_REG1_SLC_EN_MASK \
|
||||
(0x3f << HPIPE_TX_REG1_SLC_EN_OFFSET)
|
||||
|
||||
#define HPIPE_PWR_CTR_DTL_REG 0x184
|
||||
#define HPIPE_PWR_CTR_DTL_SQ_DET_EN_OFFSET 0
|
||||
#define HPIPE_PWR_CTR_DTL_SQ_DET_EN_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_DTL_SQ_DET_EN_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_OFFSET 1
|
||||
#define HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_DTL_SQ_PLOOP_EN_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_FLOOP_EN_OFFSET 2
|
||||
#define HPIPE_PWR_CTR_DTL_FLOOP_EN_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_DTL_FLOOP_EN_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_CLAMPING_SEL_OFFSET 4
|
||||
#define HPIPE_PWR_CTR_DTL_CLAMPING_SEL_MASK \
|
||||
(0x7 << HPIPE_PWR_CTR_DTL_CLAMPING_SEL_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_OFFSET 10
|
||||
#define HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_MASK \
|
||||
(0x1 << HPIPE_PWR_CTR_DTL_INTPCLK_DIV_FORCE_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_CLK_MODE_OFFSET 12
|
||||
#define HPIPE_PWR_CTR_DTL_CLK_MODE_MASK \
|
||||
(0x3 << HPIPE_PWR_CTR_DTL_CLK_MODE_OFFSET)
|
||||
#define HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_OFFSET 14
|
||||
#define HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_MASK \
|
||||
(1 << HPIPE_PWR_CTR_DTL_CLK_MODE_FORCE_OFFSET)
|
||||
|
||||
#define HPIPE_PHASE_CONTROL_REG 0x188
|
||||
#define HPIPE_OS_PH_OFFSET_OFFSET 0
|
||||
#define HPIPE_OS_PH_OFFSET_MASK \
|
||||
(0x7f << HPIPE_OS_PH_OFFSET_OFFSET)
|
||||
#define HPIPE_OS_PH_OFFSET_FORCE_OFFSET 7
|
||||
#define HPIPE_OS_PH_OFFSET_FORCE_MASK \
|
||||
(0x1 << HPIPE_OS_PH_OFFSET_FORCE_OFFSET)
|
||||
#define HPIPE_OS_PH_VALID_OFFSET 8
|
||||
#define HPIPE_OS_PH_VALID_MASK \
|
||||
(0x1 << HPIPE_OS_PH_VALID_OFFSET)
|
||||
|
||||
#define HPIPE_DATA_PHASE_OFF_CTRL_REG 0x1A0
|
||||
#define HPIPE_DATA_PHASE_ADAPTED_OS_PH_OFFSET 9
|
||||
#define HPIPE_DATA_PHASE_ADAPTED_OS_PH_MASK \
|
||||
(0x7f << HPIPE_DATA_PHASE_ADAPTED_OS_PH_OFFSET)
|
||||
|
||||
#define HPIPE_ADAPTED_FFE_CAPACITOR_COUNTER_CTRL_REG 0x1A4
|
||||
#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_OFFSET 12
|
||||
#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_MASK \
|
||||
(0x3 << HPIPE_ADAPTED_FFE_ADAPTED_FFE_RES_OFFSET)
|
||||
#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_OFFSET 8
|
||||
#define HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_MASK \
|
||||
(0xf << HPIPE_ADAPTED_FFE_ADAPTED_FFE_CAP_OFFSET)
|
||||
|
||||
#define HPIPE_SQ_GLITCH_FILTER_CTRL 0x1c8
|
||||
#define HPIPE_SQ_DEGLITCH_WIDTH_P_OFFSET 0
|
||||
#define HPIPE_SQ_DEGLITCH_WIDTH_P_MASK \
|
||||
(0xf << HPIPE_SQ_DEGLITCH_WIDTH_P_OFFSET)
|
||||
#define HPIPE_SQ_DEGLITCH_WIDTH_N_OFFSET 4
|
||||
#define HPIPE_SQ_DEGLITCH_WIDTH_N_MASK \
|
||||
(0xf << HPIPE_SQ_DEGLITCH_WIDTH_N_OFFSET)
|
||||
#define HPIPE_SQ_DEGLITCH_EN_OFFSET 8
|
||||
#define HPIPE_SQ_DEGLITCH_EN_MASK \
|
||||
(0x1 << HPIPE_SQ_DEGLITCH_EN_OFFSET)
|
||||
|
||||
#define HPIPE_FRAME_DETECT_CTRL_0_REG 0x214
|
||||
#define HPIPE_TRAIN_PAT_NUM_OFFSET 0x7
|
||||
#define HPIPE_TRAIN_PAT_NUM_MASK \
|
||||
(0x1FF << HPIPE_TRAIN_PAT_NUM_OFFSET)
|
||||
|
||||
#define HPIPE_FRAME_DETECT_CTRL_3_REG 0x220
|
||||
#define HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_OFFSET 12
|
||||
#define HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_MASK \
|
||||
(0x1 << HPIPE_PATTERN_LOCK_LOST_TIMEOUT_EN_OFFSET)
|
||||
|
||||
#define HPIPE_DME_REG 0x228
|
||||
#define HPIPE_DME_ETHERNET_MODE_OFFSET 7
|
||||
#define HPIPE_DME_ETHERNET_MODE_MASK \
|
||||
(0x1 << HPIPE_DME_ETHERNET_MODE_OFFSET)
|
||||
|
||||
#define HPIPE_TRX_TRAIN_CTRL_0_REG 0x22c
|
||||
#define HPIPE_TRX_TX_F0T_EO_BASED_OFFSET 14
|
||||
#define HPIPE_TRX_TX_F0T_EO_BASED_MASK \
|
||||
(1 << HPIPE_TRX_TX_F0T_EO_BASED_OFFSET)
|
||||
#define HPIPE_TRX_UPDATE_THEN_HOLD_OFFSET 6
|
||||
#define HPIPE_TRX_UPDATE_THEN_HOLD_MASK \
|
||||
(1 << HPIPE_TRX_UPDATE_THEN_HOLD_OFFSET)
|
||||
#define HPIPE_TRX_TX_CTRL_CLK_EN_OFFSET 5
|
||||
#define HPIPE_TRX_TX_CTRL_CLK_EN_MASK \
|
||||
(1 << HPIPE_TRX_TX_CTRL_CLK_EN_OFFSET)
|
||||
#define HPIPE_TRX_RX_ANA_IF_CLK_ENE_OFFSET 4
|
||||
#define HPIPE_TRX_RX_ANA_IF_CLK_ENE_MASK \
|
||||
(1 << HPIPE_TRX_RX_ANA_IF_CLK_ENE_OFFSET)
|
||||
#define HPIPE_TRX_TX_TRAIN_EN_OFFSET 1
|
||||
#define HPIPE_TRX_TX_TRAIN_EN_MASK \
|
||||
(1 << HPIPE_TRX_TX_TRAIN_EN_OFFSET)
|
||||
#define HPIPE_TRX_RX_TRAIN_EN_OFFSET 0
|
||||
#define HPIPE_TRX_RX_TRAIN_EN_MASK \
|
||||
(1 << HPIPE_TRX_RX_TRAIN_EN_OFFSET)
|
||||
|
||||
#define HPIPE_TX_TRAIN_CTRL_0_REG 0x268
|
||||
#define HPIPE_TX_TRAIN_P2P_HOLD_OFFSET 15
|
||||
#define HPIPE_TX_TRAIN_P2P_HOLD_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_P2P_HOLD_OFFSET)
|
||||
|
||||
#define HPIPE_TX_TRAIN_CTRL_REG 0x26C
|
||||
#define HPIPE_TX_TRAIN_CTRL_G1_OFFSET 0
|
||||
#define HPIPE_TX_TRAIN_CTRL_G1_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_CTRL_G1_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_CTRL_GN1_OFFSET 1
|
||||
#define HPIPE_TX_TRAIN_CTRL_GN1_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_CTRL_GN1_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_CTRL_G0_OFFSET 2
|
||||
#define HPIPE_TX_TRAIN_CTRL_G0_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_CTRL_G0_OFFSET)
|
||||
|
||||
#define HPIPE_TX_TRAIN_CTRL_4_REG 0x278
|
||||
#define HPIPE_TRX_TRAIN_TIMER_OFFSET 0
|
||||
#define HPIPE_TRX_TRAIN_TIMER_MASK \
|
||||
(0x3FF << HPIPE_TRX_TRAIN_TIMER_OFFSET)
|
||||
|
||||
#define HPIPE_TX_TRAIN_CTRL_5_REG 0x2A4
|
||||
#define HPIPE_RX_TRAIN_TIMER_OFFSET 0
|
||||
#define HPIPE_RX_TRAIN_TIMER_MASK \
|
||||
(0x3ff << HPIPE_RX_TRAIN_TIMER_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_START_SQ_EN_OFFSET 11
|
||||
#define HPIPE_TX_TRAIN_START_SQ_EN_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_START_SQ_EN_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_START_FRM_DET_EN_OFFSET 12
|
||||
#define HPIPE_TX_TRAIN_START_FRM_DET_EN_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_START_FRM_DET_EN_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_START_FRM_LOCK_EN_OFFSET 13
|
||||
#define HPIPE_TX_TRAIN_START_FRM_LOCK_EN_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_START_FRM_LOCK_EN_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_WAIT_TIME_EN_OFFSET 14
|
||||
#define HPIPE_TX_TRAIN_WAIT_TIME_EN_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_WAIT_TIME_EN_OFFSET)
|
||||
|
||||
#define HPIPE_INTERRUPT_1_REGISTER 0x2AC
|
||||
#define HPIPE_TRX_TRAIN_FAILED_OFFSET 6
|
||||
#define HPIPE_TRX_TRAIN_FAILED_MASK \
|
||||
(1 << HPIPE_TRX_TRAIN_FAILED_OFFSET)
|
||||
#define HPIPE_TRX_TRAIN_TIME_OUT_INT_OFFSET 5
|
||||
#define HPIPE_TRX_TRAIN_TIME_OUT_INT_MASK \
|
||||
(1 << HPIPE_TRX_TRAIN_TIME_OUT_INT_OFFSET)
|
||||
#define HPIPE_INTERRUPT_TRX_TRAIN_DONE_OFFSET 4
|
||||
#define HPIPE_INTERRUPT_TRX_TRAIN_DONE_MASK \
|
||||
(1 << HPIPE_INTERRUPT_TRX_TRAIN_DONE_OFFSET)
|
||||
#define HPIPE_INTERRUPT_DFE_DONE_INT_OFFSET 3
|
||||
#define HPIPE_INTERRUPT_DFE_DONE_INT_MASK \
|
||||
(1 << HPIPE_INTERRUPT_DFE_DONE_INT_OFFSET)
|
||||
#define HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_OFFSET 1
|
||||
#define HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_MASK \
|
||||
(1 << HPIPE_INTERRUPT_RX_TRAIN_COMPLETE_INT_OFFSET)
|
||||
|
||||
#define HPIPE_TX_TRAIN_REG 0x31C
|
||||
#define HPIPE_TX_TRAIN_CHK_INIT_OFFSET 4
|
||||
#define HPIPE_TX_TRAIN_CHK_INIT_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_CHK_INIT_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_OFFSET 7
|
||||
#define HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_COE_FM_PIN_PCIE3_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_16BIT_AUTO_EN_OFFSET 8
|
||||
#define HPIPE_TX_TRAIN_16BIT_AUTO_EN_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_16BIT_AUTO_EN_OFFSET)
|
||||
#define HPIPE_TX_TRAIN_PAT_SEL_OFFSET 9
|
||||
#define HPIPE_TX_TRAIN_PAT_SEL_MASK \
|
||||
(0x1 << HPIPE_TX_TRAIN_PAT_SEL_OFFSET)
|
||||
|
||||
#define HPIPE_SAVED_DFE_VALUES_REG 0x328
|
||||
#define HPIPE_SAVED_DFE_VALUES_SAV_F0D_OFFSET 10
|
||||
#define HPIPE_SAVED_DFE_VALUES_SAV_F0D_MASK \
|
||||
(0x3f << HPIPE_SAVED_DFE_VALUES_SAV_F0D_OFFSET)
|
||||
|
||||
#define HPIPE_CDR_CONTROL_REG 0x418
|
||||
#define HPIPE_CRD_MIDPOINT_PHASE_OS_OFFSET 0
|
||||
#define HPIPE_CRD_MIDPOINT_PHASE_OS_MASK \
|
||||
(0x3f << HPIPE_CRD_MIDPOINT_PHASE_OS_OFFSET)
|
||||
#define HPIPE_CDR_MAX_DFE_ADAPT_1_OFFSET 6
|
||||
#define HPIPE_CDR_MAX_DFE_ADAPT_1_MASK \
|
||||
(0x7 << HPIPE_CDR_MAX_DFE_ADAPT_1_OFFSET)
|
||||
#define HPIPE_CDR_MAX_DFE_ADAPT_0_OFFSET 9
|
||||
#define HPIPE_CDR_MAX_DFE_ADAPT_0_MASK \
|
||||
(0x7 << HPIPE_CDR_MAX_DFE_ADAPT_0_OFFSET)
|
||||
#define HPIPE_CDR_RX_MAX_DFE_ADAPT_1_OFFSET 12
|
||||
#define HPIPE_CDR_RX_MAX_DFE_ADAPT_1_MASK \
|
||||
(0x3 << HPIPE_CDR_RX_MAX_DFE_ADAPT_1_OFFSET)
|
||||
#define HPIPE_CDR_RX_MAX_DFE_ADAPT_0_OFFSET 14
|
||||
#define HPIPE_CDR_RX_MAX_DFE_ADAPT_0_MASK \
|
||||
(0x3 << HPIPE_CDR_RX_MAX_DFE_ADAPT_0_OFFSET)
|
||||
|
||||
|
||||
#define HPIPE_CDR_CONTROL1_REG 0x41c
|
||||
#define HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_OFF 12
|
||||
#define HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_MASK \
|
||||
(0xf << HPIPE_CRD2_CRD_MIDPOINT_SMALL_THRES_K_OFF)
|
||||
|
||||
#define HPIPE_CDR_CONTROL2_REG 0x420
|
||||
#define HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_OFF 12
|
||||
#define HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_MASK \
|
||||
(0xf << HPIPE_CRD2_CRD_MIDPOINT_LARGE_THRES_K_OFF)
|
||||
|
||||
#define HPIPE_TX_TRAIN_CTRL_11_REG 0x438
|
||||
#define HPIPE_TX_STATUS_CHECK_MODE_OFFSET 6
|
||||
#define HPIPE_TX_TX_STATUS_CHECK_MODE_MASK \
|
||||
(0x1 << HPIPE_TX_STATUS_CHECK_MODE_OFFSET)
|
||||
#define HPIPE_TX_NUM_OF_PRESET_OFFSET 10
|
||||
#define HPIPE_TX_NUM_OF_PRESET_MASK \
|
||||
(0x7 << HPIPE_TX_NUM_OF_PRESET_OFFSET)
|
||||
#define HPIPE_TX_SWEEP_PRESET_EN_OFFSET 15
|
||||
#define HPIPE_TX_SWEEP_PRESET_EN_MASK \
|
||||
(0x1 << HPIPE_TX_SWEEP_PRESET_EN_OFFSET)
|
||||
|
||||
#define HPIPE_G1_SETTINGS_3_REG 0x440
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_OFFSET 0
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_MASK \
|
||||
(0xf << HPIPE_G1_SETTINGS_3_G1_FFE_CAP_SEL_OFFSET)
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_OFFSET 4
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_MASK \
|
||||
(0x7 << HPIPE_G1_SETTINGS_3_G1_FFE_RES_SEL_OFFSET)
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_OFFSET 7
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_MASK \
|
||||
(0x1 << HPIPE_G1_SETTINGS_3_G1_FFE_SETTING_FORCE_OFFSET)
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET 9
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_MASK \
|
||||
(0x1 << HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET)
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_OFFSET 12
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_MASK \
|
||||
(0x3 << HPIPE_G1_SETTINGS_3_G1_FFE_DEG_RES_LEVEL_OFFSET)
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_OFFSET 14
|
||||
#define HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_MASK \
|
||||
(0x3 << HPIPE_G1_SETTINGS_3_G1_FFE_LOAD_RES_LEVEL_OFFSET)
|
||||
|
||||
#define HPIPE_G1_SETTINGS_4_REG 0x444
|
||||
#define HPIPE_G1_SETTINGS_4_G1_DFE_RES_OFFSET 8
|
||||
#define HPIPE_G1_SETTINGS_4_G1_DFE_RES_MASK \
|
||||
(0x3 << HPIPE_G1_SETTINGS_4_G1_DFE_RES_OFFSET)
|
||||
|
||||
#define HPIPE_G2_SETTINGS_4_REG 0x44c
|
||||
#define HPIPE_G2_DFE_RES_OFFSET 8
|
||||
#define HPIPE_G2_DFE_RES_MASK \
|
||||
(0x3 << HPIPE_G2_DFE_RES_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SETTING_3_REG 0x450
|
||||
#define HPIPE_G3_FFE_CAP_SEL_OFFSET 0
|
||||
#define HPIPE_G3_FFE_CAP_SEL_MASK \
|
||||
(0xf << HPIPE_G3_FFE_CAP_SEL_OFFSET)
|
||||
#define HPIPE_G3_FFE_RES_SEL_OFFSET 4
|
||||
#define HPIPE_G3_FFE_RES_SEL_MASK \
|
||||
(0x7 << HPIPE_G3_FFE_RES_SEL_OFFSET)
|
||||
#define HPIPE_G3_FFE_SETTING_FORCE_OFFSET 7
|
||||
#define HPIPE_G3_FFE_SETTING_FORCE_MASK \
|
||||
(0x1 << HPIPE_G3_FFE_SETTING_FORCE_OFFSET)
|
||||
#define HPIPE_G3_FFE_DEG_RES_LEVEL_OFFSET 12
|
||||
#define HPIPE_G3_FFE_DEG_RES_LEVEL_MASK \
|
||||
(0x3 << HPIPE_G3_FFE_DEG_RES_LEVEL_OFFSET)
|
||||
#define HPIPE_G3_FFE_LOAD_RES_LEVEL_OFFSET 14
|
||||
#define HPIPE_G3_FFE_LOAD_RES_LEVEL_MASK \
|
||||
(0x3 << HPIPE_G3_FFE_LOAD_RES_LEVEL_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SETTING_4_REG 0x454
|
||||
#define HPIPE_G3_DFE_RES_OFFSET 8
|
||||
#define HPIPE_G3_DFE_RES_MASK (0x3 << HPIPE_G3_DFE_RES_OFFSET)
|
||||
|
||||
#define HPIPE_TX_PRESET_INDEX_REG 0x468
|
||||
#define HPIPE_TX_PRESET_INDEX_OFFSET 0
|
||||
#define HPIPE_TX_PRESET_INDEX_MASK \
|
||||
(0xf << HPIPE_TX_PRESET_INDEX_OFFSET)
|
||||
|
||||
#define HPIPE_DFE_CONTROL_REG 0x470
|
||||
#define HPIPE_DFE_TX_MAX_DFE_ADAPT_OFFSET 14
|
||||
#define HPIPE_DFE_TX_MAX_DFE_ADAPT_MASK \
|
||||
(0x3 << HPIPE_DFE_TX_MAX_DFE_ADAPT_OFFSET)
|
||||
|
||||
#define HPIPE_DFE_CTRL_28_REG 0x49C
|
||||
#define HPIPE_DFE_CTRL_28_PIPE4_OFFSET 7
|
||||
#define HPIPE_DFE_CTRL_28_PIPE4_MASK \
|
||||
(0x1 << HPIPE_DFE_CTRL_28_PIPE4_OFFSET)
|
||||
|
||||
#define HPIPE_TRX0_REG 0x4cc /*in doc 0x133*4*/
|
||||
#define HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_OFF 2
|
||||
#define HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_MASK \
|
||||
(0x1 << HPIPE_TRX0_GAIN_TRAIN_WITH_SAMPLER_OFF)
|
||||
#define HPIPE_TRX0_GAIN_TRAIN_WITH_C_OFF 0
|
||||
#define HPIPE_TRX0_GAIN_TRAIN_WITH_C_MASK \
|
||||
(0x1 << HPIPE_TRX0_GAIN_TRAIN_WITH_C_OFF)
|
||||
|
||||
#define HPIPE_TRX_REG1 0x4d0 /*in doc 0x134*4*/
|
||||
#define HPIPE_TRX_REG1_MIN_BOOST_MODE_OFF 3
|
||||
#define HPIPE_TRX_REG1_MIN_BOOST_MODE_MASK \
|
||||
(0x1 << HPIPE_TRX_REG1_MIN_BOOST_MODE_OFF)
|
||||
#define HPIPE_TRX_REG1_SUMFTAP_EN_OFF 10
|
||||
#define HPIPE_TRX_REG1_SUMFTAP_EN_MASK \
|
||||
(0x3f << HPIPE_TRX_REG1_SUMFTAP_EN_OFF)
|
||||
|
||||
#define HPIPE_TRX_REG2 0x4d8 /*in doc 0x136*4*/
|
||||
#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_OFF 11
|
||||
#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_MASK \
|
||||
(0x1f << HPIPE_TRX_REG2_SUMF_BOOST_TARGET_C_OFF)
|
||||
#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_OFF 7
|
||||
#define HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_MASK \
|
||||
(0xf << HPIPE_TRX_REG2_SUMF_BOOST_TARGET_K_OFF)
|
||||
|
||||
#define HPIPE_G1_SETTING_5_REG 0x538
|
||||
#define HPIPE_G1_SETTING_5_G1_ICP_OFFSET 0
|
||||
#define HPIPE_G1_SETTING_5_G1_ICP_MASK \
|
||||
(0xf << HPIPE_G1_SETTING_5_G1_ICP_OFFSET)
|
||||
|
||||
#define HPIPE_G3_SETTING_5_REG 0x548
|
||||
#define HPIPE_G3_SETTING_5_G3_ICP_OFFSET 0
|
||||
#define HPIPE_G3_SETTING_5_G3_ICP_MASK \
|
||||
(0xf << HPIPE_G3_SETTING_5_G3_ICP_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_CONFIG0_REG 0x600
|
||||
#define HPIPE_LANE_CONFIG0_TXDEEMPH0_OFFSET 0
|
||||
#define HPIPE_LANE_CONFIG0_TXDEEMPH0_MASK \
|
||||
(0x1 << HPIPE_LANE_CONFIG0_TXDEEMPH0_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_STATUS1_REG 0x60C
|
||||
#define HPIPE_LANE_STATUS1_PCLK_EN_OFFSET 0
|
||||
#define HPIPE_LANE_STATUS1_PCLK_EN_MASK \
|
||||
(0x1 << HPIPE_LANE_STATUS1_PCLK_EN_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_CFG4_REG 0x620
|
||||
#define HPIPE_LANE_CFG4_DFE_CTRL_OFFSET 0
|
||||
#define HPIPE_LANE_CFG4_DFE_CTRL_MASK \
|
||||
(0x7 << HPIPE_LANE_CFG4_DFE_CTRL_OFFSET)
|
||||
#define HPIPE_LANE_CFG4_DFE_EN_SEL_OFFSET 3
|
||||
#define HPIPE_LANE_CFG4_DFE_EN_SEL_MASK \
|
||||
(0x1 << HPIPE_LANE_CFG4_DFE_EN_SEL_OFFSET)
|
||||
#define HPIPE_LANE_CFG4_DFE_OVER_OFFSET 6
|
||||
#define HPIPE_LANE_CFG4_DFE_OVER_MASK \
|
||||
(0x1 << HPIPE_LANE_CFG4_DFE_OVER_OFFSET)
|
||||
#define HPIPE_LANE_CFG4_SSC_CTRL_OFFSET 7
|
||||
#define HPIPE_LANE_CFG4_SSC_CTRL_MASK \
|
||||
(0x1 << HPIPE_LANE_CFG4_SSC_CTRL_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_EQ_REMOTE_SETTING_REG 0x6f8
|
||||
#define HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_OFFSET 0
|
||||
#define HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_MASK \
|
||||
(0x1 << HPIPE_LANE_CFG_FOM_DIRN_OVERRIDE_OFFSET)
|
||||
#define HPIPE_LANE_CFG_FOM_ONLY_MODE_OFFFSET 1
|
||||
#define HPIPE_LANE_CFG_FOM_ONLY_MODE_MASK \
|
||||
(0x1 << HPIPE_LANE_CFG_FOM_ONLY_MODE_OFFFSET)
|
||||
#define HPIPE_LANE_CFG_FOM_PRESET_VECTOR_OFFSET 2
|
||||
#define HPIPE_LANE_CFG_FOM_PRESET_VECTOR_MASK \
|
||||
(0xf << HPIPE_LANE_CFG_FOM_PRESET_VECTOR_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_EQU_CONFIG_0_REG 0x69C
|
||||
#define HPIPE_CFG_PHY_RC_EP_OFFSET 12
|
||||
#define HPIPE_CFG_PHY_RC_EP_MASK \
|
||||
(0x1 << HPIPE_CFG_PHY_RC_EP_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_EQ_CFG1_REG 0x6a0
|
||||
#define HPIPE_CFG_UPDATE_POLARITY_OFFSET 12
|
||||
#define HPIPE_CFG_UPDATE_POLARITY_MASK \
|
||||
(0x1 << HPIPE_CFG_UPDATE_POLARITY_OFFSET)
|
||||
|
||||
#define HPIPE_LANE_EQ_CFG2_REG 0x6a4
|
||||
#define HPIPE_CFG_EQ_BUNDLE_DIS_OFFSET 14
|
||||
#define HPIPE_CFG_EQ_BUNDLE_DIS_MASK \
|
||||
(0x1 << HPIPE_CFG_EQ_BUNDLE_DIS_OFFSET)
|
||||
|
||||
#define HPIPE_RST_CLK_CTRL_REG 0x704
|
||||
#define HPIPE_RST_CLK_CTRL_PIPE_RST_OFFSET 0
|
||||
#define HPIPE_RST_CLK_CTRL_PIPE_RST_MASK \
|
||||
(0x1 << HPIPE_RST_CLK_CTRL_PIPE_RST_OFFSET)
|
||||
#define HPIPE_RST_CLK_CTRL_FIXED_PCLK_OFFSET 2
|
||||
#define HPIPE_RST_CLK_CTRL_FIXED_PCLK_MASK \
|
||||
(0x1 << HPIPE_RST_CLK_CTRL_FIXED_PCLK_OFFSET)
|
||||
#define HPIPE_RST_CLK_CTRL_PIPE_WIDTH_OFFSET 3
|
||||
#define HPIPE_RST_CLK_CTRL_PIPE_WIDTH_MASK \
|
||||
(0x1 << HPIPE_RST_CLK_CTRL_PIPE_WIDTH_OFFSET)
|
||||
#define HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_OFFSET 9
|
||||
#define HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_MASK \
|
||||
(0x1 << HPIPE_RST_CLK_CTRL_CORE_FREQ_SEL_OFFSET)
|
||||
|
||||
#define HPIPE_TST_MODE_CTRL_REG 0x708
|
||||
#define HPIPE_TST_MODE_CTRL_MODE_MARGIN_OFFSET 2
|
||||
#define HPIPE_TST_MODE_CTRL_MODE_MARGIN_MASK \
|
||||
(0x1 << HPIPE_TST_MODE_CTRL_MODE_MARGIN_OFFSET)
|
||||
|
||||
#define HPIPE_CLK_SRC_LO_REG 0x70c
|
||||
#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_OFFSET 1
|
||||
#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_MASK \
|
||||
(0x1 << HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SEL_OFFSET)
|
||||
#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_OFFSET 2
|
||||
#define HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_MASK \
|
||||
(0x3 << HPIPE_CLK_SRC_LO_BUNDLE_PERIOD_SCALE_OFFSET)
|
||||
#define HPIPE_CLK_SRC_LO_PLL_RDY_DL_OFFSET 5
|
||||
#define HPIPE_CLK_SRC_LO_PLL_RDY_DL_MASK \
|
||||
(0x7 << HPIPE_CLK_SRC_LO_PLL_RDY_DL_OFFSET)
|
||||
|
||||
#define HPIPE_CLK_SRC_HI_REG 0x710
|
||||
#define HPIPE_CLK_SRC_HI_LANE_STRT_OFFSET 0
|
||||
#define HPIPE_CLK_SRC_HI_LANE_STRT_MASK \
|
||||
(0x1 << HPIPE_CLK_SRC_HI_LANE_STRT_OFFSET)
|
||||
#define HPIPE_CLK_SRC_HI_LANE_BREAK_OFFSET 1
|
||||
#define HPIPE_CLK_SRC_HI_LANE_BREAK_MASK \
|
||||
(0x1 << HPIPE_CLK_SRC_HI_LANE_BREAK_OFFSET)
|
||||
#define HPIPE_CLK_SRC_HI_LANE_MASTER_OFFSET 2
|
||||
#define HPIPE_CLK_SRC_HI_LANE_MASTER_MASK \
|
||||
(0x1 << HPIPE_CLK_SRC_HI_LANE_MASTER_OFFSET)
|
||||
#define HPIPE_CLK_SRC_HI_MODE_PIPE_OFFSET 7
|
||||
#define HPIPE_CLK_SRC_HI_MODE_PIPE_MASK \
|
||||
(0x1 << HPIPE_CLK_SRC_HI_MODE_PIPE_OFFSET)
|
||||
|
||||
#define HPIPE_GLOBAL_MISC_CTRL 0x718
|
||||
#define HPIPE_GLOBAL_PM_CTRL 0x740
|
||||
#define HPIPE_GLOBAL_PM_RXDLOZ_WAIT_OFFSET 0
|
||||
#define HPIPE_GLOBAL_PM_RXDLOZ_WAIT_MASK \
|
||||
(0xFF << HPIPE_GLOBAL_PM_RXDLOZ_WAIT_OFFSET)
|
||||
|
||||
/* General defines */
|
||||
#define PLL_LOCK_TIMEOUT 15000
|
||||
|
||||
#endif /* COMPHY_CP110_H */
|
||||
+1065
File diff suppressed because it is too large
Load Diff
+249
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Marvell International Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
#ifndef PHY_COMPHY_3700_H
|
||||
#define PHY_COMPHY_3700_H
|
||||
|
||||
#define PLL_SET_DELAY_US 600
|
||||
#define COMPHY_PLL_TIMEOUT 1000
|
||||
#define REG_16_BIT_MASK 0xFFFF
|
||||
|
||||
#define COMPHY_SELECTOR_PHY_REG 0xFC
|
||||
/* bit0: 0: Lane1 is GbE0; 1: Lane1 is PCIE */
|
||||
#define COMPHY_SELECTOR_PCIE_GBE0_SEL_BIT BIT(0)
|
||||
/* bit4: 0: Lane0 is GbE1; 1: Lane0 is USB3 */
|
||||
#define COMPHY_SELECTOR_USB3_GBE1_SEL_BIT BIT(4)
|
||||
/* bit8: 0: Lane0 is USB3 instead of GbE1, Lane2 is SATA; 1: Lane2 is USB3 */
|
||||
#define COMPHY_SELECTOR_USB3_PHY_SEL_BIT BIT(8)
|
||||
|
||||
/* SATA PHY register offset */
|
||||
#define SATAPHY_LANE2_REG_BASE_OFFSET 0x200
|
||||
|
||||
/* USB3 PHY offset compared to SATA PHY */
|
||||
#define USB3PHY_LANE2_REG_BASE_OFFSET 0x200
|
||||
|
||||
/* Comphy lane2 indirect access register offset */
|
||||
#define COMPHY_LANE2_INDIR_ADDR_OFFSET 0x0
|
||||
#define COMPHY_LANE2_INDIR_DATA_OFFSET 0x4
|
||||
|
||||
/* PHY shift to get related register address */
|
||||
enum {
|
||||
PCIE = 1,
|
||||
USB3,
|
||||
};
|
||||
|
||||
#define PCIEPHY_SHFT 2
|
||||
#define USB3PHY_SHFT 2
|
||||
#define PHY_SHFT(unit) ((unit == PCIE) ? PCIEPHY_SHFT : USB3PHY_SHFT)
|
||||
|
||||
/* PHY register */
|
||||
#define COMPHY_POWER_PLL_CTRL 0x01
|
||||
#define PWR_PLL_CTRL_ADDR(unit) (COMPHY_POWER_PLL_CTRL * PHY_SHFT(unit))
|
||||
#define PU_IVREF_BIT BIT(15)
|
||||
#define PU_PLL_BIT BIT(14)
|
||||
#define PU_RX_BIT BIT(13)
|
||||
#define PU_TX_BIT BIT(12)
|
||||
#define PU_TX_INTP_BIT BIT(11)
|
||||
#define PU_DFE_BIT BIT(10)
|
||||
#define RESET_DTL_RX_BIT BIT(9)
|
||||
#define PLL_LOCK_BIT BIT(8)
|
||||
#define REF_FREF_SEL_OFFSET 0
|
||||
#define REF_FREF_SEL_MASK (0x1F << REF_FREF_SEL_OFFSET)
|
||||
#define REF_FREF_SEL_SERDES_25MHZ (0x1 << REF_FREF_SEL_OFFSET)
|
||||
#define REF_FREF_SEL_SERDES_40MHZ (0x3 << REF_FREF_SEL_OFFSET)
|
||||
#define REF_FREF_SEL_SERDES_50MHZ (0x4 << REF_FREF_SEL_OFFSET)
|
||||
#define REF_FREF_SEL_PCIE_USB3_25MHZ (0x2 << REF_FREF_SEL_OFFSET)
|
||||
#define REF_FREF_SEL_PCIE_USB3_40MHZ (0x3 << REF_FREF_SEL_OFFSET)
|
||||
#define PHY_MODE_OFFSET 5
|
||||
#define PHY_MODE_MASK (7 << PHY_MODE_OFFSET)
|
||||
#define PHY_MODE_SATA (0x0 << PHY_MODE_OFFSET)
|
||||
#define PHY_MODE_PCIE (0x3 << PHY_MODE_OFFSET)
|
||||
#define PHY_MODE_SGMII (0x4 << PHY_MODE_OFFSET)
|
||||
#define PHY_MODE_USB3 (0x5 << PHY_MODE_OFFSET)
|
||||
|
||||
#define COMPHY_KVCO_CAL_CTRL 0x02
|
||||
#define KVCO_CAL_CTRL_ADDR(unit) (COMPHY_KVCO_CAL_CTRL * PHY_SHFT(unit))
|
||||
#define USE_MAX_PLL_RATE_BIT BIT(12)
|
||||
#define SPEED_PLL_OFFSET 2
|
||||
#define SPEED_PLL_MASK (0x3F << SPEED_PLL_OFFSET)
|
||||
#define SPEED_PLL_VALUE_16 (0x10 << SPEED_PLL_OFFSET)
|
||||
|
||||
#define COMPHY_DIG_LOOPBACK_EN 0x23
|
||||
#define DIG_LOOPBACK_EN_ADDR(unit) (COMPHY_DIG_LOOPBACK_EN * \
|
||||
PHY_SHFT(unit))
|
||||
#define SEL_DATA_WIDTH_OFFSET 10
|
||||
#define SEL_DATA_WIDTH_MASK (0x3 << SEL_DATA_WIDTH_OFFSET)
|
||||
#define DATA_WIDTH_10BIT (0x0 << SEL_DATA_WIDTH_OFFSET)
|
||||
#define DATA_WIDTH_20BIT (0x1 << SEL_DATA_WIDTH_OFFSET)
|
||||
#define DATA_WIDTH_40BIT (0x2 << SEL_DATA_WIDTH_OFFSET)
|
||||
#define PLL_READY_TX_BIT BIT(4)
|
||||
|
||||
#define COMPHY_SYNC_PATTERN 0x24
|
||||
#define SYNC_PATTERN_ADDR(unit) (COMPHY_SYNC_PATTERN * PHY_SHFT(unit))
|
||||
#define TXD_INVERT_BIT BIT(10)
|
||||
#define RXD_INVERT_BIT BIT(11)
|
||||
|
||||
#define COMPHY_SYNC_MASK_GEN 0x25
|
||||
#define PHY_GEN_MAX_OFFSET 10
|
||||
#define PHY_GEN_MAX_MASK (3 << PHY_GEN_MAX_OFFSET)
|
||||
#define PHY_GEN_MAX_USB3_5G (1 << PHY_GEN_MAX_OFFSET)
|
||||
|
||||
#define COMPHY_ISOLATION_CTRL 0x26
|
||||
#define ISOLATION_CTRL_ADDR(unit) (COMPHY_ISOLATION_REG * PHY_SHFT(unit))
|
||||
#define PHY_ISOLATE_MODE BIT(15)
|
||||
|
||||
#define COMPHY_GEN2_SET2 0x3e
|
||||
#define GEN2_SET2_ADDR(unit) (COMPHY_GEN2_SET2 * PHY_SHFT(unit))
|
||||
#define GS2_TX_SSC_AMP_VALUE_20 BIT(14)
|
||||
#define GS2_TX_SSC_AMP_OFF 9
|
||||
#define GS2_TX_SSC_AMP_LEN 7
|
||||
#define GS2_TX_SSC_AMP_MASK (((1 << GS2_TX_SSC_AMP_LEN) - 1) << \
|
||||
GS2_TX_SSC_AMP_OFF)
|
||||
#define GS2_VREG_RXTX_MAS_ISET_OFF 7
|
||||
#define GS2_VREG_RXTX_MAS_ISET_60U (0 << GS2_VREG_RXTX_MAS_ISET_OFF)
|
||||
#define GS2_VREG_RXTX_MAS_ISET_80U (1 << GS2_VREG_RXTX_MAS_ISET_OFF)
|
||||
#define GS2_VREG_RXTX_MAS_ISET_100U (2 << GS2_VREG_RXTX_MAS_ISET_OFF)
|
||||
#define GS2_VREG_RXTX_MAS_ISET_120U (3 << GS2_VREG_RXTX_MAS_ISET_OFF)
|
||||
#define GS2_VREG_RXTX_MAS_ISET_MASK (BIT(7) | BIT(8))
|
||||
#define GS2_RSVD_6_0_OFF 0
|
||||
#define GS2_RSVD_6_0_LEN 7
|
||||
#define GS2_RSVD_6_0_MASK (((1 << GS2_RSVD_6_0_LEN) - 1) << \
|
||||
GS2_RSVD_6_0_OFF)
|
||||
|
||||
#define COMPHY_GEN3_SET2 0x3f
|
||||
#define GEN3_SET2_ADDR(unit) (COMPHY_GEN3_SET2 * PHY_SHFT(unit))
|
||||
|
||||
#define COMPHY_IDLE_SYNC_EN 0x48
|
||||
#define IDLE_SYNC_EN_ADDR(unit) (COMPHY_IDLE_SYNC_EN * PHY_SHFT(unit))
|
||||
#define IDLE_SYNC_EN BIT(12)
|
||||
#define IDLE_SYNC_EN_DEFAULT_VALUE 0x60
|
||||
|
||||
#define COMPHY_MISC_CTRL0 0x4F
|
||||
#define MISC_CTRL0_ADDR(unit) (COMPHY_MISC_CTRL0 * PHY_SHFT(unit))
|
||||
#define CLK100M_125M_EN BIT(4)
|
||||
#define TXDCLK_2X_SEL BIT(6)
|
||||
#define CLK500M_EN BIT(7)
|
||||
#define PHY_REF_CLK_SEL BIT(10)
|
||||
#define MISC_CTRL0_DEFAULT_VALUE 0xA00D
|
||||
|
||||
#define COMPHY_MISC_CTRL1 0x73
|
||||
#define MISC_CTRL1_ADDR(unit) (COMPHY_MISC_CTRL1 * PHY_SHFT(unit))
|
||||
#define SEL_BITS_PCIE_FORCE BIT(15)
|
||||
|
||||
#define COMPHY_GEN2_SET3 0x112
|
||||
#define GS3_FFE_CAP_SEL_MASK 0xF
|
||||
#define GS3_FFE_CAP_SEL_VALUE 0xF
|
||||
|
||||
#define COMPHY_LANE_CFG0 0x180
|
||||
#define LANE_CFG0_ADDR(unit) (COMPHY_LANE_CFG0 * PHY_SHFT(unit))
|
||||
#define PRD_TXDEEMPH0_MASK BIT(0)
|
||||
#define PRD_TXMARGIN_MASK (BIT(1) | BIT(2) | BIT(3))
|
||||
#define PRD_TXSWING_MASK BIT(4)
|
||||
#define CFG_TX_ALIGN_POS_MASK (BIT(5) | BIT(6) | BIT(7) | BIT(8))
|
||||
|
||||
#define COMPHY_LANE_CFG1 0x181
|
||||
#define LANE_CFG1_ADDR(unit) (COMPHY_LANE_CFG1 * PHY_SHFT(unit))
|
||||
#define PRD_TXDEEMPH1_MASK BIT(15)
|
||||
#define USE_MAX_PLL_RATE_EN BIT(9)
|
||||
#define TX_DET_RX_MODE BIT(6)
|
||||
#define GEN2_TX_DATA_DLY_MASK (BIT(3) | BIT(4))
|
||||
#define GEN2_TX_DATA_DLY_DEFT (2 << 3)
|
||||
#define TX_ELEC_IDLE_MODE_EN BIT(0)
|
||||
|
||||
#define COMPHY_LANE_STAT1 0x183
|
||||
#define LANE_STAT1_ADDR(unit) (COMPHY_LANE_STAT1 * PHY_SHFT(unit))
|
||||
#define TXDCLK_PCLK_EN BIT(0)
|
||||
|
||||
#define COMPHY_LANE_CFG4 0x188
|
||||
#define LANE_CFG4_ADDR(unit) (COMPHY_LANE_CFG4 * PHY_SHFT(unit))
|
||||
#define SPREAD_SPECTRUM_CLK_EN BIT(7)
|
||||
|
||||
#define COMPHY_RST_CLK_CTRL 0x1C1
|
||||
#define RST_CLK_CTRL_ADDR(unit) (COMPHY_RST_CLK_CTRL * PHY_SHFT(unit))
|
||||
#define SOFT_RESET BIT(0)
|
||||
#define MODE_CORE_CLK_FREQ_SEL BIT(9)
|
||||
#define MODE_PIPE_WIDTH_32 BIT(3)
|
||||
#define MODE_REFDIV_OFFSET 4
|
||||
#define MODE_REFDIV_LEN 2
|
||||
#define MODE_REFDIV_MASK (0x3 << MODE_REFDIV_OFFSET)
|
||||
#define MODE_REFDIV_BY_4 (0x2 << MODE_REFDIV_OFFSET)
|
||||
|
||||
#define COMPHY_TEST_MODE_CTRL 0x1C2
|
||||
#define TEST_MODE_CTRL_ADDR(unit) (COMPHY_TEST_MODE_CTRL * PHY_SHFT(unit))
|
||||
#define MODE_MARGIN_OVERRIDE BIT(2)
|
||||
|
||||
#define COMPHY_CLK_SRC_LO 0x1C3
|
||||
#define CLK_SRC_LO_ADDR(unit) (COMPHY_CLK_SRC_LO * PHY_SHFT(unit))
|
||||
#define MODE_CLK_SRC BIT(0)
|
||||
#define BUNDLE_PERIOD_SEL BIT(1)
|
||||
#define BUNDLE_PERIOD_SCALE_MASK (BIT(2) | BIT(3))
|
||||
#define BUNDLE_SAMPLE_CTRL BIT(4)
|
||||
#define PLL_READY_DLY_MASK (BIT(5) | BIT(6) | BIT(7))
|
||||
#define CFG_SEL_20B BIT(15)
|
||||
|
||||
#define COMPHY_PWR_MGM_TIM1 0x1D0
|
||||
#define PWR_MGM_TIM1_ADDR(unit) (COMPHY_PWR_MGM_TIM1 * PHY_SHFT(unit))
|
||||
#define CFG_PM_OSCCLK_WAIT_OFF 12
|
||||
#define CFG_PM_OSCCLK_WAIT_LEN 4
|
||||
#define CFG_PM_OSCCLK_WAIT_MASK (((1 << CFG_PM_OSCCLK_WAIT_LEN) - 1) \
|
||||
<< CFG_PM_OSCCLK_WAIT_OFF)
|
||||
#define CFG_PM_RXDEN_WAIT_OFF 8
|
||||
#define CFG_PM_RXDEN_WAIT_LEN 4
|
||||
#define CFG_PM_RXDEN_WAIT_MASK (((1 << CFG_PM_RXDEN_WAIT_LEN) - 1) \
|
||||
<< CFG_PM_RXDEN_WAIT_OFF)
|
||||
#define CFG_PM_RXDEN_WAIT_1_UNIT (1 << CFG_PM_RXDEN_WAIT_OFF)
|
||||
#define CFG_PM_RXDLOZ_WAIT_OFF 0
|
||||
#define CFG_PM_RXDLOZ_WAIT_LEN 8
|
||||
#define CFG_PM_RXDLOZ_WAIT_MASK (((1 << CFG_PM_RXDLOZ_WAIT_LEN) - 1) \
|
||||
<< CFG_PM_RXDLOZ_WAIT_OFF)
|
||||
#define CFG_PM_RXDLOZ_WAIT_7_UNIT (7 << CFG_PM_RXDLOZ_WAIT_OFF)
|
||||
#define CFG_PM_RXDLOZ_WAIT_12_UNIT (0xC << CFG_PM_RXDLOZ_WAIT_OFF)
|
||||
|
||||
/*
|
||||
* This register is not from PHY lane register space. It only exists in the
|
||||
* indirect register space, before the actual PHY lane 2 registers. So the
|
||||
* offset is absolute, not relative to SATAPHY_LANE2_REG_BASE_OFFSET.
|
||||
* It is used only for SATA PHY initialization.
|
||||
*/
|
||||
#define COMPHY_RESERVED_REG 0x0E
|
||||
#define PHYCTRL_FRM_PIN_BIT BIT(13)
|
||||
|
||||
/* SGMII */
|
||||
#define COMPHY_PHY_CFG1_OFFSET(lane) ((1 - (lane)) * 0x28)
|
||||
#define PIN_PU_IVREF_BIT BIT(1)
|
||||
#define PIN_RESET_CORE_BIT BIT(11)
|
||||
#define PIN_RESET_COMPHY_BIT BIT(12)
|
||||
#define PIN_PU_PLL_BIT BIT(16)
|
||||
#define PIN_PU_RX_BIT BIT(17)
|
||||
#define PIN_PU_TX_BIT BIT(18)
|
||||
#define PIN_TX_IDLE_BIT BIT(19)
|
||||
#define GEN_RX_SEL_OFFSET 22
|
||||
#define GEN_RX_SEL_MASK (0xF << GEN_RX_SEL_OFFSET)
|
||||
#define GEN_TX_SEL_OFFSET 26
|
||||
#define GEN_TX_SEL_MASK (0xF << GEN_TX_SEL_OFFSET)
|
||||
#define PHY_RX_INIT_BIT BIT(30)
|
||||
#define SD_SPEED_1_25_G 0x6
|
||||
#define SD_SPEED_3_125_G 0x8
|
||||
|
||||
/* COMPHY status reg:
|
||||
* lane0: USB3/GbE1 PHY Status 1
|
||||
* lane1: PCIe/GbE0 PHY Status 1
|
||||
*/
|
||||
#define COMPHY_PHY_STATUS_OFFSET(lane) (0x18 + (1 - (lane)) * 0x28)
|
||||
#define PHY_RX_INIT_DONE_BIT BIT(0)
|
||||
#define PHY_PLL_READY_RX_BIT BIT(2)
|
||||
#define PHY_PLL_READY_TX_BIT BIT(3)
|
||||
|
||||
#define SGMIIPHY_ADDR(off, base) ((((off) & 0x00007FF) * 2) + (base))
|
||||
|
||||
#define MAX_LANE_NR 3
|
||||
|
||||
/* comphy API */
|
||||
int mvebu_3700_comphy_is_pll_locked(uint8_t comphy_index, uint32_t comphy_mode);
|
||||
int mvebu_3700_comphy_power_off(uint8_t comphy_index, uint32_t comphy_mode);
|
||||
int mvebu_3700_comphy_power_on(uint8_t comphy_index, uint32_t comphy_mode);
|
||||
#endif /* PHY_COMPHY_3700_H */
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Marvell International Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
/* Marvell CP110 ana A3700 common */
|
||||
|
||||
#ifndef PHY_COMPHY_COMMON_H
|
||||
#define PHY_COMPHY_COMMON_H
|
||||
|
||||
/* #define DEBUG_COMPHY */
|
||||
#ifdef DEBUG_COMPHY
|
||||
#define debug(format...) printf(format)
|
||||
#else
|
||||
#define debug(format, arg...)
|
||||
#endif
|
||||
|
||||
/* A lane is described by 4 fields:
|
||||
* - bit 1~0 represent comphy polarity invert
|
||||
* - bit 7~2 represent comphy speed
|
||||
* - bit 11~8 represent unit index
|
||||
* - bit 16~12 represent mode
|
||||
* - bit 17 represent comphy indication of clock source
|
||||
* - bit 20~18 represents pcie width (in case of pcie comphy config.)
|
||||
* - bit 21 represents the source of the request (Linux/Bootloader),
|
||||
* (reguired only for PCIe!)
|
||||
* - bit 31~22 reserved
|
||||
*/
|
||||
|
||||
#define COMPHY_INVERT_OFFSET 0
|
||||
#define COMPHY_INVERT_LEN 2
|
||||
#define COMPHY_INVERT_MASK COMPHY_MASK(COMPHY_INVERT_OFFSET, \
|
||||
COMPHY_INVERT_LEN)
|
||||
#define COMPHY_SPEED_OFFSET (COMPHY_INVERT_OFFSET + COMPHY_INVERT_LEN)
|
||||
#define COMPHY_SPEED_LEN 6
|
||||
#define COMPHY_SPEED_MASK COMPHY_MASK(COMPHY_SPEED_OFFSET, \
|
||||
COMPHY_SPEED_LEN)
|
||||
#define COMPHY_UNIT_ID_OFFSET (COMPHY_SPEED_OFFSET + COMPHY_SPEED_LEN)
|
||||
#define COMPHY_UNIT_ID_LEN 4
|
||||
#define COMPHY_UNIT_ID_MASK COMPHY_MASK(COMPHY_UNIT_ID_OFFSET, \
|
||||
COMPHY_UNIT_ID_LEN)
|
||||
#define COMPHY_MODE_OFFSET (COMPHY_UNIT_ID_OFFSET + COMPHY_UNIT_ID_LEN)
|
||||
#define COMPHY_MODE_LEN 5
|
||||
#define COMPHY_MODE_MASK COMPHY_MASK(COMPHY_MODE_OFFSET, COMPHY_MODE_LEN)
|
||||
#define COMPHY_CLK_SRC_OFFSET (COMPHY_MODE_OFFSET + COMPHY_MODE_LEN)
|
||||
#define COMPHY_CLK_SRC_LEN 1
|
||||
#define COMPHY_CLK_SRC_MASK COMPHY_MASK(COMPHY_CLK_SRC_OFFSET, \
|
||||
COMPHY_CLK_SRC_LEN)
|
||||
#define COMPHY_PCI_WIDTH_OFFSET (COMPHY_CLK_SRC_OFFSET + COMPHY_CLK_SRC_LEN)
|
||||
#define COMPHY_PCI_WIDTH_LEN 3
|
||||
#define COMPHY_PCI_WIDTH_MASK COMPHY_MASK(COMPHY_PCI_WIDTH_OFFSET, \
|
||||
COMPHY_PCI_WIDTH_LEN)
|
||||
#define COMPHY_PCI_CALLER_OFFSET \
|
||||
(COMPHY_PCI_WIDTH_OFFSET + COMPHY_PCI_WIDTH_LEN)
|
||||
#define COMPHY_PCI_CALLER_LEN 1
|
||||
#define COMPHY_PCI_CALLER_MASK COMPHY_MASK(COMPHY_PCI_CALLER_OFFSET, \
|
||||
COMPHY_PCI_CALLER_LEN)
|
||||
|
||||
#define COMPHY_MASK(offset, len) (((1 << (len)) - 1) << (offset))
|
||||
|
||||
/* Macro which extracts mode from lane description */
|
||||
#define COMPHY_GET_MODE(x) (((x) & COMPHY_MODE_MASK) >> \
|
||||
COMPHY_MODE_OFFSET)
|
||||
/* Macro which extracts unit index from lane description */
|
||||
#define COMPHY_GET_ID(x) (((x) & COMPHY_UNIT_ID_MASK) >> \
|
||||
COMPHY_UNIT_ID_OFFSET)
|
||||
/* Macro which extracts speed from lane description */
|
||||
#define COMPHY_GET_SPEED(x) (((x) & COMPHY_SPEED_MASK) >> \
|
||||
COMPHY_SPEED_OFFSET)
|
||||
/* Macro which extracts clock source indication from lane description */
|
||||
#define COMPHY_GET_CLK_SRC(x) (((x) & COMPHY_CLK_SRC_MASK) >> \
|
||||
COMPHY_CLK_SRC_OFFSET)
|
||||
/* Macro which extracts pcie width indication from lane description */
|
||||
#define COMPHY_GET_PCIE_WIDTH(x) (((x) & COMPHY_PCI_WIDTH_MASK) >> \
|
||||
COMPHY_PCI_WIDTH_OFFSET)
|
||||
|
||||
/* Macro which extracts the caller for pcie power on from lane description */
|
||||
#define COMPHY_GET_CALLER(x) (((x) & COMPHY_PCI_CALLER_MASK) >> \
|
||||
COMPHY_PCI_CALLER_OFFSET)
|
||||
|
||||
/* Macro which extracts the polarity invert from lane description */
|
||||
#define COMPHY_GET_POLARITY_INVERT(x) (((x) & COMPHY_INVERT_MASK) >> \
|
||||
COMPHY_INVERT_OFFSET)
|
||||
|
||||
|
||||
#define COMPHY_SATA_MODE 0x1
|
||||
#define COMPHY_SGMII_MODE 0x2 /* SGMII 1G */
|
||||
#define COMPHY_2500BASEX_MODE 0x3 /* 2500Base-X */
|
||||
#define COMPHY_USB3H_MODE 0x4
|
||||
#define COMPHY_USB3D_MODE 0x5
|
||||
#define COMPHY_PCIE_MODE 0x6
|
||||
#define COMPHY_RXAUI_MODE 0x7
|
||||
#define COMPHY_XFI_MODE 0x8
|
||||
#define COMPHY_SFI_MODE 0x9
|
||||
#define COMPHY_USB3_MODE 0xa
|
||||
#define COMPHY_AP_MODE 0xb
|
||||
|
||||
#define COMPHY_UNUSED 0xFFFFFFFF
|
||||
|
||||
/* Polarity invert macro */
|
||||
#define COMPHY_POLARITY_NO_INVERT 0
|
||||
#define COMPHY_POLARITY_TXD_INVERT 1
|
||||
#define COMPHY_POLARITY_RXD_INVERT 2
|
||||
#define COMPHY_POLARITY_ALL_INVERT (COMPHY_POLARITY_TXD_INVERT | \
|
||||
COMPHY_POLARITY_RXD_INVERT)
|
||||
|
||||
enum reg_width_type {
|
||||
REG_16BIT = 0,
|
||||
REG_32BIT,
|
||||
};
|
||||
|
||||
enum {
|
||||
COMPHY_LANE0 = 0,
|
||||
COMPHY_LANE1,
|
||||
COMPHY_LANE2,
|
||||
COMPHY_LANE3,
|
||||
COMPHY_LANE4,
|
||||
COMPHY_LANE5,
|
||||
COMPHY_LANE_MAX,
|
||||
};
|
||||
|
||||
static inline uint32_t polling_with_timeout(uintptr_t addr, uint32_t val,
|
||||
uint32_t mask,
|
||||
uint32_t usec_timeout,
|
||||
enum reg_width_type type)
|
||||
{
|
||||
uint32_t data;
|
||||
|
||||
do {
|
||||
udelay(1);
|
||||
if (type == REG_16BIT)
|
||||
data = mmio_read_16(addr) & mask;
|
||||
else
|
||||
data = mmio_read_32(addr) & mask;
|
||||
} while (data != val && --usec_timeout > 0);
|
||||
|
||||
if (usec_timeout == 0)
|
||||
return data;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void reg_set(uintptr_t addr, uint32_t data, uint32_t mask)
|
||||
{
|
||||
debug("<atf>: WR to addr = 0x%lx, data = 0x%x (mask = 0x%x) - ",
|
||||
addr, data, mask);
|
||||
debug("old value = 0x%x ==> ", mmio_read_32(addr));
|
||||
mmio_clrsetbits_32(addr, mask, data & mask);
|
||||
|
||||
debug("new val 0x%x\n", mmio_read_32(addr));
|
||||
}
|
||||
|
||||
static inline void __unused reg_set16(uintptr_t addr, uint16_t data,
|
||||
uint16_t mask)
|
||||
{
|
||||
|
||||
debug("<atf>: WR to addr = 0x%lx, data = 0x%x (mask = 0x%x) - ",
|
||||
addr, data, mask);
|
||||
debug("old value = 0x%x ==> ", mmio_read_16(addr));
|
||||
mmio_clrsetbits_16(addr, mask, data & mask);
|
||||
|
||||
debug("new val 0x%x\n", mmio_read_16(addr));
|
||||
}
|
||||
|
||||
#endif /* PHY_COMPHY_COMMON_H */
|
||||
+2528
File diff suppressed because it is too large
Load Diff
+102
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright (C) 2018 Marvell International Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
/* Those are parameters for xfi mode, which need to be tune for each board type.
|
||||
* For known DB boards the parameters was already calibrated and placed under
|
||||
* the plat/marvell/armada/a8k/<board_type>/board/phy-porting-layer.h
|
||||
*/
|
||||
struct xfi_params {
|
||||
uint8_t g1_ffe_res_sel;
|
||||
uint8_t g1_ffe_cap_sel;
|
||||
uint8_t align90;
|
||||
uint8_t g1_dfe_res;
|
||||
uint8_t g1_amp;
|
||||
uint8_t g1_emph;
|
||||
uint8_t g1_emph_en;
|
||||
uint8_t g1_tx_amp_adj;
|
||||
uint8_t g1_tx_emph_en;
|
||||
uint8_t g1_tx_emph;
|
||||
uint8_t g1_rx_selmuff;
|
||||
uint8_t g1_rx_selmufi;
|
||||
uint8_t g1_rx_selmupf;
|
||||
uint8_t g1_rx_selmupi;
|
||||
_Bool valid;
|
||||
};
|
||||
|
||||
struct sata_params {
|
||||
uint8_t g1_amp;
|
||||
uint8_t g2_amp;
|
||||
uint8_t g3_amp;
|
||||
|
||||
uint8_t g1_emph;
|
||||
uint8_t g2_emph;
|
||||
uint8_t g3_emph;
|
||||
|
||||
uint8_t g1_emph_en;
|
||||
uint8_t g2_emph_en;
|
||||
uint8_t g3_emph_en;
|
||||
|
||||
uint8_t g1_tx_amp_adj;
|
||||
uint8_t g2_tx_amp_adj;
|
||||
uint8_t g3_tx_amp_adj;
|
||||
|
||||
uint8_t g1_tx_emph_en;
|
||||
uint8_t g2_tx_emph_en;
|
||||
uint8_t g3_tx_emph_en;
|
||||
|
||||
uint8_t g1_tx_emph;
|
||||
uint8_t g2_tx_emph;
|
||||
uint8_t g3_tx_emph;
|
||||
|
||||
uint8_t g3_dfe_res;
|
||||
|
||||
uint8_t g3_ffe_res_sel;
|
||||
|
||||
uint8_t g3_ffe_cap_sel;
|
||||
|
||||
uint8_t align90;
|
||||
|
||||
uint8_t g1_rx_selmuff;
|
||||
uint8_t g2_rx_selmuff;
|
||||
uint8_t g3_rx_selmuff;
|
||||
|
||||
uint8_t g1_rx_selmufi;
|
||||
uint8_t g2_rx_selmufi;
|
||||
uint8_t g3_rx_selmufi;
|
||||
|
||||
uint8_t g1_rx_selmupf;
|
||||
uint8_t g2_rx_selmupf;
|
||||
uint8_t g3_rx_selmupf;
|
||||
|
||||
uint8_t g1_rx_selmupi;
|
||||
uint8_t g2_rx_selmupi;
|
||||
uint8_t g3_rx_selmupi;
|
||||
|
||||
uint8_t polarity_invert;
|
||||
|
||||
_Bool valid;
|
||||
};
|
||||
|
||||
struct usb_params {
|
||||
uint8_t polarity_invert;
|
||||
};
|
||||
|
||||
int mvebu_cp110_comphy_is_pll_locked(uint64_t comphy_base,
|
||||
uint8_t comphy_index);
|
||||
int mvebu_cp110_comphy_power_off(uint64_t comphy_base,
|
||||
uint8_t comphy_index, uint64_t comphy_mode);
|
||||
int mvebu_cp110_comphy_power_on(uint64_t comphy_base, uint8_t comphy_index,
|
||||
uint64_t comphy_mode,
|
||||
uint64_t comphy_train_base);
|
||||
int mvebu_cp110_comphy_xfi_rx_training(uint64_t comphy_base,
|
||||
uint8_t comphy_index);
|
||||
int mvebu_cp110_comphy_digital_reset(uint64_t comphy_base, uint8_t comphy_index,
|
||||
uint32_t comphy_mode, uint32_t command);
|
||||
|
||||
#define COMPHY_POLARITY_NO_INVERT 0
|
||||
#define COMPHY_POLARITY_TXD_INVERT 1
|
||||
#define COMPHY_POLARITY_RXD_INVERT 2
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (C) 2018 Marvell International Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
#ifndef PHY_DEFAULT_PORTING_LAYER_H
|
||||
#define PHY_DEFAULT_PORTING_LAYER_H
|
||||
|
||||
|
||||
#define MAX_LANE_NR 6
|
||||
|
||||
#warning "Using default comphy params - you may need to suit them to your board"
|
||||
|
||||
static const struct xfi_params
|
||||
xfi_static_values_tab[AP_NUM][CP_NUM][MAX_LANE_NR] = {
|
||||
[0 ... AP_NUM-1][0 ... CP_NUM-1][0 ... MAX_LANE_NR-1] = {
|
||||
.g1_ffe_res_sel = 0x3, .g1_ffe_cap_sel = 0xf, .align90 = 0x5f,
|
||||
.g1_dfe_res = 0x2, .g1_amp = 0x1c, .g1_emph = 0xe,
|
||||
.g1_emph_en = 0x1, .g1_tx_amp_adj = 0x1, .g1_tx_emph_en = 0x1,
|
||||
.g1_tx_emph = 0x0, .g1_rx_selmuff = 0x1, .g1_rx_selmufi = 0x0,
|
||||
.g1_rx_selmupf = 0x2, .g1_rx_selmupi = 0x2, .valid = 1
|
||||
}
|
||||
};
|
||||
|
||||
static const struct sata_params
|
||||
sata_static_values_tab[AP_NUM][CP_NUM][MAX_LANE_NR] = {
|
||||
[0 ... AP_NUM-1][0 ... CP_NUM-1][0 ... MAX_LANE_NR-1] = {
|
||||
.g1_amp = 0x8, .g2_amp = 0xa, .g3_amp = 0x1e,
|
||||
.g1_emph = 0x1, .g2_emph = 0x2, .g3_emph = 0xe,
|
||||
.g1_emph_en = 0x1, .g2_emph_en = 0x1, .g3_emph_en = 0x1,
|
||||
.g1_tx_amp_adj = 0x1, .g2_tx_amp_adj = 0x1,
|
||||
.g3_tx_amp_adj = 0x1,
|
||||
.g1_tx_emph_en = 0x0, .g2_tx_emph_en = 0x0,
|
||||
.g3_tx_emph_en = 0x0,
|
||||
.g1_tx_emph = 0x1, .g2_tx_emph = 0x1, .g3_tx_emph = 0x1,
|
||||
.g3_dfe_res = 0x1, .g3_ffe_res_sel = 0x4, .g3_ffe_cap_sel = 0xf,
|
||||
.align90 = 0x61,
|
||||
.g1_rx_selmuff = 0x3, .g2_rx_selmuff = 0x3,
|
||||
.g3_rx_selmuff = 0x3,
|
||||
.g1_rx_selmufi = 0x0, .g2_rx_selmufi = 0x0,
|
||||
.g3_rx_selmufi = 0x3,
|
||||
.g1_rx_selmupf = 0x1, .g2_rx_selmupf = 0x1,
|
||||
.g3_rx_selmupf = 0x2,
|
||||
.g1_rx_selmupi = 0x0, .g2_rx_selmupi = 0x0,
|
||||
.g3_rx_selmupi = 0x2,
|
||||
.polarity_invert = COMPHY_POLARITY_NO_INVERT,
|
||||
.valid = 0x1
|
||||
},
|
||||
};
|
||||
|
||||
static const struct usb_params
|
||||
usb_static_values_tab[AP_NUM][CP_NUM][MAX_LANE_NR] = {
|
||||
[0 ... AP_NUM-1][0 ... CP_NUM-1][0 ... MAX_LANE_NR-1] = {
|
||||
.polarity_invert = COMPHY_POLARITY_NO_INVERT
|
||||
},
|
||||
};
|
||||
#endif /* PHY_DEFAULT_PORTING_LAYER_H */
|
||||
Reference in New Issue
Block a user