mt76: mt7615: implement probing and firmware loading on MT7622
[linux-2.6-microblaze.git] / drivers / net / wireless / mediatek / mt76 / mt7615 / regs.h
index 61a4aa9..abecb3b 100644 (file)
@@ -8,6 +8,10 @@
 #define MT_HW_CHIPID                   0x1008
 #define MT_TOP_STRAP_STA               0x1010
 #define MT_TOP_3NSS                    BIT(24)
+
+#define MT_TOP_OFF_RSV                 0x1128
+#define MT_TOP_OFF_RSV_FW_STATE                GENMASK(18, 16)
+
 #define MT_TOP_MISC2                   0x1134
 #define MT_TOP_MISC2_FW_STATE          GENMASK(2, 0)
 
@@ -37,7 +41,7 @@
 
 #define MT_INT_RX_DONE(_n)             BIT(_n)
 #define MT_INT_RX_DONE_ALL             GENMASK(1, 0)
-#define MT_INT_TX_DONE_ALL             GENMASK(7, 4)
+#define MT_INT_TX_DONE_ALL             GENMASK(19, 4)
 #define MT_INT_TX_DONE(_n)             BIT((_n) + 4)
 
 #define MT_WPDMA_GLO_CFG               MT_HIF(0x208)
@@ -49,6 +53,7 @@
 #define MT_WPDMA_GLO_CFG_TX_WRITEBACK_DONE     BIT(6)
 #define MT_WPDMA_GLO_CFG_BIG_ENDIAN    BIT(7)
 #define MT_WPDMA_GLO_CFG_TX_BT_SIZE_BIT0       BIT(9)
+#define MT_WPDMA_GLO_CFG_BYPASS_TX_SCH         BIT(9) /* MT7622 */
 #define MT_WPDMA_GLO_CFG_MULTI_DMA_EN  GENMASK(11, 10)
 #define MT_WPDMA_GLO_CFG_FIFO_LITTLE_ENDIAN    BIT(12)
 #define MT_WPDMA_GLO_CFG_TX_BT_SIZE_BIT21      GENMASK(23, 22)
 #define MT_WF_PHY_BASE                 0x10000
 #define MT_WF_PHY(ofs)                 (MT_WF_PHY_BASE + (ofs))
 
-#define MT_WF_PHY_WF2_RFCTRL0          MT_WF_PHY(0x1900)
+#define MT_WF_PHY_WF2_RFCTRL0(n)       MT_WF_PHY(0x1900 + (n) * 0x400)
 #define MT_WF_PHY_WF2_RFCTRL0_LPBCN_EN BIT(9)
 
-#define MT_WF_PHY_R0_B0_PHYMUX_5       MT_WF_PHY(0x0614)
+#define MT_WF_PHY_R0_PHYMUX_5(_phy)    MT_WF_PHY(0x0614 + ((_phy) << 9))
 
-#define MT_WF_PHY_R0_B0_PHYCTRL_STS0   MT_WF_PHY(0x020c)
+#define MT_WF_PHY_R0_PHYCTRL_STS0(_phy)        MT_WF_PHY(0x020c + ((_phy) << 9))
 #define MT_WF_PHYCTRL_STAT_PD_OFDM     GENMASK(31, 16)
 #define MT_WF_PHYCTRL_STAT_PD_CCK      GENMASK(15, 0)
 
-#define MT_WF_PHY_R0_B0_PHYCTRL_STS5   MT_WF_PHY(0x0220)
+#define MT_WF_PHY_R0_PHYCTRL_STS5(_phy)        MT_WF_PHY(0x0220 + ((_phy) << 9))
 #define MT_WF_PHYCTRL_STAT_MDRDY_OFDM  GENMASK(31, 16)
 #define MT_WF_PHYCTRL_STAT_MDRDY_CCK   GENMASK(15, 0)
 
-#define MT_WF_PHY_B0_MIN_PRI_PWR       MT_WF_PHY(0x229c)
-#define MT_WF_PHY_B0_PD_OFDM_MASK      GENMASK(28, 20)
-#define MT_WF_PHY_B0_PD_OFDM(v)                ((v) << 20)
-#define MT_WF_PHY_B0_PD_BLK            BIT(19)
+#define MT_WF_PHY_MIN_PRI_PWR(_phy)    MT_WF_PHY((_phy) ? 0x084 : 0x229c)
+#define MT_WF_PHY_PD_OFDM_MASK(_phy)   ((_phy) ? GENMASK(24, 16) : \
+                                        GENMASK(28, 20))
+#define MT_WF_PHY_PD_OFDM(_phy, v)     ((v) << ((_phy) ? 16 : 20))
+#define MT_WF_PHY_PD_BLK(_phy)         ((_phy) ? BIT(25) : BIT(19))
 
-#define MT_WF_PHY_B1_MIN_PRI_PWR       MT_WF_PHY(0x084)
-#define MT_WF_PHY_B1_PD_OFDM_MASK      GENMASK(24, 16)
-#define MT_WF_PHY_B1_PD_OFDM(v)                ((v) << 16)
-#define MT_WF_PHY_B1_PD_BLK            BIT(25)
+#define MT_WF_PHY_RXTD_BASE            MT_WF_PHY(0x2200)
+#define MT_WF_PHY_RXTD(_n)             (MT_WF_PHY_RXTD_BASE + ((_n) << 2))
 
-#define MT_WF_PHY_B0_RXTD_CCK_PD       MT_WF_PHY(0x2310)
-#define MT_WF_PHY_B0_PD_CCK_MASK       GENMASK(8, 1)
-#define MT_WF_PHY_B0_PD_CCK(v)         ((v) << 1)
+#define MT_WF_PHY_RXTD_CCK_PD(_phy)    MT_WF_PHY((_phy) ? 0x2314 : 0x2310)
+#define MT_WF_PHY_PD_CCK_MASK(_phy)    (_phy) ? GENMASK(31, 24) : \
+                                        GENMASK(8, 1)
+#define MT_WF_PHY_PD_CCK(_phy, v)      ((v) << ((_phy) ? 24 : 1))
 
-#define MT_WF_PHY_B1_RXTD_CCK_PD       MT_WF_PHY(0x2314)
-#define MT_WF_PHY_B1_PD_CCK_MASK       GENMASK(31, 24)
-#define MT_WF_PHY_B1_PD_CCK(v)         ((v) << 24)
+#define MT_WF_PHY_RXTD2_BASE           MT_WF_PHY(0x2a00)
+#define MT_WF_PHY_RXTD2(_n)            (MT_WF_PHY_RXTD2_BASE + ((_n) << 2))
 
 #define MT_WF_CFG_BASE                 0x20200
 #define MT_WF_CFG(ofs)                 (MT_WF_CFG_BASE + (ofs))
 #define MT_AGG_ARCR_RATE_DOWN_RATIO_EN BIT(19)
 #define MT_AGG_ARCR_RATE_UP_EXTRA_TH   GENMASK(22, 20)
 
-#define MT_AGG_ARUCR                   MT_WF_AGG(0x018)
-#define MT_AGG_ARDCR                   MT_WF_AGG(0x01c)
+#define MT_AGG_ARUCR(_band)            MT_WF_AGG(0x018 + (_band) * 0x100)
+#define MT_AGG_ARDCR(_band)            MT_WF_AGG(0x01c + (_band) * 0x100)
 #define MT_AGG_ARxCR_LIMIT_SHIFT(_n)   (4 * (_n))
 #define MT_AGG_ARxCR_LIMIT(_n)         GENMASK(2 + \
                                        MT_AGG_ARxCR_LIMIT_SHIFT(_n), \
 #define MT_AGG_ASRCR1                  MT_WF_AGG(0x064)
 #define MT_AGG_ASRCR_RANGE(val, n)     (((val) >> ((n) << 3)) & GENMASK(5, 0))
 
-#define MT_AGG_ACR0                    MT_WF_AGG(0x070)
-#define MT_AGG_ACR1                    MT_WF_AGG(0x170)
+#define MT_AGG_ACR(_band)              MT_WF_AGG(0x070 + (_band) * 0x100)
 #define MT_AGG_ACR_NO_BA_RULE          BIT(0)
 #define MT_AGG_ACR_NO_BA_AR_RULE       BIT(1)
 #define MT_AGG_ACR_PKT_TIME_EN         BIT(2)
 #define MT_AGG_SCR                     MT_WF_AGG(0x0fc)
 #define MT_AGG_SCR_NLNAV_MID_PTEC_DIS  BIT(3)
 
+#define MT_WF_ARB_BASE                 0x20c00
+#define MT_WF_ARB(ofs)                 (MT_WF_ARB_BASE + (ofs))
+
+#define MT_ARB_SCR                     MT_WF_ARB(0x080)
+#define MT_ARB_SCR_TX0_DISABLE         BIT(8)
+#define MT_ARB_SCR_RX0_DISABLE         BIT(9)
+#define MT_ARB_SCR_TX1_DISABLE         BIT(10)
+#define MT_ARB_SCR_RX1_DISABLE         BIT(11)
+
 #define MT_WF_TMAC_BASE                        0x21000
 #define MT_WF_TMAC(ofs)                        (MT_WF_TMAC_BASE + (ofs))
 
-#define MT_TMAC_TRCR0                  MT_WF_TMAC(0x09c)
-#define MT_TMAC_TRCR1                  MT_WF_TMAC(0x070)
+#define MT_TMAC_CDTR                   MT_WF_TMAC(0x090)
+#define MT_TMAC_ODTR                   MT_WF_TMAC(0x094)
+#define MT_TIMEOUT_VAL_PLCP            GENMASK(15, 0)
+#define MT_TIMEOUT_VAL_CCA             GENMASK(31, 16)
+
+#define MT_TMAC_TRCR(_band)            MT_WF_TMAC((_band) ? 0x070 : 0x09c)
 #define MT_TMAC_TRCR_CCA_SEL           GENMASK(31, 30)
 #define MT_TMAC_TRCR_SEC_CCA_SEL       GENMASK(29, 28)
 
+#define MT_TMAC_ICR(_band)             MT_WF_TMAC((_band) ? 0x074 : 0x0a4)
+#define MT_IFS_EIFS                    GENMASK(8, 0)
+#define MT_IFS_RIFS                    GENMASK(14, 10)
+#define MT_IFS_SIFS                    GENMASK(22, 16)
+#define MT_IFS_SLOT                    GENMASK(30, 24)
+
 #define MT_TMAC_CTCR0                  MT_WF_TMAC(0x0f4)
 #define MT_TMAC_CTCR0_INS_DDLMT_REFTIME        GENMASK(5, 0)
 #define MT_TMAC_CTCR0_INS_DDLMT_DENSITY        GENMASK(15, 12)
 #define MT_WF_RMAC_BASE                        0x21200
 #define MT_WF_RMAC(ofs)                        (MT_WF_RMAC_BASE + (ofs))
 
-#define MT_WF_RFCR                     MT_WF_RMAC(0x000)
+#define MT_WF_RFCR(_band)              MT_WF_RMAC((_band) ? 0x100 : 0x000)
 #define MT_WF_RFCR_DROP_STBC_MULTI     BIT(0)
 #define MT_WF_RFCR_DROP_FCSFAIL                BIT(1)
 #define MT_WF_RFCR_DROP_VERSION                BIT(3)
 #define MT_WF_RFCR_DROP_NDPA           BIT(20)
 #define MT_WF_RFCR_DROP_UNWANTED_CTL   BIT(21)
 
-#define MT_WF_RFCR1                    MT_WF_RMAC(0x004)
+#define MT_WF_RFCR1(_band)             MT_WF_RMAC((_band) ? 0x104 : 0x004)
 #define MT_WF_RFCR1_DROP_ACK           BIT(4)
 #define MT_WF_RFCR1_DROP_BF_POLL       BIT(5)
 #define MT_WF_RFCR1_DROP_BA            BIT(6)
 #define MT_WF_RFCR1_DROP_CFEND         BIT(7)
 #define MT_WF_RFCR1_DROP_CFACK         BIT(8)
 
+#define MT_CHFREQ(_band)               MT_WF_RMAC((_band) ? 0x130 : 0x030)
+
 #define MT_WF_RMAC_MIB_TIME0           MT_WF_RMAC(0x03c4)
 #define MT_WF_RMAC_MIB_RXTIME_CLR      BIT(31)
 #define MT_WF_RMAC_MIB_RXTIME_EN       BIT(30)
 #define MT_WF_RMAC_MIB_AIRTIME0                MT_WF_RMAC(0x0380)
 
 #define MT_WF_RMAC_MIB_TIME5           MT_WF_RMAC(0x03d8)
+#define MT_WF_RMAC_MIB_TIME6           MT_WF_RMAC(0x03dc)
 #define MT_MIB_OBSSTIME_MASK           GENMASK(23, 0)
 
 #define MT_WF_DMA_BASE                 0x21800
 #define MT_DMA_DCR0_MAX_RX_LEN         GENMASK(15, 2)
 #define MT_DMA_DCR0_RX_VEC_DROP                BIT(17)
 
-#define MT_DMA_BN0RCFR0                        MT_WF_DMA(0x070)
-#define MT_DMA_BN1RCFR0                        MT_WF_DMA(0x0b0)
+#define MT_DMA_RCFR0(_band)            MT_WF_DMA(0x070 + (_band) * 0x40)
 #define MT_DMA_RCFR0_MCU_RX_MGMT       BIT(2)
 #define MT_DMA_RCFR0_MCU_RX_CTL_NON_BAR        BIT(3)
 #define MT_DMA_RCFR0_MCU_RX_CTL_BAR    BIT(4)
 #define MT_WF_MIB(ofs)                 (MT_WF_MIB_BASE + (ofs))
 
 #define MT_MIB_M0_MISC_CR              MT_WF_MIB(0x00c)
-#define MT_MIB_MB_SDR0(n)              MT_WF_MIB(0x100 + ((n) << 4))
-#define MT_MIB_RTS_RETRIES_COUNT_MASK  GENMASK(31, 16)
-#define MT_MIB_RTS_COUNT_MASK          GENMASK(15, 0)
+
+#define MT_MIB_SDR3(n)                 MT_WF_MIB(0x014 + ((n) << 9))
+#define MT_MIB_SDR3_FCS_ERR_MASK       GENMASK(15, 0)
 
 #define MT_MIB_SDR9(n)                 MT_WF_MIB(0x02c + ((n) << 9))
 #define MT_MIB_SDR9_BUSY_MASK          GENMASK(23, 0)
 #define MT_MIB_SDR37(n)                        MT_WF_MIB(0x09c + ((n) << 9))
 #define MT_MIB_SDR37_RXTIME_MASK       GENMASK(23, 0)
 
+#define MT_MIB_MB_SDR0(_band, n)       MT_WF_MIB(0x100 + ((_band) << 9) + \
+                                                 ((n) << 4))
+#define MT_MIB_RTS_RETRIES_COUNT_MASK  GENMASK(31, 16)
+#define MT_MIB_RTS_COUNT_MASK          GENMASK(15, 0)
+
+#define MT_MIB_MB_SDR1(_band, n)       MT_WF_MIB(0x104 + ((_band) << 9) + \
+                                                 ((n) << 4))
+#define MT_MIB_ACK_FAIL_COUNT_MASK     GENMASK(31, 16)
+
 #define MT_TX_AGG_CNT(n)               MT_WF_MIB(0xa8 + ((n) << 2))
 
+#define MT_DMASHDL_BASE                        0x5000a000
+#define MT_DMASHDL_OPTIONAL            0x008
+#define MT_DMASHDL_PAGE                        0x00c
+
+#define MT_DMASHDL_REFILL              0x010
+
+#define MT_DMASHDL_PKT_MAX_SIZE                0x01c
+#define MT_DMASHDL_PKT_MAX_SIZE_PLE    GENMASK(11, 0)
+#define MT_DMASHDL_PKT_MAX_SIZE_PSE    GENMASK(27, 16)
+
+#define MT_DMASHDL_GROUP_QUOTA(_n)     (0x020 + ((_n) << 2))
+#define MT_DMASHDL_GROUP_QUOTA_MIN     GENMASK(11, 0)
+#define MT_DMASHDL_GROUP_QUOTA_MAX     GENMASK(27, 16)
+
+#define MT_DMASHDL_SCHED_SET0          0x0b0
+#define MT_DMASHDL_SCHED_SET1          0x0b4
+
+#define MT_DMASHDL_Q_MAP(_n)           (0x0d0 + ((_n) << 2))
+#define MT_DMASHDL_Q_MAP_MASK          GENMASK(3, 0)
+#define MT_DMASHDL_Q_MAP_SHIFT(_n)     (4 * ((_n) % 8))
+
+#define MT_LED_BASE_PHYS               0x80024000
+#define MT_LED_PHYS(_n)                        (MT_LED_BASE_PHYS + (_n))
+
+#define MT_LED_CTRL                    MT_LED_PHYS(0x00)
+
+#define MT_LED_CTRL_REPLAY(_n)         BIT(0 + (8 * (_n)))
+#define MT_LED_CTRL_POLARITY(_n)       BIT(1 + (8 * (_n)))
+#define MT_LED_CTRL_TX_BLINK_MODE(_n)  BIT(2 + (8 * (_n)))
+#define MT_LED_CTRL_TX_MANUAL_BLINK(_n)        BIT(3 + (8 * (_n)))
+#define MT_LED_CTRL_TX_OVER_BLINK(_n)  BIT(5 + (8 * (_n)))
+#define MT_LED_CTRL_KICK(_n)           BIT(7 + (8 * (_n)))
+
+#define MT_LED_STATUS_0(_n)            MT_LED_PHYS(0x10 + ((_n) * 8))
+#define MT_LED_STATUS_1(_n)            MT_LED_PHYS(0x14 + ((_n) * 8))
+#define MT_LED_STATUS_OFF              GENMASK(31, 24)
+#define MT_LED_STATUS_ON               GENMASK(23, 16)
+#define MT_LED_STATUS_DURATION         GENMASK(15, 0)
+
 #define MT_EFUSE_BASE                  0x81070000
 #define MT_EFUSE_BASE_CTRL             0x000
 #define MT_EFUSE_BASE_CTRL_EMPTY       BIT(30)
 #define MT_EFUSE_WDATA(_i)             (0x010 + ((_i) * 4))
 #define MT_EFUSE_RDATA(_i)             (0x030 + ((_i) * 4))
 
+/* INFRACFG host register range on MT7622 */
+#define MT_INFRACFG_MISC               0x700
+#define MT_INFRACFG_MISC_AP2CONN_WAKE  BIT(1)
+
 #endif