From 38e28f6af2bc523d253bff19075e52595bf69301 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Tue, 14 Jun 2016 19:48:34 +0200 Subject: [PATCH] Add PCIe and reset related registers/bit fields for QCA, plus minor fixes --- u-boot/include/soc/qca_soc_common.h | 161 ++++++++++++++++++++++++++-- 1 file changed, 152 insertions(+), 9 deletions(-) diff --git a/u-boot/include/soc/qca_soc_common.h b/u-boot/include/soc/qca_soc_common.h index ea98815..aa107c8 100644 --- a/u-boot/include/soc/qca_soc_common.h +++ b/u-boot/include/soc/qca_soc_common.h @@ -21,6 +21,7 @@ */ #define QCA_APB_BASE_REG 0x18000000 #define QCA_FLASH_BASE_REG 0x1F000000 +#define QCA_PCIE_BASE_REG 0x10000000 /* * APB block @@ -41,6 +42,8 @@ #define QCA_GMAC_BASE_REG QCA_APB_BASE_REG + 0x00070000 #define QCA_RTC_BASE_REG QCA_APB_BASE_REG + 0x00107000 #define QCA_PLL_SRIF_BASE_REG QCA_APB_BASE_REG + 0x00116000 +#define QCA_PCIE_RC0_CTRL_BASE_REG QCA_APB_BASE_REG + 0x000F0000 +#define QCA_PCIE_RC1_CTRL_BASE_REG QCA_APB_BASE_REG + 0x00280000 #if (SOC_TYPE & QCA_AR933X_SOC) #define QCA_SLIC_BASE_REG QCA_APB_BASE_REG + 0x00090000 @@ -49,6 +52,12 @@ #define QCA_SLIC_BASE_REG QCA_APB_BASE_REG + 0x000A9000 #endif +/* + * PCIE bridge address space + */ +#define QCA_PCIE_RC0_SLAVE_CFG_BASE_REG QCA_PCIE_BASE_REG + 0x04000000 +#define QCA_PCIE_RC1_SLAVE_CFG_BASE_REG QCA_PCIE_BASE_REG + 0x06000000 + /* * DDR registers */ @@ -1472,6 +1481,14 @@ #define QCA_RST_BOOTSTRAP_REG QCA_RST_BASE_REG + 0xB0 #endif +#if (SOC_TYPE & QCA_QCA956X_SOC) + #define QCA_RST_MISC2_REG QCA_RST_BASE_REG + 0xB8 + #define QCA_RST_RESET2_REG QCA_RST_BASE_REG + 0xC0 +#else + #define QCA_RST_MISC2_REG QCA_RST_BASE_REG + 0xBC + #define QCA_RST_RESET2_REG QCA_RST_BASE_REG + 0xC4 +#endif + /* * Reset control registers BIT fields */ @@ -1479,6 +1496,8 @@ /* RST_BOOTSTRAP (Reset bootstrap) */ #if (SOC_TYPE & QCA_AR933X_SOC) #define QCA_RST_BOOTSTRAP_REF_CLK_SHIFT 0 +#elif (SOC_TYPE & QCA_QCA956X_SOC) + #define QCA_RST_BOOTSTRAP_REF_CLK_SHIFT 2 #else #define QCA_RST_BOOTSTRAP_REF_CLK_SHIFT 4 #endif @@ -1519,6 +1538,8 @@ #define QCA_RST_BOOTSTRAP_DDR_WIDTH_32_MASK BIT(QCA_RST_BOOTSTRAP_DDR_WIDTH_32_SHIFT) #define QCA_RST_BOOTSTRAP_JTAG_MODE_SHIFT 5 #define QCA_RST_BOOTSTRAP_JTAG_MODE_MASK BIT(QCA_RST_BOOTSTRAP_JTAG_MODE_SHIFT) + #define QCA_RST_BOOTSTRAP_PCIE_RC_MODE_SHIFT 6 + #define QCA_RST_BOOTSTRAP_PCIE_RC_MODE_MASK BIT(QCA_RST_BOOTSTRAP_PCIE_RC_MODE_SHIFT) #define QCA_RST_BOOTSTRAP_USB_MODE_DEV_SHIFT 7 #define QCA_RST_BOOTSTRAP_USB_MODE_DEV_MASK BIT(QCA_RST_BOOTSTRAP_USB_MODE_DEV_SHIFT) @@ -1528,12 +1549,20 @@ #endif /* RST_RESET */ -#define QCA_RST_RESET_I2C_RST_SHIFT 0 -#define QCA_RST_RESET_I2C_RST_MASK BIT(QCA_RST_RESET_I2C_RST_SHIFT) +#if (SOC_TYPE & QCA_QCA956X_SOC) + #define QCA_RST_RESET_ETH_SWITCH_RST_SHIFT 0 + #define QCA_RST_RESET_ETH_SWITCH_RST_MASK BIT(QCA_RST_RESET_ETH_SWITCH_RST_SHIFT) + #define QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT 2 + #define QCA_RST_RESET_ETH_SWITCH_ARST_MASK BIT(QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT) +#else + #define QCA_RST_RESET_I2S_RST_SHIFT 0 + #define QCA_RST_RESET_I2S_RST_MASK BIT(QCA_RST_RESET_I2S_RST_SHIFT) + #define QCA_RST_RESET_LUT_RST_SHIFT 2 + #define QCA_RST_RESET_LUT_RST_MASK BIT(QCA_RST_RESET_LUT_RST_SHIFT) +#endif + #define QCA_RST_RESET_MBOX_RST_SHIFT 1 #define QCA_RST_RESET_MBOX_RST_MASK BIT(QCA_RST_RESET_MBOX_RST_SHIFT) -#define QCA_RST_RESET_LUT_RST_SHIFT 2 -#define QCA_RST_RESET_LUT_RST_MASK BIT(QCA_RST_RESET_LUT_RST_SHIFT) #define QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_SHIFT 3 #define QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_MASK BIT(QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_SHIFT) #define QCA_RST_RESET_USB_PHY_RST_SHIFT 4 @@ -1554,7 +1583,8 @@ #define QCA_RST_RESET_PCIE_PHY_RST_SHIFT 7 #define QCA_RST_RESET_PCIE_PHY_RST_MASK BIT(QCA_RST_RESET_PCIE_PHY_RST_SHIFT) -#if (SOC_TYPE & QCA_QCA955X_SOC) +#if (SOC_TYPE & QCA_QCA955X_SOC) |\ + (SOC_TYPE & QCA_QCA956X_SOC) #define QCA_RST_RESET_ETH_SGMII_RST_SHIFT 8 #define QCA_RST_RESET_ETH_SGMII_RST_MASK BIT(QCA_RST_RESET_ETH_SGMII_RST_SHIFT) #else @@ -1579,7 +1609,8 @@ #define QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT 14 #define QCA_RST_RESET_ETH_SWITCH_ARST_MASK BIT(QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT) #else - #if (SOC_TYPE & QCA_QCA955X_SOC) + #if (SOC_TYPE & QCA_QCA955X_SOC) |\ + (SOC_TYPE & QCA_QCA956X_SOC) #define QCA_RST_RESET_ETH_SGMII_ARST_SHIFT 12 #define QCA_RST_RESET_ETH_SGMII_ARST_MASK BIT(QCA_RST_RESET_ETH_SGMII_ARST_SHIFT) #else @@ -1587,8 +1618,8 @@ #define QCA_RST_RESET_ETH_SWITCH_ARST_MASK BIT(QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT) #endif - #define QCA_RST_RESET_NANDF_RST_SHIFT 14 - #define QCA_RST_RESET_NANDF_RST_MASK BIT(QCA_RST_RESET_NANDF_RST_SHIFT) + #define QCA_RST_RESET_NAND_FLASH_RST_SHIFT 14 + #define QCA_RST_RESET_NAND_FLASH_RST_MASK BIT(QCA_RST_RESET_NAND_FLASH_RST_SHIFT) #endif #define QCA_RST_RESET_GE1_MAC_RST_SHIFT 13 @@ -1626,7 +1657,7 @@ (SOC_TYPE & QCA_QCA955X_SOC) #define QCA_RST_RESET_HOST_DMA_RST_SHIFT 29 #define QCA_RST_RESET_HOST_DMA_RST_MASK BIT(QCA_RST_RESET_HOST_DMA_RST_SHIFT) -#else +#elif (SOC_TYPE & QCA_QCA953X_SOC) #define QCA_RST_RESET_USB_EXT_PWR_SHIFT 29 #define QCA_RST_RESET_USB_EXT_PWR_MASK BIT(QCA_RST_RESET_USB_EXT_PWR_SHIFT) #endif @@ -1634,6 +1665,30 @@ #define QCA_RST_RESET_HOST_DMA_RST_STATUS_SHIFT 31 #define QCA_RST_RESET_HOST_DMA_RST_STATUS_MASK BIT(QCA_RST_RESET_HOST_DMA_RST_STATUS_SHIFT) +/* RST_RESET2 (QCA955x and QCA956x only) */ +#define QCA_RST_RESET2_USB2_MODE_DEV_SHIFT 0 +#define QCA_RST_RESET2_USB2_MODE_DEV_MASK BIT(QCA_RST_RESET2_USB2_MODE_DEV_SHIFT) +#define QCA_RST_RESET2_USB2_PHY_SUSPEND_ORIDE_SHIFT 3 +#define QCA_RST_RESET2_USB2_PHY_SUSPEND_ORIDE_MASK BIT(QCA_RST_RESET2_USB2_PHY_SUSPEND_ORIDE_SHIFT) +#define QCA_RST_RESET2_USB2_PHY_RST_SHIFT 4 +#define QCA_RST_RESET2_USB2_PHY_RST_MASK BIT(QCA_RST_RESET2_USB2_PHY_RST_SHIFT) +#define QCA_RST_RESET2_USB2_HOST_RST_SHIFT 5 +#define QCA_RST_RESET2_USB2_HOST_RST_MASK BIT(QCA_RST_RESET2_USB2_HOST_RST_SHIFT) +#define QCA_RST_RESET2_PCIE2_RST_SHIFT 6 +#define QCA_RST_RESET2_PCIE2_RST_MASK BIT(QCA_RST_RESET2_PCIE2_RST_SHIFT) +#define QCA_RST_RESET2_PCIE2_PHY_RST_SHIFT 7 +#define QCA_RST_RESET2_PCIE2_PHY_RST_MASK BIT(QCA_RST_RESET2_PCIE2_PHY_RST_SHIFT) +#define QCA_RST_RESET2_USB2_PHY_ARST_SHIFT 11 +#define QCA_RST_RESET2_USB2_PHY_ARST_MASK BIT(QCA_RST_RESET2_USB2_PHY_ARST_SHIFT) +#define QCA_RST_RESET2_USB2_PHY_PLLPWD_EXT_SHIFT 15 +#define QCA_RST_RESET2_USB2_PHY_PLLPWD_EXT_MASK BIT(QCA_RST_RESET2_USB2_PHY_PLLPWD_EXT_SHIFT) +#define QCA_RST_RESET2_USB_EXT_PWR_SHIFT 16 +#define QCA_RST_RESET2_USB_EXT_PWR_MASK BIT(QCA_RST_RESET2_USB_EXT_PWR_SHIFT) +#define QCA_RST_RESET2_USB2_EXT_PWR_SHIFT 17 +#define QCA_RST_RESET2_USB2_EXT_PWR_MASK BIT(QCA_RST_RESET2_USB2_EXT_PWR_SHIFT) +#define QCA_RST_RESET2_EP_MODE_SHIFT 18 +#define QCA_RST_RESET2_EP_MODE_MASK BIT(QCA_RST_RESET2_EP_MODE_SHIFT) + /* RST_REVISION_ID (Chip revision ID) */ #define QCA_RST_REVISION_ID_MAJOR_SHIFT 4 #define QCA_RST_REVISION_ID_MAJOR_MASK BITS(QCA_RST_REVISION_ID_MAJOR_SHIFT, 12) @@ -1654,6 +1709,94 @@ #define QCA_RST_REVISION_ID_MAJOR_QCA953X_V2_VAL 0x0160 #define QCA_RST_REVISION_ID_MAJOR_QCA9558_VAL 0x1130 +/* RST_MISC2 register (Miscellaneous CPU control bits) */ +#define QCA_RST_MISC2_PERSTN_RCPHY_SHIFT 13 +#define QCA_RST_MISC2_PERSTN_RCPHY_MASK BIT(QCA_RST_MISC2_PERSTN_RCPHY_SHIFT) +#define QCA_RST_MISC2_PERSTN_RCPHY2_SHIFT 14 +#define QCA_RST_MISC2_PERSTN_RCPHY2_MASK BIT(QCA_RST_MISC2_PERSTN_RCPHY2_SHIFT) + +/* + * PCIE RC control registers + */ +#define QCA_PCIE_RC0_CTRL_APP_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x00 +#define QCA_PCIE_RC1_CTRL_APP_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x00 +#define QCA_PCIE_RC0_CTRL_AER_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x04 +#define QCA_PCIE_RC1_CTRL_AER_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x04 +#define QCA_PCIE_RC0_CTRL_PWR_MGMT_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x08 +#define QCA_PCIE_RC1_CTRL_PWR_MGMT_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x08 +#define QCA_PCIE_RC0_CTRL_ELEC_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x0C +#define QCA_PCIE_RC1_CTRL_ELEC_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x0C +#define QCA_PCIE_RC0_CTRL_CFG_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x10 +#define QCA_PCIE_RC1_CTRL_CFG_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x10 +#define QCA_PCIE_RC0_CTRL_RX_CNTL_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x14 +#define QCA_PCIE_RC1_CTRL_RX_CNTL_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x14 +#define QCA_PCIE_RC0_CTRL_RST_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x18 +#define QCA_PCIE_RC1_CTRL_RST_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x18 +#define QCA_PCIE_RC0_CTRL_DBG_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x1C +#define QCA_PCIE_RC1_CTRL_DBG_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x1C +#define QCA_PCIE_RC0_CTRL_PHY_RW_DATA_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x24 +#define QCA_PCIE_RC1_CTRL_PHY_RW_DATA_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x24 +#define QCA_PCIE_RC0_CTRL_PHY_TRG_RD_LOAD_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x28 +#define QCA_PCIE_RC1_CTRL_PHY_TRG_RD_LOAD_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x28 +#define QCA_PCIE_RC0_CTRL_PHY_CFG_DATA_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x2C +#define QCA_PCIE_RC1_CTRL_PHY_CFG_DATA_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x2C +#define QCA_PCIE_RC0_CTRL_MAC_PHY_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x30 +#define QCA_PCIE_RC1_CTRL_MAC_PHY_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x30 +#define QCA_PCIE_RC0_CTRL_PHY_MAC_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x34 +#define QCA_PCIE_RC1_CTRL_PHY_MAC_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x34 +#define QCA_PCIE_RC0_CTRL_SIDEBAND1_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x38 +#define QCA_PCIE_RC1_CTRL_SIDEBAND1_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x38 +#define QCA_PCIE_RC0_CTRL_SIDEBAND2_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x3C +#define QCA_PCIE_RC1_CTRL_SIDEBAND2_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x3C +#define QCA_PCIE_RC0_CTRL_SPARE_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x40 +#define QCA_PCIE_RC1_CTRL_SPARE_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x40 +#define QCA_PCIE_RC0_CTRL_MSI_ADDR_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x44 +#define QCA_PCIE_RC1_CTRL_MSI_ADDR_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x44 +#define QCA_PCIE_RC0_CTRL_MSI_DATA_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x48 +#define QCA_PCIE_RC1_CTRL_MSI_DATA_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x48 +#define QCA_PCIE_RC0_CTRL_INT_STATUS_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x4C +#define QCA_PCIE_RC1_CTRL_INT_STATUS_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x4C +#define QCA_PCIE_RC0_CTRL_INT_MASK_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x50 +#define QCA_PCIE_RC1_CTRL_INT_MASK_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x50 +#define QCA_PCIE_RC0_CTRL_ERR_CNT_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x54 +#define QCA_PCIE_RC1_CTRL_ERR_CNT_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x54 +#define QCA_PCIE_RC0_CTRL_REQ_LAT_INT_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x58 +#define QCA_PCIE_RC1_CTRL_REQ_LAT_INT_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x58 +#define QCA_PCIE_RC0_CTRL_MISC_REG QCA_PCIE_RC0_CTRL_BASE_REG + 0x5C +#define QCA_PCIE_RC1_CTRL_MISC_REG QCA_PCIE_RC1_CTRL_BASE_REG + 0x5C + +/* + * PCIE RC control registers BIT fields + */ + +/* PCIE_APP register (PCIE application control) */ +#define QCA_PCIE_RCX_CTRL_APP_LTSSM_EN_SHIFT 0 +#define QCA_PCIE_RCX_CTRL_APP_LTSSM_EN_MASK BIT(QCA_PCIE_RCX_CTRL_APP_LTSSM_EN_SHIFT) +#define QCA_PCIE_RCX_CTRL_APP_UNLOCK_MSG_SHIFT 1 +#define QCA_PCIE_RCX_CTRL_APP_UNLOCK_MSG_MASK BIT(QCA_PCIE_RCX_CTRL_APP_UNLOCK_MSG_SHIFT) +#define QCA_PCIE_RCX_CTRL_APP_PM_XMT_TURNOFF_SHIFT 2 +#define QCA_PCIE_RCX_CTRL_APP_PM_XMT_TURNOFF_MASK BIT(QCA_PCIE_RCX_CTRL_APP_PM_XMT_TURNOFF_SHIFT) +#define QCA_PCIE_RCX_CTRL_APP_INIT_RST_SHIFT 3 +#define QCA_PCIE_RCX_CTRL_APP_INIT_RST_MASK BIT(QCA_PCIE_RCX_CTRL_APP_INIT_RST_SHIFT) +#define QCA_PCIE_RCX_CTRL_APP_MASTER_RESP_ERR_MAP_SHIFT 4 +#define QCA_PCIE_RCX_CTRL_APP_MASTER_RESP_ERR_MAP_MASK BITS(QCA_PCIE_RCX_CTRL_APP_MASTER_RESP_ERR_MAP_SHIFT, 2) +#define QCA_PCIE_RCX_CTRL_APP_SLAVE_RESP_ERR_MAP_SHIFT 6 +#define QCA_PCIE_RCX_CTRL_APP_SLAVE_RESP_ERR_MAP_MASK BITS(QCA_PCIE_RCX_CTRL_APP_SLAVE_RESP_ERR_MAP_SHIFT, 6) +#define QCA_PCIE_RCX_CTRL_APP_CFG_BE_SHIFT 12 +#define QCA_PCIE_RCX_CTRL_APP_CFG_BE_MASK BITS(QCA_PCIE_RCX_CTRL_APP_CFG_BE_SHIFT, 4) +#define QCA_PCIE_RCX_CTRL_APP_BAR_MSN_SHIFT 16 +#define QCA_PCIE_RCX_CTRL_APP_BAR_MSN_MASK BITS(QCA_PCIE_RCX_CTRL_APP_BAR_MSN_SHIFT, 4) +#define QCA_PCIE_RCX_CTRL_APP_CFG_TYPE_SHIFT 20 +#define QCA_PCIE_RCX_CTRL_APP_CFG_TYPE_MASK BITS(QCA_PCIE_RCX_CTRL_APP_CFG_TYPE_SHIFT, 2) + +/* PCIE_RESET register (PCIE reset) */ +#define QCA_PCIE_RCX_CTRL_RST_LINK_UP_SHIFT 0 +#define QCA_PCIE_RCX_CTRL_RST_LINK_UP_MASK BIT(QCA_PCIE_RCX_CTRL_RST_LINK_UP_SHIFT) +#define QCA_PCIE_RCX_CTRL_RST_LINK_REQ_RST_SHIFT 1 +#define QCA_PCIE_RCX_CTRL_RST_LINK_REQ_RST_MASK BIT(QCA_PCIE_RCX_CTRL_RST_LINK_REQ_RST_SHIFT) +#define QCA_PCIE_RCX_CTRL_RST_EP_RST_L_SHIFT 2 +#define QCA_PCIE_RCX_CTRL_RST_EP_RST_L_MASK BIT(QCA_PCIE_RCX_CTRL_RST_EP_RST_L_SHIFT) + /* * RTC registers */ -- 2.25.1