This patch adds many registers and values for QCA956x GMAC interface. QCA956X_PLL_SWITCH_CLOCK_CONTROL_REG, QCA956X_PLL_ETH_XMII_CONTROL_REG and QCA956X_ETH_CFG_RGMII_EN names are fixed to match original names.
Values are taken from U-Boot 1.1.4 of CAF. Signed-off-by: Julien Dusser <julien.dus...@free.fr> Signed-off-by: Sander Vanheule <san...@svanheule.net> --- .../920-qca956x-add-more-registers.patch | 186 ++++++++++++++++++ .../920-qca956x-add-more-registers.patch | 186 ++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 target/linux/ath79/patches-4.19/920-qca956x-add-more-registers.patch create mode 100644 target/linux/ath79/patches-5.4/920-qca956x-add-more-registers.patch diff --git a/target/linux/ath79/patches-4.19/920-qca956x-add-more-registers.patch b/target/linux/ath79/patches-4.19/920-qca956x-add-more-registers.patch new file mode 100644 index 0000000000..961bfe05ba --- /dev/null +++ b/target/linux/ath79/patches-4.19/920-qca956x-add-more-registers.patch @@ -0,0 +1,186 @@ +MIPS: ath79: add lots of missing registers for QCA956x SoCs + +This patch adds many registers and values for QCA956x GMAC interface. + +QCA956X_PLL_SWITCH_CLOCK_CONTROL_REG, QCA956X_PLL_ETH_XMII_CONTROL_REG +and QCA956X_ETH_CFG_RGMII_EN names are fixed to match original names. + +Values are taken from U-Boot 1.1.4 of CAF. + +Signed-off-by: Julien Dusser <julien.dus...@free.fr> +--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h ++++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h +@@ -438,8 +438,18 @@ + #define QCA956X_PLL_DDR_CONFIG_REG 0x08 + #define QCA956X_PLL_DDR_CONFIG1_REG 0x0c + #define QCA956X_PLL_CLK_CTRL_REG 0x10 +-#define QCA956X_PLL_SWITCH_CLOCK_CONTROL_REG 0x28 +-#define QCA956X_PLL_ETH_XMII_CONTROL_REG 0x30 ++#define QCA956X_PLL_PCIE_PLL_CONFIG_REG 0x14 ++#define QCA956X_PLL_PCIE_PLL_DITHER_DIV_MAX_REG 0x18 ++#define QCA956X_PLL_PCIE_PLL_DITHER_DIV_MIN_REG 0x1c ++#define QCA956X_PLL_SWITCH_CLOCK_SPARE_REG 0x28 ++#define QCA956X_PLL_CURRENT_PCIE_PLL_DITHER_REG 0x2c ++#define QCA956X_PLL_ETH_XMII_REG 0x30 ++#define QCA956X_PLL_BB_PLL_CONFIG_REG 0x34 ++#define QCA956X_PLL_DDR_PLL_DITHER1_REG 0x38 ++#define QCA956X_PLL_DDR_PLL_DITHER2_REG 0x3c ++#define QCA956X_PLL_CPU_PLL_DITHER1_REG 0x40 ++#define QCA956X_PLL_CPU_PLL_DITHER2_REG 0x44 ++#define QCA956X_PLL_ETH_SGMII_REG 0x48 + #define QCA956X_PLL_ETH_SGMII_SERDES_REG 0x4c + + #define QCA956X_PLL_CPU_CONFIG_REFDIV_SHIFT 12 +@@ -1333,24 +1343,39 @@ + * QCA956X GMAC Interface + */ + +-#define QCA956X_GMAC_REG_ETH_CFG 0x00 +-#define QCA956X_GMAC_REG_SGMII_RESET 0x14 +-#define QCA956X_GMAC_REG_SGMII_SERDES 0x18 +-#define QCA956X_GMAC_REG_MR_AN_CONTROL 0x1c +-#define QCA956X_GMAC_REG_SGMII_CONFIG 0x34 +-#define QCA956X_GMAC_REG_SGMII_DEBUG 0x58 +- +-#define QCA956X_ETH_CFG_RGMII_EN BIT(0) ++#define QCA956X_GMAC_REG_ETH_CFG 0x00 ++#define QCA956X_GMAC_REG_SGMII_RESET 0x14 ++#define QCA956X_GMAC_REG_SGMII_SERDES 0x18 ++#define QCA956X_GMAC_REG_MR_AN_CONTROL 0x1c ++#define QCA956X_GMAC_REG_SGMII_CONFIG 0x34 ++#define QCA956X_GMAC_REG_SGMII_MAC_RX_CONFIG 0x38 ++#define QCA956X_GMAC_REG_ETH_SGMII 0x48 ++#define QCA956X_GMAC_REG_SGMII_DEBUG 0x58 ++#define QCA956X_GMAC_REG_SGMII_INTERRUPT 0x5c ++#define QCA956X_GMAC_REG_SGMII_INTERRUPT_MASK 0x60 ++ ++#define QCA956X_ETH_CFG_RGMII_GE0 BIT(0) ++#define QCA956X_ETH_CFG_MII_GE0 BIT(1) ++#define QCA956X_ETH_CFG_GMII_GE0 BIT(2) ++#define QCA956X_ETH_CFG_MII_GE0_MASTER BIT(3) ++#define QCA956X_ETH_CFG_MII_GE0_SLAVE BIT(4) ++#define QCA956X_ETH_CFG_GE0_ERR BIT(5) + #define QCA956X_ETH_CFG_GE0_SGMII BIT(6) + #define QCA956X_ETH_CFG_SW_ONLY_MODE BIT(7) + #define QCA956X_ETH_CFG_SW_PHY_SWAP BIT(8) + #define QCA956X_ETH_CFG_SW_PHY_ADDR_SWAP BIT(9) + #define QCA956X_ETH_CFG_SW_APB_ACCESS BIT(10) ++#define QCA956X_ETH_CFG_MII_CNTL_SPEED BIT(11) ++#define QCA956X_ETH_CFG_RMII_GE0_MASTER BIT(12) + #define QCA956X_ETH_CFG_SW_ACC_MSB_FIRST BIT(13) + #define QCA956X_ETH_CFG_RXD_DELAY_MASK 0x3 + #define QCA956X_ETH_CFG_RXD_DELAY_SHIFT 14 + #define QCA956X_ETH_CFG_RDV_DELAY_MASK 0x3 + #define QCA956X_ETH_CFG_RDV_DELAY_SHIFT 16 ++#define QCA956X_ETH_CFG_TXD_DELAY_MASK 0x3 ++#define QCA956X_ETH_CFG_TXD_DELAY_SHIFT 18 ++#define QCA956X_ETH_CFG_TXE_DELAY_MASK 0x3 ++#define QCA956X_ETH_CFG_TXE_DELAY_SHIFT 20 + + #define QCA956X_SGMII_RESET_RX_CLK_N_RESET 0x0 + #define QCA956X_SGMII_RESET_RX_CLK_N BIT(0) +@@ -1359,25 +1384,87 @@ + #define QCA956X_SGMII_RESET_TX_125M_N BIT(3) + #define QCA956X_SGMII_RESET_HW_RX_125M_N BIT(4) + +-#define QCA956X_SGMII_SERDES_CDR_BW_MASK 0x3 +-#define QCA956X_SGMII_SERDES_CDR_BW_SHIFT 1 +-#define QCA956X_SGMII_SERDES_TX_DR_CTRL_MASK 0x7 +-#define QCA956X_SGMII_SERDES_TX_DR_CTRL_SHIFT 4 +-#define QCA956X_SGMII_SERDES_PLL_BW BIT(8) +-#define QCA956X_SGMII_SERDES_VCO_FAST BIT(9) +-#define QCA956X_SGMII_SERDES_VCO_SLOW BIT(10) +-#define QCA956X_SGMII_SERDES_LOCK_DETECT_STATUS BIT(15) +-#define QCA956X_SGMII_SERDES_EN_SIGNAL_DETECT BIT(16) +-#define QCA956X_SGMII_SERDES_FIBER_SDO BIT(17) +-#define QCA956X_SGMII_SERDES_RES_CALIBRATION_SHIFT 23 +-#define QCA956X_SGMII_SERDES_RES_CALIBRATION_MASK 0xf +-#define QCA956X_SGMII_SERDES_VCO_REG_SHIFT 27 +-#define QCA956X_SGMII_SERDES_VCO_REG_MASK 0xf +- ++#define QCA956X_SGMII_SERDES_RX_IMPEDANCE BIT(0) ++#define QCA956X_SGMII_SERDES_CDR_BW_MASK 0x3 ++#define QCA956X_SGMII_SERDES_CDR_BW_SHIFT 1 ++#define QCA956X_SGMII_SERDES_HALF_TX BIT(3) ++#define QCA956X_SGMII_SERDES_TX_DR_CTRL_MASK 0x7 ++#define QCA956X_SGMII_SERDES_TX_DR_CTRL_SHIFT 4 ++#define QCA956X_SGMII_SERDES_TX_IMPEDANCE BIT(7) ++#define QCA956X_SGMII_SERDES_PLL_BW BIT(8) ++#define QCA956X_SGMII_SERDES_VCO_FAST BIT(9) ++#define QCA956X_SGMII_SERDES_VCO_SLOW BIT(10) ++#define QCA956X_SGMII_SERDES_LOCK_DETECT_STATUS BIT(15) ++#define QCA956X_SGMII_SERDES_EN_SIGNAL_DETECT BIT(16) ++#define QCA956X_SGMII_SERDES_FIBER_SDO BIT(17) ++#define QCA956X_SGMII_SERDES_THRESHOLD_CTRL_SHIFT 18 ++#define QCA956X_SGMII_SERDES_THRESHOLD_CTRL_MASK 0x3 ++#define QCA956X_SGMII_SERDES_FIBER_MODE_SHIFT 20 ++#define QCA956X_SGMII_SERDES_FIBER_MODE_MASK 0x3 ++#define QCA956X_SGMII_SERDES_RES_CALIBRATION_SHIFT 23 ++#define QCA956X_SGMII_SERDES_RES_CALIBRATION_MASK 0xf ++#define QCA956X_SGMII_SERDES_VCO_REG_SHIFT 27 ++#define QCA956X_SGMII_SERDES_VCO_REG_MASK 0xf ++ ++#define QCA956X_MR_AN_CONTROL_SPEED_SEL1 BIT(6) ++#define QCA956X_MR_AN_CONTROL_DUPLEX_MODE BIT(8) ++#define QCA956X_MR_AN_CONTROL_RESTART_AN BIT(9) ++#define QCA956X_MR_AN_CONTROL_POWER_DOWN BIT(11) + #define QCA956X_MR_AN_CONTROL_AN_ENABLE BIT(12) ++#define QCA956X_MR_AN_CONTROL_SPEED_SEL0 BIT(13) ++#define QCA956X_MR_AN_CONTROL_LOOPBACK BIT(14) + #define QCA956X_MR_AN_CONTROL_PHY_RESET BIT(15) + +-#define QCA956X_SGMII_CONFIG_MODE_CTRL_SHIFT 0 +-#define QCA956X_SGMII_CONFIG_MODE_CTRL_MASK 0x7 ++#define QCA956X_SGMII_CONFIG_MODE_CTRL_SHIFT 0 ++#define QCA956X_SGMII_CONFIG_MODE_CTRL_MASK 0x7 ++#define QCA956X_SGMII_CONFIG_ENABLE_SGMII_TX_PAUSE BIT(3) ++#define QCA956X_SGMII_CONFIG_MR_REG4_CHANGED BIT(4) ++#define QCA956X_SGMII_CONFIG_FORCE_SPEED BIT(5) ++#define QCA956X_SGMII_CONFIG_SPEED_SHIFT 6 ++#define QCA956X_SGMII_CONFIG_SPEED_MASK 0x3 ++#define QCA956X_SGMII_CONFIG_REMOTE_PHY_LOOPBACK BIT(8) ++#define QCA956X_SGMII_CONFIG_NEXT_PAGE_LOADED BIT(9) ++#define QCA956X_SGMII_CONFIG_MDIO_ENABLE BIT(10) ++#define QCA956X_SGMII_CONFIG_MDIO_PULSE BIT(11) ++#define QCA956X_SGMII_CONFIG_MDIO_COMPLETE BIT(12) ++#define QCA956X_SGMII_CONFIG_PRBS_ENABLE BIT(13) ++#define QCA956X_SGMII_CONFIG_BERT_ENABLE BIT(14) ++ ++#define QCA956X_SGMII_MAC_RX_CONFIG_RES0 BIT(0) ++#define QCA956X_SGMII_MAC_RX_CONFIG_PAUSE BIT(7) ++#define QCA956X_SGMII_MAC_RX_CONFIG_ASM_PAUSE BIT(8) ++#define QCA956X_SGMII_MAC_RX_CONFIG_SPEED_MODE_SHIFT 10 ++#define QCA956X_SGMII_MAC_RX_CONFIG_SPEED_MODE_MASK 0x3 ++#define QCA956X_SGMII_MAC_RX_CONFIG_DUPLEX_MODE BIT(12) ++#define QCA956X_SGMII_MAC_RX_CONFIG_ACK BIT(14) ++#define QCA956X_SGMII_MAC_RX_CONFIG_LINK BIT(15) ++ ++#define QCA956X_ETH_SGMII_PHASE0_COUNT_SHIFT 0 ++#define QCA956X_ETH_SGMII_PHASE0_COUNT_MASK 0xff ++#define QCA956X_ETH_SGMII_PHASE1_COUNT_SHIFT 8 ++#define QCA956X_ETH_SGMII_PHASE1_COUNT_MASK 0xff ++#define QCA956X_ETH_SGMII_GIGE BIT(24) ++#define QCA956X_ETH_SGMII_CLK_SEL BIT(25) ++#define QCA956X_ETH_SGMII_TX_DELAY_SHIFT 26 ++#define QCA956X_ETH_SGMII_TX_DELAY_MASK 0x3 ++#define QCA956X_ETH_SGMII_RX_DELAY_SHIFT 28 ++#define QCA956X_ETH_SGMII_RX_DELAY_MASK 0x3 ++#define QCA956X_ETH_SGMII_GIGE_QUAD BIT(30) ++#define QCA956X_ETH_SGMII_TX_INVERT BIT(31) ++ ++#define QCA956X_SGMII_DEBUG_TX_STATE_SHIFT 0 ++#define QCA956X_SGMII_DEBUG_TX_STATE_MASK 0xff ++#define QCA956X_SGMII_DEBUG_RX_STATE_SHIFT 8 ++#define QCA956X_SGMII_DEBUG_RX_STATE_MSB 0xff ++#define QCA956X_SGMII_DEBUG_RX_SYNC_STATE_SHIFT 16 ++#define QCA956X_SGMII_DEBUG_RX_SYNC_STATE_MASK 0xff ++#define QCA956X_SGMII_DEBUG_ARB_STATE_SHIFT 24 ++#define QCA956X_SGMII_DEBUG_ARB_STATE_MASK 0xf ++ ++#define QCA956X_SGMII_INTERRUPT_INTR_SHIFT 0 ++#define QCA956X_SGMII_INTERRUPT_INTR_MASK 0xff ++ ++#define QCA956X_SGMII_INTERRUPT_MASK_MASK_SHIFT 0 ++#define QCA956X_SGMII_INTERRUPT_MASK_MASK_MASK 0xff + + #endif /* __ASM_MACH_AR71XX_REGS_H */ diff --git a/target/linux/ath79/patches-5.4/920-qca956x-add-more-registers.patch b/target/linux/ath79/patches-5.4/920-qca956x-add-more-registers.patch new file mode 100644 index 0000000000..946669666f --- /dev/null +++ b/target/linux/ath79/patches-5.4/920-qca956x-add-more-registers.patch @@ -0,0 +1,186 @@ +MIPS: ath79: add lots of missing registers for QCA956x SoCs + +This patch adds many registers and values for QCA956x GMAC interface. + +QCA956X_PLL_SWITCH_CLOCK_CONTROL_REG, QCA956X_PLL_ETH_XMII_CONTROL_REG +and QCA956X_ETH_CFG_RGMII_EN names are fixed to match original names. + +Values are taken from U-Boot 1.1.4 of CAF. + +Signed-off-by: Julien Dusser <julien.dus...@free.fr> +--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h ++++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h +@@ -435,8 +435,18 @@ + #define QCA956X_PLL_DDR_CONFIG_REG 0x08 + #define QCA956X_PLL_DDR_CONFIG1_REG 0x0c + #define QCA956X_PLL_CLK_CTRL_REG 0x10 +-#define QCA956X_PLL_SWITCH_CLOCK_CONTROL_REG 0x28 +-#define QCA956X_PLL_ETH_XMII_CONTROL_REG 0x30 ++#define QCA956X_PLL_PCIE_PLL_CONFIG_REG 0x14 ++#define QCA956X_PLL_PCIE_PLL_DITHER_DIV_MAX_REG 0x18 ++#define QCA956X_PLL_PCIE_PLL_DITHER_DIV_MIN_REG 0x1c ++#define QCA956X_PLL_SWITCH_CLOCK_SPARE_REG 0x28 ++#define QCA956X_PLL_CURRENT_PCIE_PLL_DITHER_REG 0x2c ++#define QCA956X_PLL_ETH_XMII_REG 0x30 ++#define QCA956X_PLL_BB_PLL_CONFIG_REG 0x34 ++#define QCA956X_PLL_DDR_PLL_DITHER1_REG 0x38 ++#define QCA956X_PLL_DDR_PLL_DITHER2_REG 0x3c ++#define QCA956X_PLL_CPU_PLL_DITHER1_REG 0x40 ++#define QCA956X_PLL_CPU_PLL_DITHER2_REG 0x44 ++#define QCA956X_PLL_ETH_SGMII_REG 0x48 + #define QCA956X_PLL_ETH_SGMII_SERDES_REG 0x4c + + #define QCA956X_PLL_CPU_CONFIG_REFDIV_SHIFT 12 +@@ -1330,24 +1340,39 @@ + * QCA956X GMAC Interface + */ + +-#define QCA956X_GMAC_REG_ETH_CFG 0x00 +-#define QCA956X_GMAC_REG_SGMII_RESET 0x14 +-#define QCA956X_GMAC_REG_SGMII_SERDES 0x18 +-#define QCA956X_GMAC_REG_MR_AN_CONTROL 0x1c +-#define QCA956X_GMAC_REG_SGMII_CONFIG 0x34 +-#define QCA956X_GMAC_REG_SGMII_DEBUG 0x58 +- +-#define QCA956X_ETH_CFG_RGMII_EN BIT(0) ++#define QCA956X_GMAC_REG_ETH_CFG 0x00 ++#define QCA956X_GMAC_REG_SGMII_RESET 0x14 ++#define QCA956X_GMAC_REG_SGMII_SERDES 0x18 ++#define QCA956X_GMAC_REG_MR_AN_CONTROL 0x1c ++#define QCA956X_GMAC_REG_SGMII_CONFIG 0x34 ++#define QCA956X_GMAC_REG_SGMII_MAC_RX_CONFIG 0x38 ++#define QCA956X_GMAC_REG_ETH_SGMII 0x48 ++#define QCA956X_GMAC_REG_SGMII_DEBUG 0x58 ++#define QCA956X_GMAC_REG_SGMII_INTERRUPT 0x5c ++#define QCA956X_GMAC_REG_SGMII_INTERRUPT_MASK 0x60 ++ ++#define QCA956X_ETH_CFG_RGMII_GE0 BIT(0) ++#define QCA956X_ETH_CFG_MII_GE0 BIT(1) ++#define QCA956X_ETH_CFG_GMII_GE0 BIT(2) ++#define QCA956X_ETH_CFG_MII_GE0_MASTER BIT(3) ++#define QCA956X_ETH_CFG_MII_GE0_SLAVE BIT(4) ++#define QCA956X_ETH_CFG_GE0_ERR BIT(5) + #define QCA956X_ETH_CFG_GE0_SGMII BIT(6) + #define QCA956X_ETH_CFG_SW_ONLY_MODE BIT(7) + #define QCA956X_ETH_CFG_SW_PHY_SWAP BIT(8) + #define QCA956X_ETH_CFG_SW_PHY_ADDR_SWAP BIT(9) + #define QCA956X_ETH_CFG_SW_APB_ACCESS BIT(10) ++#define QCA956X_ETH_CFG_MII_CNTL_SPEED BIT(11) ++#define QCA956X_ETH_CFG_RMII_GE0_MASTER BIT(12) + #define QCA956X_ETH_CFG_SW_ACC_MSB_FIRST BIT(13) + #define QCA956X_ETH_CFG_RXD_DELAY_MASK 0x3 + #define QCA956X_ETH_CFG_RXD_DELAY_SHIFT 14 + #define QCA956X_ETH_CFG_RDV_DELAY_MASK 0x3 + #define QCA956X_ETH_CFG_RDV_DELAY_SHIFT 16 ++#define QCA956X_ETH_CFG_TXD_DELAY_MASK 0x3 ++#define QCA956X_ETH_CFG_TXD_DELAY_SHIFT 18 ++#define QCA956X_ETH_CFG_TXE_DELAY_MASK 0x3 ++#define QCA956X_ETH_CFG_TXE_DELAY_SHIFT 20 + + #define QCA956X_SGMII_RESET_RX_CLK_N_RESET 0x0 + #define QCA956X_SGMII_RESET_RX_CLK_N BIT(0) +@@ -1356,25 +1381,87 @@ + #define QCA956X_SGMII_RESET_TX_125M_N BIT(3) + #define QCA956X_SGMII_RESET_HW_RX_125M_N BIT(4) + +-#define QCA956X_SGMII_SERDES_CDR_BW_MASK 0x3 +-#define QCA956X_SGMII_SERDES_CDR_BW_SHIFT 1 +-#define QCA956X_SGMII_SERDES_TX_DR_CTRL_MASK 0x7 +-#define QCA956X_SGMII_SERDES_TX_DR_CTRL_SHIFT 4 +-#define QCA956X_SGMII_SERDES_PLL_BW BIT(8) +-#define QCA956X_SGMII_SERDES_VCO_FAST BIT(9) +-#define QCA956X_SGMII_SERDES_VCO_SLOW BIT(10) +-#define QCA956X_SGMII_SERDES_LOCK_DETECT_STATUS BIT(15) +-#define QCA956X_SGMII_SERDES_EN_SIGNAL_DETECT BIT(16) +-#define QCA956X_SGMII_SERDES_FIBER_SDO BIT(17) +-#define QCA956X_SGMII_SERDES_RES_CALIBRATION_SHIFT 23 +-#define QCA956X_SGMII_SERDES_RES_CALIBRATION_MASK 0xf +-#define QCA956X_SGMII_SERDES_VCO_REG_SHIFT 27 +-#define QCA956X_SGMII_SERDES_VCO_REG_MASK 0xf +- ++#define QCA956X_SGMII_SERDES_RX_IMPEDANCE BIT(0) ++#define QCA956X_SGMII_SERDES_CDR_BW_MASK 0x3 ++#define QCA956X_SGMII_SERDES_CDR_BW_SHIFT 1 ++#define QCA956X_SGMII_SERDES_HALF_TX BIT(3) ++#define QCA956X_SGMII_SERDES_TX_DR_CTRL_MASK 0x7 ++#define QCA956X_SGMII_SERDES_TX_DR_CTRL_SHIFT 4 ++#define QCA956X_SGMII_SERDES_TX_IMPEDANCE BIT(7) ++#define QCA956X_SGMII_SERDES_PLL_BW BIT(8) ++#define QCA956X_SGMII_SERDES_VCO_FAST BIT(9) ++#define QCA956X_SGMII_SERDES_VCO_SLOW BIT(10) ++#define QCA956X_SGMII_SERDES_LOCK_DETECT_STATUS BIT(15) ++#define QCA956X_SGMII_SERDES_EN_SIGNAL_DETECT BIT(16) ++#define QCA956X_SGMII_SERDES_FIBER_SDO BIT(17) ++#define QCA956X_SGMII_SERDES_THRESHOLD_CTRL_SHIFT 18 ++#define QCA956X_SGMII_SERDES_THRESHOLD_CTRL_MASK 0x3 ++#define QCA956X_SGMII_SERDES_FIBER_MODE_SHIFT 20 ++#define QCA956X_SGMII_SERDES_FIBER_MODE_MASK 0x3 ++#define QCA956X_SGMII_SERDES_RES_CALIBRATION_SHIFT 23 ++#define QCA956X_SGMII_SERDES_RES_CALIBRATION_MASK 0xf ++#define QCA956X_SGMII_SERDES_VCO_REG_SHIFT 27 ++#define QCA956X_SGMII_SERDES_VCO_REG_MASK 0xf ++ ++#define QCA956X_MR_AN_CONTROL_SPEED_SEL1 BIT(6) ++#define QCA956X_MR_AN_CONTROL_DUPLEX_MODE BIT(8) ++#define QCA956X_MR_AN_CONTROL_RESTART_AN BIT(9) ++#define QCA956X_MR_AN_CONTROL_POWER_DOWN BIT(11) + #define QCA956X_MR_AN_CONTROL_AN_ENABLE BIT(12) ++#define QCA956X_MR_AN_CONTROL_SPEED_SEL0 BIT(13) ++#define QCA956X_MR_AN_CONTROL_LOOPBACK BIT(14) + #define QCA956X_MR_AN_CONTROL_PHY_RESET BIT(15) + +-#define QCA956X_SGMII_CONFIG_MODE_CTRL_SHIFT 0 +-#define QCA956X_SGMII_CONFIG_MODE_CTRL_MASK 0x7 ++#define QCA956X_SGMII_CONFIG_MODE_CTRL_SHIFT 0 ++#define QCA956X_SGMII_CONFIG_MODE_CTRL_MASK 0x7 ++#define QCA956X_SGMII_CONFIG_ENABLE_SGMII_TX_PAUSE BIT(3) ++#define QCA956X_SGMII_CONFIG_MR_REG4_CHANGED BIT(4) ++#define QCA956X_SGMII_CONFIG_FORCE_SPEED BIT(5) ++#define QCA956X_SGMII_CONFIG_SPEED_SHIFT 6 ++#define QCA956X_SGMII_CONFIG_SPEED_MASK 0x3 ++#define QCA956X_SGMII_CONFIG_REMOTE_PHY_LOOPBACK BIT(8) ++#define QCA956X_SGMII_CONFIG_NEXT_PAGE_LOADED BIT(9) ++#define QCA956X_SGMII_CONFIG_MDIO_ENABLE BIT(10) ++#define QCA956X_SGMII_CONFIG_MDIO_PULSE BIT(11) ++#define QCA956X_SGMII_CONFIG_MDIO_COMPLETE BIT(12) ++#define QCA956X_SGMII_CONFIG_PRBS_ENABLE BIT(13) ++#define QCA956X_SGMII_CONFIG_BERT_ENABLE BIT(14) ++ ++#define QCA956X_SGMII_MAC_RX_CONFIG_RES0 BIT(0) ++#define QCA956X_SGMII_MAC_RX_CONFIG_PAUSE BIT(7) ++#define QCA956X_SGMII_MAC_RX_CONFIG_ASM_PAUSE BIT(8) ++#define QCA956X_SGMII_MAC_RX_CONFIG_SPEED_MODE_SHIFT 10 ++#define QCA956X_SGMII_MAC_RX_CONFIG_SPEED_MODE_MASK 0x3 ++#define QCA956X_SGMII_MAC_RX_CONFIG_DUPLEX_MODE BIT(12) ++#define QCA956X_SGMII_MAC_RX_CONFIG_ACK BIT(14) ++#define QCA956X_SGMII_MAC_RX_CONFIG_LINK BIT(15) ++ ++#define QCA956X_ETH_SGMII_PHASE0_COUNT_SHIFT 0 ++#define QCA956X_ETH_SGMII_PHASE0_COUNT_MASK 0xff ++#define QCA956X_ETH_SGMII_PHASE1_COUNT_SHIFT 8 ++#define QCA956X_ETH_SGMII_PHASE1_COUNT_MASK 0xff ++#define QCA956X_ETH_SGMII_GIGE BIT(24) ++#define QCA956X_ETH_SGMII_CLK_SEL BIT(25) ++#define QCA956X_ETH_SGMII_TX_DELAY_SHIFT 26 ++#define QCA956X_ETH_SGMII_TX_DELAY_MASK 0x3 ++#define QCA956X_ETH_SGMII_RX_DELAY_SHIFT 28 ++#define QCA956X_ETH_SGMII_RX_DELAY_MASK 0x3 ++#define QCA956X_ETH_SGMII_GIGE_QUAD BIT(30) ++#define QCA956X_ETH_SGMII_TX_INVERT BIT(31) ++ ++#define QCA956X_SGMII_DEBUG_TX_STATE_SHIFT 0 ++#define QCA956X_SGMII_DEBUG_TX_STATE_MASK 0xff ++#define QCA956X_SGMII_DEBUG_RX_STATE_SHIFT 8 ++#define QCA956X_SGMII_DEBUG_RX_STATE_MSB 0xff ++#define QCA956X_SGMII_DEBUG_RX_SYNC_STATE_SHIFT 16 ++#define QCA956X_SGMII_DEBUG_RX_SYNC_STATE_MASK 0xff ++#define QCA956X_SGMII_DEBUG_ARB_STATE_SHIFT 24 ++#define QCA956X_SGMII_DEBUG_ARB_STATE_MASK 0xf ++ ++#define QCA956X_SGMII_INTERRUPT_INTR_SHIFT 0 ++#define QCA956X_SGMII_INTERRUPT_INTR_MASK 0xff ++ ++#define QCA956X_SGMII_INTERRUPT_MASK_MASK_SHIFT 0 ++#define QCA956X_SGMII_INTERRUPT_MASK_MASK_MASK 0xff + + #endif /* __ASM_MACH_AR71XX_REGS_H */ -- 2.26.2 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel