aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSujith <Sujith.Manoharan@atheros.com>2010-06-02 06:23:34 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-04 16:00:39 -0400
commitb176286276f85e10e8ab3342730c5e39e1ce460b (patch)
tree0105bb2417902dc2d7a109bf7b66697725f65ab0
parentcbba8cd101c1230284ee46629c841481f7c34b68 (diff)
ath9k_htc: Add support for AR7010
Add the USB device IDs for AR7010 and handle firmware loading properly. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/hif_usb.c15
-rw-r--r--drivers/net/wireless/ath/ath9k/hif_usb.h1
2 files changed, 15 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index 142405ccd6c1..5f3ea7091ae0 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -19,6 +19,7 @@
19static struct usb_device_id ath9k_hif_usb_ids[] = { 19static struct usb_device_id ath9k_hif_usb_ids[] = {
20 { USB_DEVICE(0x0cf3, 0x9271) }, 20 { USB_DEVICE(0x0cf3, 0x9271) },
21 { USB_DEVICE(0x0cf3, 0x1006) }, 21 { USB_DEVICE(0x0cf3, 0x1006) },
22 { USB_DEVICE(0x0cf3, 0x7010) },
22 { }, 23 { },
23}; 24};
24 25
@@ -753,6 +754,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
753 size_t len = hif_dev->firmware->size; 754 size_t len = hif_dev->firmware->size;
754 u32 addr = AR9271_FIRMWARE; 755 u32 addr = AR9271_FIRMWARE;
755 u8 *buf = kzalloc(4096, GFP_KERNEL); 756 u8 *buf = kzalloc(4096, GFP_KERNEL);
757 u32 firm_offset;
756 758
757 if (!buf) 759 if (!buf)
758 return -ENOMEM; 760 return -ENOMEM;
@@ -776,13 +778,18 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
776 } 778 }
777 kfree(buf); 779 kfree(buf);
778 780
781 if (hif_dev->device_id == 0x7010)
782 firm_offset = AR7010_FIRMWARE_TEXT;
783 else
784 firm_offset = AR9271_FIRMWARE_TEXT;
785
779 /* 786 /*
780 * Issue FW download complete command to firmware. 787 * Issue FW download complete command to firmware.
781 */ 788 */
782 err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0), 789 err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0),
783 FIRMWARE_DOWNLOAD_COMP, 790 FIRMWARE_DOWNLOAD_COMP,
784 0x40 | USB_DIR_OUT, 791 0x40 | USB_DIR_OUT,
785 AR9271_FIRMWARE_TEXT >> 8, 0, NULL, 0, HZ); 792 firm_offset >> 8, 0, NULL, 0, HZ);
786 if (err) 793 if (err)
787 return -EIO; 794 return -EIO;
788 795
@@ -876,6 +883,12 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
876 case 0x1006: 883 case 0x1006:
877 hif_dev->fw_name = "ar9271.fw"; 884 hif_dev->fw_name = "ar9271.fw";
878 break; 885 break;
886 case 0x7010:
887 if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
888 hif_dev->fw_name = "ar7010_1_1.fw";
889 else
890 hif_dev->fw_name = "ar7010.fw";
891 break;
879 default: 892 default:
880 break; 893 break;
881 } 894 }
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.h b/drivers/net/wireless/ath/ath9k/hif_usb.h
index b2647e89ad18..2daf97b11c08 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.h
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.h
@@ -19,6 +19,7 @@
19 19
20#define AR9271_FIRMWARE 0x501000 20#define AR9271_FIRMWARE 0x501000
21#define AR9271_FIRMWARE_TEXT 0x903000 21#define AR9271_FIRMWARE_TEXT 0x903000
22#define AR7010_FIRMWARE_TEXT 0x906000
22 23
23#define FIRMWARE_DOWNLOAD 0x30 24#define FIRMWARE_DOWNLOAD 0x30
24#define FIRMWARE_DOWNLOAD_COMP 0x31 25#define FIRMWARE_DOWNLOAD_COMP 0x31