aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanoharan@atheros.com>2010-08-13 09:06:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-13 13:46:20 -0400
commitca6cff1f80f30cc6313a943339361ad6f9e76548 (patch)
treefdbc896961b96bab7dba33232d4c0dc361e145a2 /drivers
parentfe0dbcc9d2e941328b3269dab102b94ad697ade5 (diff)
ath9k_htc: load proper firmware for device ID 7015
This patch handles the firmware loading properly for device ID 7015. Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom.h1
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_9287.c7
-rw-r--r--drivers/net/wireless/ath/ath9k/hif_usb.c8
-rw-r--r--drivers/net/wireless/ath/ath9k/htc_drv_init.c1
-rw-r--r--drivers/net/wireless/ath/ath9k/reg.h1
5 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath9k/eeprom.h b/drivers/net/wireless/ath/ath9k/eeprom.h
index 8750c558c221..7f48df1e2903 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom.h
+++ b/drivers/net/wireless/ath/ath9k/eeprom.h
@@ -191,6 +191,7 @@
191#define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_1 191#define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_1
192 192
193#define AR9287_EEP_START_LOC 128 193#define AR9287_EEP_START_LOC 128
194#define AR9287_HTC_EEP_START_LOC 256
194#define AR9287_NUM_2G_CAL_PIERS 3 195#define AR9287_NUM_2G_CAL_PIERS 3
195#define AR9287_NUM_2G_CCK_TARGET_POWERS 3 196#define AR9287_NUM_2G_CCK_TARGET_POWERS 3
196#define AR9287_NUM_2G_20_TARGET_POWERS 3 197#define AR9287_NUM_2G_20_TARGET_POWERS 3
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index 4a52cf03808b..dff2da777312 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
@@ -34,9 +34,14 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah)
34 struct ar9287_eeprom *eep = &ah->eeprom.map9287; 34 struct ar9287_eeprom *eep = &ah->eeprom.map9287;
35 struct ath_common *common = ath9k_hw_common(ah); 35 struct ath_common *common = ath9k_hw_common(ah);
36 u16 *eep_data; 36 u16 *eep_data;
37 int addr, eep_start_loc = AR9287_EEP_START_LOC; 37 int addr, eep_start_loc;
38 eep_data = (u16 *)eep; 38 eep_data = (u16 *)eep;
39 39
40 if (ah->hw_version.devid == 0x7015)
41 eep_start_loc = AR9287_HTC_EEP_START_LOC;
42 else
43 eep_start_loc = AR9287_EEP_START_LOC;
44
40 if (!ath9k_hw_use_flash(ah)) { 45 if (!ath9k_hw_use_flash(ah)) {
41 ath_print(common, ATH_DBG_EEPROM, 46 ath_print(common, ATH_DBG_EEPROM,
42 "Reading from EEPROM, not flash\n"); 47 "Reading from EEPROM, not flash\n");
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index 61c1bee3f26a..17e7a9a367e7 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -799,7 +799,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
799 } 799 }
800 kfree(buf); 800 kfree(buf);
801 801
802 if (hif_dev->device_id == 0x7010) 802 if ((hif_dev->device_id == 0x7010) || (hif_dev->device_id == 0x7015))
803 firm_offset = AR7010_FIRMWARE_TEXT; 803 firm_offset = AR7010_FIRMWARE_TEXT;
804 else 804 else
805 firm_offset = AR9271_FIRMWARE_TEXT; 805 firm_offset = AR9271_FIRMWARE_TEXT;
@@ -901,6 +901,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
901 901
902 switch(hif_dev->device_id) { 902 switch(hif_dev->device_id) {
903 case 0x7010: 903 case 0x7010:
904 case 0x7015:
904 case 0x9018: 905 case 0x9018:
905 if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202) 906 if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
906 hif_dev->fw_name = FIRMWARE_AR7010_1_1; 907 hif_dev->fw_name = FIRMWARE_AR7010_1_1;
@@ -912,11 +913,6 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
912 break; 913 break;
913 } 914 }
914 915
915 if (!hif_dev->fw_name) {
916 dev_err(&udev->dev, "Can't determine firmware !\n");
917 goto err_htc_hw_alloc;
918 }
919
920 ret = ath9k_hif_usb_dev_init(hif_dev); 916 ret = ath9k_hif_usb_dev_init(hif_dev);
921 if (ret) { 917 if (ret) {
922 ret = -EINVAL; 918 ret = -EINVAL;
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index 148b43317fdb..2d4279191d7a 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -245,6 +245,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
245 245
246 switch(devid) { 246 switch(devid) {
247 case 0x7010: 247 case 0x7010:
248 case 0x7015:
248 case 0x9018: 249 case 0x9018:
249 priv->htc->credits = 45; 250 priv->htc->credits = 45;
250 break; 251 break;
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h
index 633e3d949ec0..d01c4adab8d6 100644
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -899,6 +899,7 @@
899 899
900#define AR_DEVID_7010(_ah) \ 900#define AR_DEVID_7010(_ah) \
901 (((_ah)->hw_version.devid == 0x7010) || \ 901 (((_ah)->hw_version.devid == 0x7010) || \
902 ((_ah)->hw_version.devid == 0x7015) || \
902 ((_ah)->hw_version.devid == 0x9018)) 903 ((_ah)->hw_version.devid == 0x9018))
903 904
904#define AR_RADIO_SREV_MAJOR 0xf0 905#define AR_RADIO_SREV_MAJOR 0xf0