From a3605647dcea83f53b24bd172daccf5f4bfc28d1 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 7 Dec 2015 12:49:55 +0100 Subject: [PATCH] mac rx/tx disable handling Signed-off-by: Felix Fietkau --- mt7603_init.c | 9 +++++++++ mt7603_regs.h | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/mt7603_init.c b/mt7603_init.c index 69af7a04..af572dfb 100644 --- a/mt7603_init.c +++ b/mt7603_init.c @@ -41,6 +41,11 @@ wait_for_wpdma(struct mt7603_dev *dev) static int mt7603_mac_reset(struct mt7603_dev *dev) { + /* Disable MAC */ + mt76_set(dev, MT_WF_ARB_SCR, MT_WF_ARB_TX_DISABLE | MT_WF_ARB_RX_DISABLE); + mt76_wr(dev, MT_WF_ARB_TQCR0, 0); + mt76_clear(dev, MT_WF_ARB_RQCR, MT_WF_ARB_RQCR_RX_START); + mt76_wr(dev, MT_WPDMA_GLO_CFG, 0x52000850); mt76_rmw(dev, MT_DMA_DCR0, 0xffff, 0xc0211000); @@ -54,6 +59,10 @@ mt7603_mac_reset(struct mt7603_dev *dev) mt76_set(dev, MT_WF_RMAC_RMACDR, BIT(30)); mt76_rmw(dev, MT_WF_RMAC_MAXMINLEN, 0xffffff, 0x19000); + mt76_clear(dev, MT_WF_ARB_SCR, MT_WF_ARB_TX_DISABLE | MT_WF_ARB_RX_DISABLE); + mt76_wr(dev, MT_WF_ARB_TQCR0, ~0); + mt76_set(dev, MT_WF_ARB_RQCR, MT_WF_ARB_RQCR_RX_START); + return 0; } diff --git a/mt7603_regs.h b/mt7603_regs.h index 73360824..be268d3e 100644 --- a/mt7603_regs.h +++ b/mt7603_regs.h @@ -81,6 +81,21 @@ #define MT_DMA_VCFR0 MT_WF_DMA(0x07c) #define MT_DMA_TMCFR0 MT_WF_DMA(0x088) +#define MT_WF_ARB_BASE 0x21400 +#define MT_WF_ARB(ofs) (MT_WF_ARB_BASE + (ofs)) + +#define MT_WF_ARB_RQCR MT_WF_ARB(0x070) +#define MT_WF_ARB_RQCR_RX_START BIT(0) +#define MT_WF_ARB_RQCR_RXV_START BIT(4) +#define MT_WF_ARB_RQCR_RXV_R_EN BIT(7) +#define MT_WF_ARB_RQCR_RXV_T_EN BIT(8) + +#define MT_WF_ARB_SCR MT_WF_ARB(0x080) +#define MT_WF_ARB_TX_DISABLE BIT(8) +#define MT_WF_ARB_RX_DISABLE BIT(9) + +#define MT_WF_ARB_TQCR0 MT_WF_ARB(0x100) + #define MT_WF_RMAC_BASE 0x21800 #define MT_WF_RMAC(ofs) (MT_WF_RMAC_BASE + (ofs)) #define MT_WF_RMAC_RMACDR MT_WF_RMAC(0x078)