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

Commit ca6cff1f authored by Rajkumar Manoharan's avatar Rajkumar Manoharan Committed by John W. Linville
Browse files

ath9k_htc: load proper firmware for device ID 7015



This patch handles the firmware loading properly
for device ID 7015.

Signed-off-by: default avatarRajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent fe0dbcc9
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -191,6 +191,7 @@
#define AR9287_EEP_NO_BACK_VER       AR9287_EEP_MINOR_VER_1
#define AR9287_EEP_NO_BACK_VER       AR9287_EEP_MINOR_VER_1


#define AR9287_EEP_START_LOC            128
#define AR9287_EEP_START_LOC            128
#define AR9287_HTC_EEP_START_LOC        256
#define AR9287_NUM_2G_CAL_PIERS         3
#define AR9287_NUM_2G_CAL_PIERS         3
#define AR9287_NUM_2G_CCK_TARGET_POWERS 3
#define AR9287_NUM_2G_CCK_TARGET_POWERS 3
#define AR9287_NUM_2G_20_TARGET_POWERS  3
#define AR9287_NUM_2G_20_TARGET_POWERS  3
+6 −1
Original line number Original line Diff line number Diff line
@@ -34,9 +34,14 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah)
	struct ar9287_eeprom *eep = &ah->eeprom.map9287;
	struct ar9287_eeprom *eep = &ah->eeprom.map9287;
	struct ath_common *common = ath9k_hw_common(ah);
	struct ath_common *common = ath9k_hw_common(ah);
	u16 *eep_data;
	u16 *eep_data;
	int addr, eep_start_loc = AR9287_EEP_START_LOC;
	int addr, eep_start_loc;
	eep_data = (u16 *)eep;
	eep_data = (u16 *)eep;


	if (ah->hw_version.devid == 0x7015)
		eep_start_loc = AR9287_HTC_EEP_START_LOC;
	else
		eep_start_loc = AR9287_EEP_START_LOC;

	if (!ath9k_hw_use_flash(ah)) {
	if (!ath9k_hw_use_flash(ah)) {
		ath_print(common, ATH_DBG_EEPROM,
		ath_print(common, ATH_DBG_EEPROM,
			  "Reading from EEPROM, not flash\n");
			  "Reading from EEPROM, not flash\n");
+2 −6
Original line number Original line Diff line number Diff line
@@ -799,7 +799,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
	}
	}
	kfree(buf);
	kfree(buf);


	if (hif_dev->device_id == 0x7010)
	if ((hif_dev->device_id == 0x7010) || (hif_dev->device_id == 0x7015))
		firm_offset = AR7010_FIRMWARE_TEXT;
		firm_offset = AR7010_FIRMWARE_TEXT;
	else
	else
		firm_offset = AR9271_FIRMWARE_TEXT;
		firm_offset = AR9271_FIRMWARE_TEXT;
@@ -901,6 +901,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,


	switch(hif_dev->device_id) {
	switch(hif_dev->device_id) {
	case 0x7010:
	case 0x7010:
	case 0x7015:
	case 0x9018:
	case 0x9018:
		if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
		if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
			hif_dev->fw_name = FIRMWARE_AR7010_1_1;
			hif_dev->fw_name = FIRMWARE_AR7010_1_1;
@@ -912,11 +913,6 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
		break;
		break;
	}
	}


	if (!hif_dev->fw_name) {
		dev_err(&udev->dev, "Can't determine firmware !\n");
		goto err_htc_hw_alloc;
	}

	ret = ath9k_hif_usb_dev_init(hif_dev);
	ret = ath9k_hif_usb_dev_init(hif_dev);
	if (ret) {
	if (ret) {
		ret = -EINVAL;
		ret = -EINVAL;
+1 −0
Original line number Original line Diff line number Diff line
@@ -245,6 +245,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)


	switch(devid) {
	switch(devid) {
	case 0x7010:
	case 0x7010:
	case 0x7015:
	case 0x9018:
	case 0x9018:
		priv->htc->credits = 45;
		priv->htc->credits = 45;
		break;
		break;
+1 −0
Original line number Original line Diff line number Diff line
@@ -899,6 +899,7 @@


#define AR_DEVID_7010(_ah) \
#define AR_DEVID_7010(_ah) \
	(((_ah)->hw_version.devid == 0x7010) || \
	(((_ah)->hw_version.devid == 0x7010) || \
	 ((_ah)->hw_version.devid == 0x7015) || \
	 ((_ah)->hw_version.devid == 0x9018))
	 ((_ah)->hw_version.devid == 0x9018))


#define AR_RADIO_SREV_MAJOR                   0xf0
#define AR_RADIO_SREV_MAJOR                   0xf0