summarylogtreecommitdiffstats
path: root/sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initial...
diff options
context:
space:
mode:
authorTaijian2023-04-30 18:03:18 +0200
committerTaijian2023-04-30 18:03:18 +0200
commit2bbfe28010ae41a3b1c86d9c25a6f290c684d73c (patch)
tree914baa11ce95f6fd7f51e830515f40560539611c /sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch
parentb22e68a9a1b450e86ef9a67dcfaea475633a4f4f (diff)
downloadaur-2bbfe28010ae41a3b1c86d9c25a6f290c684d73c.tar.gz
update to 6.2.12-2
Diffstat (limited to 'sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch')
-rw-r--r--sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch125
1 files changed, 0 insertions, 125 deletions
diff --git a/sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch b/sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch
deleted file mode 100644
index f475476f8832..000000000000
--- a/sys-kernel_arch-sources-g14_files-8013-mt76-mt7921-robustify-hardware-initialization-flow.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From: <sean.wang@mediatek.com>
-To: <nbd@nbd.name>, <lorenzo.bianconi@redhat.com>
-CC: <sean.wang@mediatek.com>, <Soul.Huang@mediatek.com>,
- <YN.Chen@mediatek.com>, <Leon.Yen@mediatek.com>,
- <Eric-SY.Chang@mediatek.com>, <Deren.Wu@mediatek.com>, <km.lin@mediatek.com>,
- <robin.chiu@mediatek.com>, <ch.yeh@mediatek.com>, <posh.sun@mediatek.com>,
- <ted.huang@mediatek.com>, <Eric.Liang@mediatek.com>,
- <Stella.Chang@mediatek.com>, <jemele@google.com>,
- <linux-wireless@vger.kernel.org>, <linux-mediatek@lists.infradead.org>
-Subject: [PATCH 1/2] mt76: mt7921: robustify hardware initialization flow
-Date: Tue, 14 Sep 2021 23:50:21 +0800
-
-From: Sean Wang <sean.wang@mediatek.com>
-
-Robustify hardware initialization in the current driver probing flow
-to get rid of the device is possibly lost after the machine boot due
-to possible firmware abnormal state by trying to recover the failure
-with more chances.
-
-Tested-by: Leon Yen <Leon.Yen@mediatek.com>
-Tested-by: YN Chen <YN.Chen@mediatek.com>
-Signed-off-by: Sean Wang <sean.wang@mediatek.com>
----
- .../net/wireless/mediatek/mt76/mt7921/init.c | 53 ++++++++++++++-----
- .../wireless/mediatek/mt76/mt7921/mt7921.h | 1 +
- 2 files changed, 41 insertions(+), 13 deletions(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-index 1f37e64b6038..d26166a612f0 100644
---- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-+++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-@@ -146,33 +146,60 @@ int mt7921_mac_init(struct mt7921_dev *dev)
- return mt76_connac_mcu_set_rts_thresh(&dev->mt76, 0x92b, 0);
- }
-
--static int mt7921_init_hardware(struct mt7921_dev *dev)
-+static int __mt7921_init_hardware(struct mt7921_dev *dev)
- {
-- int ret, idx;
--
-- ret = mt7921_dma_init(dev);
-- if (ret)
-- return ret;
--
-- set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state);
-+ struct mt76_dev *mdev = &dev->mt76;
-+ int ret;
-
- /* 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 = mt7921_mcu_init(dev);
- if (ret)
-- return ret;
-+ goto out;
-
- ret = mt7921_eeprom_init(dev);
-- if (ret < 0)
-- return ret;
-+ if (ret)
-+ goto out;
-
- ret = mt7921_mcu_set_eeprom(dev);
-+ if (ret)
-+ goto out;
-+
-+ ret = mt7921_mac_init(dev);
-+out:
-+ if (ret && mdev->eeprom.data) {
-+ devm_kfree(mdev->dev, mdev->eeprom.data);
-+ mdev->eeprom.data = NULL;
-+ }
-+
-+ return ret;
-+}
-+
-+static int mt7921_init_hardware(struct mt7921_dev *dev)
-+{
-+ int ret, idx, i;
-+
-+ ret = mt7921_dma_init(dev);
- if (ret)
- return ret;
-
-+ set_bit(MT76_STATE_INITIALIZED, &dev->mphy.state);
-+
-+ for (i = 0; i < MT7921_MCU_INIT_RETRY_COUNT; i++) {
-+ ret = __mt7921_init_hardware(dev);
-+ if (!ret)
-+ break;
-+
-+ mt7921_wpdma_reset(dev, true);
-+ }
-+
-+ if (i == MT7921_MCU_INIT_RETRY_COUNT) {
-+ dev_err(dev->mt76.dev, "hardware init failed\n");
-+ return ret;
-+ }
-+
- /* Beacon and mgmt frames should occupy wcid 0 */
- idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7921_WTBL_STA - 1);
- if (idx)
-@@ -183,7 +210,7 @@ static int mt7921_init_hardware(struct mt7921_dev *dev)
- dev->mt76.global_wcid.tx_info |= MT_WCID_TX_INFO_SET;
- rcu_assign_pointer(dev->mt76.wcid[idx], &dev->mt76.global_wcid);
-
-- return mt7921_mac_init(dev);
-+ return 0;
- }
-
- int mt7921_register_device(struct mt7921_dev *dev)
-diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
-index 6a47ba65b96e..cee7a2507224 100644
---- a/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
-+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
-@@ -29,6 +29,7 @@
- #define MT7921_RX_MCU_RING_SIZE 512
-
- #define MT7921_DRV_OWN_RETRY_COUNT 10
-+#define MT7921_MCU_INIT_RETRY_COUNT 10
-
- #define MT7921_FIRMWARE_WM "mediatek/WIFI_RAM_CODE_MT7961_1.bin"
- #define MT7921_ROM_PATCH "mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin"