Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4730140 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt76x0: align mt76x0u and mt76x0e fw version



Unify firmware version used on mt76x0e and mt76x0u drivers.
Fallback to mt7610u fw if mt7610e one is not available

Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 64c6a54a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@
#define MT7610E_FIRMWARE		"mediatek/mt7610e.bin"
#define MT7650E_FIRMWARE		"mediatek/mt7650e.bin"

#define MT7610U_FIRMWARE		"mediatek/mt7610u.bin"

#define MT_USB_AGGR_SIZE_LIMIT		21 /* * 1024B */
#define MT_USB_AGGR_TIMEOUT		0x80 /* * 33ns */

+2 −0
Original line number Diff line number Diff line
@@ -337,6 +337,8 @@ static int __maybe_unused mt76x0_resume(struct usb_interface *usb_intf)
}

MODULE_DEVICE_TABLE(usb, mt76x0_device_table);
MODULE_FIRMWARE(MT7610E_FIRMWARE);
MODULE_FIRMWARE(MT7610U_FIRMWARE);
MODULE_LICENSE("GPL");

static struct usb_driver mt76x0_driver = {
+19 −4
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@

#define MCU_FW_URB_MAX_PAYLOAD		0x38f8
#define MCU_FW_URB_SIZE			(MCU_FW_URB_MAX_PAYLOAD + 12)
#define MT7610U_FIRMWARE		"mediatek/mt7610u.bin"

static int
mt76x0u_upload_firmware(struct mt76x02_dev *dev,
@@ -75,6 +74,24 @@ mt76x0u_upload_firmware(struct mt76x02_dev *dev,
	return err;
}

static int mt76x0_get_firmware(struct mt76x02_dev *dev,
			       const struct firmware **fw)
{
	int err;

	/* try to load mt7610e fw if available
	 * otherwise fall back to mt7610u one
	 */
	err = firmware_request_nowarn(fw, MT7610E_FIRMWARE, dev->mt76.dev);
	if (err) {
		dev_info(dev->mt76.dev, "%s not found, switching to %s",
			 MT7610E_FIRMWARE, MT7610U_FIRMWARE);
		return request_firmware(fw, MT7610U_FIRMWARE,
					dev->mt76.dev);
	}
	return 0;
}

static int mt76x0u_load_firmware(struct mt76x02_dev *dev)
{
	const struct firmware *fw;
@@ -88,7 +105,7 @@ static int mt76x0u_load_firmware(struct mt76x02_dev *dev)
	if (mt76x0_firmware_running(dev))
		return 0;

	ret = request_firmware(&fw, MT7610U_FIRMWARE, dev->mt76.dev);
	ret = mt76x0_get_firmware(dev, &fw);
	if (ret)
		return ret;

@@ -171,5 +188,3 @@ int mt76x0u_mcu_init(struct mt76x02_dev *dev)

	return 0;
}

MODULE_FIRMWARE(MT7610U_FIRMWARE);