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

Commit 70aa8da2 authored by Anantha Krishnan's avatar Anantha Krishnan Committed by Gerrit - the friendly Code Review server
Browse files

bluetooth: Check FW status before downloading the firmware



As part of firmware download process, query the firmware for
the RamPatch and NVM download status. Download the firmware
only if the Firmware says they are not done.

CRs-Fixed: 667416
Change-Id: I842b527991c2e973a747c84a87a4e2bdbe7434b2
Signed-off-by: default avatarAnantha Krishnan <ananthk@codeaurora.org>
Signed-off-by: default avatarRupesh Tatiya <rtatiya@codeaurora.org>
parent b6796134
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -56,8 +56,10 @@
#define ATH3K_MODE_MASK				0x3F
#define ATH3K_NORMAL_MODE			0x0E

#define ATH3K_PATCH_UPDATE			0x80
#define ATH3K_SYSCFG_UPDATE			0x40
#define ATH3K_PATCH_UPDATE			0xA0
#define ATH3K_SYSCFG_UPDATE			0x60
#define ATH3K_PATCH_SYSCFG_UPDATE		(ATH3K_PATCH_UPDATE | \
							ATH3K_SYSCFG_UPDATE)

#define ATH3K_XTAL_FREQ_26M			0x00
#define ATH3K_XTAL_FREQ_40M			0x01
@@ -449,10 +451,13 @@ static int ath3k_load_patch(struct usb_device *udev)
		return ret;
	}

	if (fw_state & ATH3K_PATCH_UPDATE) {
		BT_DBG("Patch was already downloaded");
	if ((fw_state == ATH3K_PATCH_UPDATE) ||
		(fw_state == ATH3K_PATCH_SYSCFG_UPDATE)) {
		BT_INFO("%s: Patch already downloaded(fw_state: %d)", __func__,
			fw_state);
		return 0;
	}
	BT_DBG("Downloading RamPatch(fw_state: %d)", fw_state);

	ret = ath3k_get_version(udev, &fw_version);
	if (ret < 0) {
@@ -533,6 +538,14 @@ static int ath3k_load_syscfg(struct usb_device *udev)
		return -EBUSY;
	}

	if ((fw_state == ATH3K_SYSCFG_UPDATE) ||
		(fw_state == ATH3K_PATCH_SYSCFG_UPDATE)) {
		BT_INFO("%s: NVM already downloaded(fw_state: %d)", __func__,
			fw_state);
		return 0;
	}
	BT_DBG("Downloading NVM(fw_state: %d)", fw_state);

	ret = ath3k_get_version(udev, &fw_version);
	if (ret < 0) {
		BT_ERR("Can't get version to change to load ram patch err");