Add PCIe and reset related registers/bit fields for QCA, plus minor fixes
authorPiotr Dymacz <pepe2k@gmail.com>
Tue, 14 Jun 2016 17:48:34 +0000 (19:48 +0200)
committerPiotr Dymacz <pepe2k@gmail.com>
Tue, 14 Jun 2016 17:48:34 +0000 (19:48 +0200)
u-boot/include/soc/qca_soc_common.h

index ea988158a0d45175c220ddff7af44dd24d26bc21..aa107c85188c99a8d817afb8465b56ce591513e7 100644 (file)
@@ -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
        #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
  */
        #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
  */
 /* 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
        #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)
 
 #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
 #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
        #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
                #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
        (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
 #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)
 #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
  */