Skip to content
Snippets Groups Projects
Select Git revision
  • d87c4b521b2e891155241c01b98a7ac90a8883b9
  • v2018.2.x default protected
  • 0x4A6F-rpi4
  • 0x4A6F-master
  • master
  • v2018.2.2-ffs
  • v2016.2.4-batmanbug
  • radv-filterd
  • v2016.2.x
  • hoodselector
  • v2016.1.x
  • babel
  • v2015.1.x
  • 2014.4.x
  • 2014.3.x
  • v2018.2.2-ffs0.1
  • v2018.2.1-ffs0.1
  • v2018.2.1
  • v2018.2-ffs0.1
  • v2018.2
  • v2018.1.4
  • v2018.1.3
  • v2018.1.2
  • v2018.1.1
  • v2018.1
  • v2017.1.8
  • v2017.1.7
  • v2017.1.6
  • v2017.1.5
  • v2017.1.4
  • v2017.1.3
  • v2017.1.2
  • v2016.2.7
  • v2017.1.1
  • v2017.1
35 results

modules

Blame
  • Forked from firmware / FFS Gluon
    Source project has a limited visibility.
    0010-mt76-import-MT7915-recovery-fixes.patch 4.87 KiB
    From: David Bauer <mail@david-bauer.net>
    Date: Mon, 13 Jan 2025 11:52:37 +0100
    Subject: mt76: import MT7915 recovery fixes
    
    diff --git a/package/kernel/mt76/patches/0001-mt7915-mcu-lower-default-timeout.patch b/package/kernel/mt76/patches/0001-mt7915-mcu-lower-default-timeout.patch
    new file mode 100644
    index 0000000000000000000000000000000000000000..f05d6b830f6c323e8e0dce4ebaf1cc9689f43c86
    --- /dev/null
    +++ b/package/kernel/mt76/patches/0001-mt7915-mcu-lower-default-timeout.patch
    @@ -0,0 +1,32 @@
    +From 0a577333e89f49fd29f07b70d4d865d221451ac0 Mon Sep 17 00:00:00 2001
    +From: David Bauer <mail@david-bauer.net>
    +Date: Mon, 13 Jan 2025 08:48:41 +0100
    +Subject: [PATCH 1/3] mt7915: mcu: lower default timeout
    +
    +The default timeout set in mt76_connac2_mcu_fill_message of 20 seconds
    +leads to excessive stalling in case messages are lost.
    +
    +Testing showed that a much smaller timeout of 3 seconds is sufficient
    +in normal operation.
    +
    +Signed-off-by: David Bauer <mail@david-bauer.net>
    +---
    + mt7915/mcu.c | 2 ++
    + 1 file changed, 2 insertions(+)
    +
    +diff --git a/mt7915/mcu.c b/mt7915/mcu.c
    +index 9d790f23..809d8f99 100644
    +--- a/mt7915/mcu.c
    ++++ b/mt7915/mcu.c
    +@@ -197,6 +197,8 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,
    + static void
    + mt7915_mcu_set_timeout(struct mt76_dev *mdev, int cmd)
    + {
    ++	mdev->mcu.timeout = 3 * HZ;
    ++
    + 	if ((cmd & __MCU_CMD_FIELD_ID) != MCU_CMD_EXT_CID)
    + 		return;
    + 
    +-- 
    +2.45.2
    +
    diff --git a/package/kernel/mt76/patches/0002-mt7915-mcu-increase-command-timeout.patch b/package/kernel/mt76/patches/0002-mt7915-mcu-increase-command-timeout.patch
    new file mode 100644
    index 0000000000000000000000000000000000000000..2aedb9fd791912dd2800074762e316ad27f41d90
    --- /dev/null
    +++ b/package/kernel/mt76/patches/0002-mt7915-mcu-increase-command-timeout.patch
    @@ -0,0 +1,34 @@
    +From 49894f4ce805ccb73fe0a09c53ffcc8aeaf712b5 Mon Sep 17 00:00:00 2001
    +From: David Bauer <mail@david-bauer.net>
    +Date: Mon, 13 Jan 2025 08:51:30 +0100
    +Subject: [PATCH 2/3] mt7915: mcu: increase command timeout
    +
    +Increase the timeout for MCU_EXT_CMD_EFUSE_BUFFER_MODE as
    +well as MCU_EXT_CMD_TXBF_ACTION command types.
    +
    +Regular retries upon hardware-recovery have been observed. Increasing
    +the timeout slightly remedies this problem.
    +
    +Signed-off-by: David Bauer <mail@david-bauer.net>
    +---
    + mt7915/mcu.c | 4 ++++
    + 1 file changed, 4 insertions(+)
    +
    +diff --git a/mt7915/mcu.c b/mt7915/mcu.c
    +index 809d8f99..f3e9f9f0 100644
    +--- a/mt7915/mcu.c
    ++++ b/mt7915/mcu.c
    +@@ -210,6 +210,10 @@ mt7915_mcu_set_timeout(struct mt76_dev *mdev, int cmd)
    + 	case MCU_EXT_CMD_BSS_INFO_UPDATE:
    + 		mdev->mcu.timeout = 2 * HZ;
    + 		return;
    ++	case MCU_EXT_CMD_EFUSE_BUFFER_MODE:
    ++	case MCU_EXT_CMD_TXBF_ACTION:
    ++		mdev->mcu.timeout = 5 * HZ;
    ++		return;
    + 	default:
    + 		break;
    + 	}
    +-- 
    +2.45.2
    +
    diff --git a/package/kernel/mt76/patches/0003-mt7915-mcu-re-init-MCU-before-loading-FW-patch.patch b/package/kernel/mt76/patches/0003-mt7915-mcu-re-init-MCU-before-loading-FW-patch.patch
    new file mode 100644
    index 0000000000000000000000000000000000000000..c97d4b1d6fd61f3c231dee6971dd019561c313f3
    --- /dev/null
    +++ b/package/kernel/mt76/patches/0003-mt7915-mcu-re-init-MCU-before-loading-FW-patch.patch
    @@ -0,0 +1,55 @@
    +From 1177b55da6fbc3d095383b3bcfe4ac741985dbff Mon Sep 17 00:00:00 2001
    +From: David Bauer <mail@david-bauer.net>
    +Date: Sun, 12 Jan 2025 15:30:54 +0100
    +Subject: [PATCH 3/3] mt7915: mcu: re-init MCU before loading FW patch
    +
    +Restart the MCU and release the patch semaphore before loading the MCU
    +patch firmware from the host.
    +
    +This fixes failures upon error recovery in case the semaphore was
    +previously taken and never released by the host.
    +
    +Signed-off-by: David Bauer <mail@david-bauer.net>
    +---
    + mt7915/mcu.c | 25 +++++++++++++++----------
    + 1 file changed, 15 insertions(+), 10 deletions(-)
    +
    +diff --git a/mt7915/mcu.c b/mt7915/mcu.c
    +index f3e9f9f0..e03292a8 100644
    +--- a/mt7915/mcu.c
    ++++ b/mt7915/mcu.c
    +@@ -2098,16 +2098,21 @@ static int mt7915_load_firmware(struct mt7915_dev *dev)
    + {
    + 	int ret;
    + 
    +-	/* make sure fw is download state */
    +-	if (mt7915_firmware_state(dev, false)) {
    +-		/* restart firmware once */
    +-		mt76_connac_mcu_restart(&dev->mt76);
    +-		ret = mt7915_firmware_state(dev, false);
    +-		if (ret) {
    +-			dev_err(dev->mt76.dev,
    +-				"Firmware is not ready for download\n");
    +-			return ret;
    +-		}
    ++	/* Release Semaphore if taken by previous failed attempt */
    ++	ret = mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false);
    ++	if (ret != PATCH_REL_SEM_SUCCESS) {
    ++		dev_err(dev->mt76.dev, "Could not release semaphore\n");
    ++		/* Continue anyways */
    ++	}
    ++
    ++	/* Always restart MCU firmware */
    ++	mt76_connac_mcu_restart(&dev->mt76);
    ++
    ++	/* Check if MCU is ready */
    ++	ret = mt7915_firmware_state(dev, false);
    ++	if (ret) {
    ++		dev_err(dev->mt76.dev, "Firmware did not enter download state\n");
    ++		return ret;
    + 	}
    + 
    + 	ret = mt76_connac2_load_patch(&dev->mt76, fw_name_var(dev, ROM_PATCH));
    +-- 
    +2.45.2
    +