|
@@ -22,15 +22,21 @@
|
|
|
|
|
|
#define USB_VERSION "1.0"
|
|
#define USB_VERSION "1.0"
|
|
|
|
|
|
-static const char usbdriver_name[] = "usb8797";
|
|
|
|
|
|
+static const char usbdriver_name[] = "usb8xxx";
|
|
|
|
|
|
static struct mwifiex_if_ops usb_ops;
|
|
static struct mwifiex_if_ops usb_ops;
|
|
static struct semaphore add_remove_card_sem;
|
|
static struct semaphore add_remove_card_sem;
|
|
static struct usb_card_rec *usb_card;
|
|
static struct usb_card_rec *usb_card;
|
|
|
|
|
|
static struct usb_device_id mwifiex_usb_table[] = {
|
|
static struct usb_device_id mwifiex_usb_table[] = {
|
|
- {USB_DEVICE(USB8797_VID, USB8797_PID_1)},
|
|
|
|
- {USB_DEVICE_AND_INTERFACE_INFO(USB8797_VID, USB8797_PID_2,
|
|
|
|
|
|
+ /* 8797 */
|
|
|
|
+ {USB_DEVICE(USB8XXX_VID, USB8797_PID_1)},
|
|
|
|
+ {USB_DEVICE_AND_INTERFACE_INFO(USB8XXX_VID, USB8797_PID_2,
|
|
|
|
+ USB_CLASS_VENDOR_SPEC,
|
|
|
|
+ USB_SUBCLASS_VENDOR_SPEC, 0xff)},
|
|
|
|
+ /* 8897 */
|
|
|
|
+ {USB_DEVICE(USB8XXX_VID, USB8897_PID_1)},
|
|
|
|
+ {USB_DEVICE_AND_INTERFACE_INFO(USB8XXX_VID, USB8897_PID_2,
|
|
USB_CLASS_VENDOR_SPEC,
|
|
USB_CLASS_VENDOR_SPEC,
|
|
USB_SUBCLASS_VENDOR_SPEC, 0xff)},
|
|
USB_SUBCLASS_VENDOR_SPEC, 0xff)},
|
|
{ } /* Terminating entry */
|
|
{ } /* Terminating entry */
|
|
@@ -343,10 +349,20 @@ static int mwifiex_usb_probe(struct usb_interface *intf,
|
|
id_vendor, id_product, bcd_device);
|
|
id_vendor, id_product, bcd_device);
|
|
|
|
|
|
/* PID_1 is used for firmware downloading only */
|
|
/* PID_1 is used for firmware downloading only */
|
|
- if (id_product == USB8797_PID_1)
|
|
|
|
- card->usb_boot_state = USB8797_FW_DNLD;
|
|
|
|
- else
|
|
|
|
- card->usb_boot_state = USB8797_FW_READY;
|
|
|
|
|
|
+ switch (id_product) {
|
|
|
|
+ case USB8797_PID_1:
|
|
|
|
+ case USB8897_PID_1:
|
|
|
|
+ card->usb_boot_state = USB8XXX_FW_DNLD;
|
|
|
|
+ break;
|
|
|
|
+ case USB8797_PID_2:
|
|
|
|
+ case USB8897_PID_2:
|
|
|
|
+ card->usb_boot_state = USB8XXX_FW_READY;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ pr_warning("unknown id_product %#x\n", id_product);
|
|
|
|
+ card->usb_boot_state = USB8XXX_FW_DNLD;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
|
|
card->udev = udev;
|
|
card->udev = udev;
|
|
card->intf = intf;
|
|
card->intf = intf;
|
|
@@ -755,9 +771,20 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter)
|
|
|
|
|
|
card->adapter = adapter;
|
|
card->adapter = adapter;
|
|
adapter->dev = &card->udev->dev;
|
|
adapter->dev = &card->udev->dev;
|
|
- strcpy(adapter->fw_name, USB8797_DEFAULT_FW_NAME);
|
|
|
|
usb_card = card;
|
|
usb_card = card;
|
|
|
|
|
|
|
|
+ switch (le16_to_cpu(card->udev->descriptor.idProduct)) {
|
|
|
|
+ case USB8897_PID_1:
|
|
|
|
+ case USB8897_PID_2:
|
|
|
|
+ strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME);
|
|
|
|
+ break;
|
|
|
|
+ case USB8797_PID_1:
|
|
|
|
+ case USB8797_PID_2:
|
|
|
|
+ default:
|
|
|
|
+ strcpy(adapter->fw_name, USB8797_DEFAULT_FW_NAME);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -773,7 +800,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter,
|
|
{
|
|
{
|
|
int ret = 0;
|
|
int ret = 0;
|
|
u8 *firmware = fw->fw_buf, *recv_buff;
|
|
u8 *firmware = fw->fw_buf, *recv_buff;
|
|
- u32 retries = USB8797_FW_MAX_RETRY, dlen;
|
|
|
|
|
|
+ u32 retries = USB8XXX_FW_MAX_RETRY, dlen;
|
|
u32 fw_seqnum = 0, tlen = 0, dnld_cmd = 0;
|
|
u32 fw_seqnum = 0, tlen = 0, dnld_cmd = 0;
|
|
struct fw_data *fwdata;
|
|
struct fw_data *fwdata;
|
|
struct fw_sync_header sync_fw;
|
|
struct fw_sync_header sync_fw;
|
|
@@ -875,7 +902,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter,
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- retries = USB8797_FW_MAX_RETRY;
|
|
|
|
|
|
+ retries = USB8XXX_FW_MAX_RETRY;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
fw_seqnum++;
|
|
fw_seqnum++;
|
|
@@ -899,13 +926,13 @@ static int mwifiex_usb_dnld_fw(struct mwifiex_adapter *adapter,
|
|
int ret;
|
|
int ret;
|
|
struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
|
|
struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
|
|
|
|
|
|
- if (card->usb_boot_state == USB8797_FW_DNLD) {
|
|
|
|
|
|
+ if (card->usb_boot_state == USB8XXX_FW_DNLD) {
|
|
ret = mwifiex_prog_fw_w_helper(adapter, fw);
|
|
ret = mwifiex_prog_fw_w_helper(adapter, fw);
|
|
if (ret)
|
|
if (ret)
|
|
return -1;
|
|
return -1;
|
|
|
|
|
|
/* Boot state changes after successful firmware download */
|
|
/* Boot state changes after successful firmware download */
|
|
- if (card->usb_boot_state == USB8797_FW_DNLD)
|
|
|
|
|
|
+ if (card->usb_boot_state == USB8XXX_FW_DNLD)
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1039,4 +1066,5 @@ MODULE_AUTHOR("Marvell International Ltd.");
|
|
MODULE_DESCRIPTION("Marvell WiFi-Ex USB Driver version" USB_VERSION);
|
|
MODULE_DESCRIPTION("Marvell WiFi-Ex USB Driver version" USB_VERSION);
|
|
MODULE_VERSION(USB_VERSION);
|
|
MODULE_VERSION(USB_VERSION);
|
|
MODULE_LICENSE("GPL v2");
|
|
MODULE_LICENSE("GPL v2");
|
|
-MODULE_FIRMWARE("mrvl/usb8797_uapsta.bin");
|
|
|
|
|
|
+MODULE_FIRMWARE(USB8797_DEFAULT_FW_NAME);
|
|
|
|
+MODULE_FIRMWARE(USB8897_DEFAULT_FW_NAME);
|