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));
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;
#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