]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt7601u: check multiple firmware paths
authorChristian Hewitt <christianshewitt@gmail.com>
Sat, 27 Dec 2025 11:22:19 +0000 (11:22 +0000)
committerFelix Fietkau <nbd@nbd.name>
Mon, 23 Mar 2026 09:21:25 +0000 (09:21 +0000)
The linux-firmware repo moved mt7601u.bin from its root folder to
the mediatek sub-folder some time ago, but the driver still tries
to load firmware from the old location. Users might have firmware
in either location so update the driver to check both.

Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Link: https://patch.msgid.link/20251227112219.2768439-1-christianshewitt@gmail.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt7601u/mcu.c
drivers/net/wireless/mediatek/mt7601u/usb.h

index 1b5cc271a9e1bdad4bb3590515506a581f3e7cbf..bad6ca8214003a22db6604003fc046efb5910d0e 100644 (file)
@@ -403,12 +403,18 @@ error:
        return ret;
 }
 
+static const char * const mt7601u_fw_paths[] = {
+       "mediatek/" MT7601U_FIRMWARE,
+       MT7601U_FIRMWARE,
+};
+
 static int mt7601u_load_firmware(struct mt7601u_dev *dev)
 {
        const struct firmware *fw;
        const struct mt76_fw_header *hdr;
        int len, ret;
        u32 val;
+       int i;
 
        mt7601u_wr(dev, MT_USB_DMA_CFG, (MT_USB_DMA_CFG_RX_BULK_EN |
                                         MT_USB_DMA_CFG_TX_BULK_EN));
@@ -416,7 +422,14 @@ static int mt7601u_load_firmware(struct mt7601u_dev *dev)
        if (firmware_running(dev))
                return firmware_request_cache(dev->dev, MT7601U_FIRMWARE);
 
-       ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev);
+       /* Try loading firmware from multiple locations */
+       fw = NULL;
+       for (i = 0; i < MT7601U_FIRMWARE_PATHS; i++) {
+               ret = request_firmware(&fw, mt7601u_fw_paths[i], dev->dev);
+               if (ret == 0)
+                       break;
+       }
+
        if (ret)
                return ret;
 
index 9fdf35970339b0a40f0e7f38b2f59546db7826ce..723025f84483e4796605e42c96360c12863278e1 100644 (file)
@@ -9,6 +9,7 @@
 #include "mt7601u.h"
 
 #define MT7601U_FIRMWARE       "mt7601u.bin"
+#define MT7601U_FIRMWARE_PATHS ARRAY_SIZE(mt7601u_fw_paths)
 
 #define MT_VEND_REQ_MAX_RETRY  10
 #define MT_VEND_REQ_TOUT_MS    300