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

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
...@@ -191,6 +191,7 @@ ...@@ -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
......
...@@ -34,9 +34,14 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah) ...@@ -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");
......
...@@ -799,7 +799,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev) ...@@ -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, ...@@ -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, ...@@ -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;
......
...@@ -245,6 +245,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid) ...@@ -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;
......
...@@ -899,6 +899,7 @@ ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment