From bab866a01e4f038adda1a10922a693f4d3a4782c Mon Sep 17 00:00:00 2001 From: Chih-Min Chen Date: Fri, 4 Sep 2020 13:51:02 +0800 Subject: [PATCH] mt76: mt7915: fix unexpected firmware mode Avoid firmware falling into spectrum mode since that will set unexpected PSE/PLE thresholds which lead to Tx hang. This mode should be cleaned before firmware download stage. Signed-off-by: Chih-Min Chen Signed-off-by: Ryder Lee Signed-off-by: Felix Fietkau --- mt7915/init.c | 6 ++++++ mt7915/regs.h | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/mt7915/init.c b/mt7915/init.c index be3c8253..7a0dd791 100644 --- a/mt7915/init.c +++ b/mt7915/init.c @@ -137,6 +137,12 @@ static int mt7915_init_hardware(struct mt7915_dev *dev) set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state); + /* + * force firmware operation mode into normal state, + * which should be set before firmware download stage. + */ + mt76_wr(dev, MT_SWDEF_MODE, MT_SWDEF_NORMAL_MODE); + ret = mt7915_mcu_init(dev); if (ret) return ret; diff --git a/mt7915/regs.h b/mt7915/regs.h index 17d713b0..d69fae51 100644 --- a/mt7915/regs.h +++ b/mt7915/regs.h @@ -365,6 +365,13 @@ #define MT_HIF_REMAP_L2_BASE GENMASK(31, 12) #define MT_HIF_REMAP_BASE_L2 0x00000 +#define MT_SWDEF_BASE 0x41f200 +#define MT_SWDEF(ofs) (MT_SWDEF_BASE + (ofs)) +#define MT_SWDEF_MODE MT_SWDEF(0x3c) +#define MT_SWDEF_NORMAL_MODE 0 +#define MT_SWDEF_ICAP_MODE 1 +#define MT_SWDEF_SPECTRUM_MODE 2 + #define MT_TOP_BASE 0x18060000 #define MT_TOP(ofs) (MT_TOP_BASE + (ofs))