diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 297 |
1 files changed, 112 insertions, 185 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index d27d7d5d850c..0f8b84b7224c 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
@@ -400,60 +400,16 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
400 | struct txentry_desc *txdesc) | 400 | struct txentry_desc *txdesc) |
401 | { | 401 | { |
402 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 402 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
403 | __le32 *txi = skbdesc->desc; | 403 | __le32 *txi = (__le32 *)(skb->data - TXWI_DESC_SIZE - TXINFO_DESC_SIZE); |
404 | __le32 *txwi = &txi[TXINFO_DESC_SIZE / sizeof(__le32)]; | ||
405 | u32 word; | 404 | u32 word; |
406 | 405 | ||
407 | /* | 406 | /* |
408 | * Initialize TX Info descriptor | 407 | * Initialize TXWI descriptor |
409 | */ | 408 | */ |
410 | rt2x00_desc_read(txwi, 0, &word); | 409 | rt2800_write_txwi(skb, txdesc); |
411 | rt2x00_set_field32(&word, TXWI_W0_FRAG, | ||
412 | test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags)); | ||
413 | rt2x00_set_field32(&word, TXWI_W0_MIMO_PS, 0); | ||
414 | rt2x00_set_field32(&word, TXWI_W0_CF_ACK, 0); | ||
415 | rt2x00_set_field32(&word, TXWI_W0_TS, | ||
416 | test_bit(ENTRY_TXD_REQ_TIMESTAMP, &txdesc->flags)); | ||
417 | rt2x00_set_field32(&word, TXWI_W0_AMPDU, | ||
418 | test_bit(ENTRY_TXD_HT_AMPDU, &txdesc->flags)); | ||
419 | rt2x00_set_field32(&word, TXWI_W0_MPDU_DENSITY, txdesc->mpdu_density); | ||
420 | rt2x00_set_field32(&word, TXWI_W0_TX_OP, txdesc->ifs); | ||
421 | rt2x00_set_field32(&word, TXWI_W0_MCS, txdesc->mcs); | ||
422 | rt2x00_set_field32(&word, TXWI_W0_BW, | ||
423 | test_bit(ENTRY_TXD_HT_BW_40, &txdesc->flags)); | ||
424 | rt2x00_set_field32(&word, TXWI_W0_SHORT_GI, | ||
425 | test_bit(ENTRY_TXD_HT_SHORT_GI, &txdesc->flags)); | ||
426 | rt2x00_set_field32(&word, TXWI_W0_STBC, txdesc->stbc); | ||
427 | rt2x00_set_field32(&word, TXWI_W0_PHYMODE, txdesc->rate_mode); | ||
428 | rt2x00_desc_write(txwi, 0, word); | ||
429 | |||
430 | rt2x00_desc_read(txwi, 1, &word); | ||
431 | rt2x00_set_field32(&word, TXWI_W1_ACK, | ||
432 | test_bit(ENTRY_TXD_ACK, &txdesc->flags)); | ||
433 | rt2x00_set_field32(&word, TXWI_W1_NSEQ, | ||
434 | test_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags)); | ||
435 | rt2x00_set_field32(&word, TXWI_W1_BW_WIN_SIZE, txdesc->ba_size); | ||
436 | rt2x00_set_field32(&word, TXWI_W1_WIRELESS_CLI_ID, | ||
437 | test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ? | ||
438 | txdesc->key_idx : 0xff); | ||
439 | rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT, | ||
440 | skb->len - txdesc->l2pad); | ||
441 | rt2x00_set_field32(&word, TXWI_W1_PACKETID, | ||
442 | skbdesc->entry->queue->qid + 1); | ||
443 | rt2x00_desc_write(txwi, 1, word); | ||
444 | 410 | ||
445 | /* | 411 | /* |
446 | * Always write 0 to IV/EIV fields, hardware will insert the IV | 412 | * Initialize TXINFO descriptor |
447 | * from the IVEIV register when TXINFO_W0_WIV is set to 0. | ||
448 | * When TXINFO_W0_WIV is set to 1 it will use the IV data | ||
449 | * from the descriptor. The TXWI_W1_WIRELESS_CLI_ID indicates which | ||
450 | * crypto entry in the registers should be used to encrypt the frame. | ||
451 | */ | ||
452 | _rt2x00_desc_write(txwi, 2, 0 /* skbdesc->iv[0] */); | ||
453 | _rt2x00_desc_write(txwi, 3, 0 /* skbdesc->iv[1] */); | ||
454 | |||
455 | /* | ||
456 | * Initialize TX descriptor | ||
457 | */ | 413 | */ |
458 | rt2x00_desc_read(txi, 0, &word); | 414 | rt2x00_desc_read(txi, 0, &word); |
459 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_PKT_LEN, | 415 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_PKT_LEN, |
@@ -466,26 +422,25 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
466 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_BURST, | 422 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_BURST, |
467 | test_bit(ENTRY_TXD_BURST, &txdesc->flags)); | 423 | test_bit(ENTRY_TXD_BURST, &txdesc->flags)); |
468 | rt2x00_desc_write(txi, 0, word); | 424 | rt2x00_desc_write(txi, 0, word); |
425 | |||
426 | /* | ||
427 | * Register descriptor details in skb frame descriptor. | ||
428 | */ | ||
429 | skbdesc->desc = txi; | ||
430 | skbdesc->desc_len = TXINFO_DESC_SIZE + TXWI_DESC_SIZE; | ||
469 | } | 431 | } |
470 | 432 | ||
471 | /* | 433 | /* |
472 | * TX data initialization | 434 | * TX data initialization |
473 | */ | 435 | */ |
474 | static void rt2800usb_write_beacon(struct queue_entry *entry) | 436 | static void rt2800usb_write_beacon(struct queue_entry *entry, |
437 | struct txentry_desc *txdesc) | ||
475 | { | 438 | { |
476 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; | 439 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; |
477 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); | ||
478 | unsigned int beacon_base; | 440 | unsigned int beacon_base; |
479 | u32 reg; | 441 | u32 reg; |
480 | 442 | ||
481 | /* | 443 | /* |
482 | * Add the descriptor in front of the skb. | ||
483 | */ | ||
484 | skb_push(entry->skb, entry->queue->desc_size); | ||
485 | memcpy(entry->skb->data, skbdesc->desc, skbdesc->desc_len); | ||
486 | skbdesc->desc = entry->skb->data; | ||
487 | |||
488 | /* | ||
489 | * Disable beaconing while we are reloading the beacon data, | 444 | * Disable beaconing while we are reloading the beacon data, |
490 | * otherwise we might be sending out invalid data. | 445 | * otherwise we might be sending out invalid data. |
491 | */ | 446 | */ |
@@ -494,6 +449,12 @@ static void rt2800usb_write_beacon(struct queue_entry *entry) | |||
494 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); | 449 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); |
495 | 450 | ||
496 | /* | 451 | /* |
452 | * Add the TXWI for the beacon to the skb. | ||
453 | */ | ||
454 | rt2800_write_txwi(entry->skb, txdesc); | ||
455 | skb_push(entry->skb, TXWI_DESC_SIZE); | ||
456 | |||
457 | /* | ||
497 | * Write entire beacon with descriptor to register. | 458 | * Write entire beacon with descriptor to register. |
498 | */ | 459 | */ |
499 | beacon_base = HW_BEACON_OFFSET(entry->entry_idx); | 460 | beacon_base = HW_BEACON_OFFSET(entry->entry_idx); |
@@ -503,6 +464,14 @@ static void rt2800usb_write_beacon(struct queue_entry *entry) | |||
503 | REGISTER_TIMEOUT32(entry->skb->len)); | 464 | REGISTER_TIMEOUT32(entry->skb->len)); |
504 | 465 | ||
505 | /* | 466 | /* |
467 | * Enable beaconing again. | ||
468 | */ | ||
469 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 1); | ||
470 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 1); | ||
471 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 1); | ||
472 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); | ||
473 | |||
474 | /* | ||
506 | * Clean up the beacon skb. | 475 | * Clean up the beacon skb. |
507 | */ | 476 | */ |
508 | dev_kfree_skb(entry->skb); | 477 | dev_kfree_skb(entry->skb); |
@@ -524,84 +493,53 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry) | |||
524 | return length; | 493 | return length; |
525 | } | 494 | } |
526 | 495 | ||
527 | static void rt2800usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | ||
528 | const enum data_queue_qid queue) | ||
529 | { | ||
530 | u32 reg; | ||
531 | |||
532 | if (queue != QID_BEACON) { | ||
533 | rt2x00usb_kick_tx_queue(rt2x00dev, queue); | ||
534 | return; | ||
535 | } | ||
536 | |||
537 | rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); | ||
538 | if (!rt2x00_get_field32(reg, BCN_TIME_CFG_BEACON_GEN)) { | ||
539 | rt2x00_set_field32(®, BCN_TIME_CFG_TSF_TICKING, 1); | ||
540 | rt2x00_set_field32(®, BCN_TIME_CFG_TBTT_ENABLE, 1); | ||
541 | rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_GEN, 1); | ||
542 | rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); | ||
543 | } | ||
544 | } | ||
545 | |||
546 | /* | 496 | /* |
547 | * RX control handlers | 497 | * RX control handlers |
548 | */ | 498 | */ |
549 | static void rt2800usb_fill_rxdone(struct queue_entry *entry, | 499 | static void rt2800usb_fill_rxdone(struct queue_entry *entry, |
550 | struct rxdone_entry_desc *rxdesc) | 500 | struct rxdone_entry_desc *rxdesc) |
551 | { | 501 | { |
552 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; | ||
553 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); | 502 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); |
554 | __le32 *rxi = (__le32 *)entry->skb->data; | 503 | __le32 *rxi = (__le32 *)entry->skb->data; |
555 | __le32 *rxwi; | ||
556 | __le32 *rxd; | 504 | __le32 *rxd; |
557 | u32 rxi0; | 505 | u32 word; |
558 | u32 rxwi0; | ||
559 | u32 rxwi1; | ||
560 | u32 rxwi2; | ||
561 | u32 rxwi3; | ||
562 | u32 rxd0; | ||
563 | int rx_pkt_len; | 506 | int rx_pkt_len; |
564 | 507 | ||
565 | /* | 508 | /* |
509 | * Copy descriptor to the skbdesc->desc buffer, making it safe from | ||
510 | * moving of frame data in rt2x00usb. | ||
511 | */ | ||
512 | memcpy(skbdesc->desc, rxi, skbdesc->desc_len); | ||
513 | |||
514 | /* | ||
566 | * RX frame format is : | 515 | * RX frame format is : |
567 | * | RXINFO | RXWI | header | L2 pad | payload | pad | RXD | USB pad | | 516 | * | RXINFO | RXWI | header | L2 pad | payload | pad | RXD | USB pad | |
568 | * |<------------ rx_pkt_len -------------->| | 517 | * |<------------ rx_pkt_len -------------->| |
569 | */ | 518 | */ |
570 | rt2x00_desc_read(rxi, 0, &rxi0); | 519 | rt2x00_desc_read(rxi, 0, &word); |
571 | rx_pkt_len = rt2x00_get_field32(rxi0, RXINFO_W0_USB_DMA_RX_PKT_LEN); | 520 | rx_pkt_len = rt2x00_get_field32(word, RXINFO_W0_USB_DMA_RX_PKT_LEN); |
572 | |||
573 | rxwi = (__le32 *)(entry->skb->data + RXINFO_DESC_SIZE); | ||
574 | 521 | ||
575 | /* | 522 | /* |
576 | * FIXME : we need to check for rx_pkt_len validity | 523 | * Remove the RXINFO structure from the sbk. |
577 | */ | 524 | */ |
578 | rxd = (__le32 *)(entry->skb->data + RXINFO_DESC_SIZE + rx_pkt_len); | 525 | skb_pull(entry->skb, RXINFO_DESC_SIZE); |
579 | 526 | ||
580 | /* | 527 | /* |
581 | * Copy descriptor to the skbdesc->desc buffer, making it safe from | 528 | * FIXME: we need to check for rx_pkt_len validity |
582 | * moving of frame data in rt2x00usb. | ||
583 | */ | 529 | */ |
584 | memcpy(skbdesc->desc, rxi, skbdesc->desc_len); | 530 | rxd = (__le32 *)(entry->skb->data + rx_pkt_len); |
585 | 531 | ||
586 | /* | 532 | /* |
587 | * It is now safe to read the descriptor on all architectures. | 533 | * It is now safe to read the descriptor on all architectures. |
588 | */ | 534 | */ |
589 | rt2x00_desc_read(rxwi, 0, &rxwi0); | 535 | rt2x00_desc_read(rxd, 0, &word); |
590 | rt2x00_desc_read(rxwi, 1, &rxwi1); | ||
591 | rt2x00_desc_read(rxwi, 2, &rxwi2); | ||
592 | rt2x00_desc_read(rxwi, 3, &rxwi3); | ||
593 | rt2x00_desc_read(rxd, 0, &rxd0); | ||
594 | 536 | ||
595 | if (rt2x00_get_field32(rxd0, RXD_W0_CRC_ERROR)) | 537 | if (rt2x00_get_field32(word, RXD_W0_CRC_ERROR)) |
596 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; | 538 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; |
597 | 539 | ||
598 | if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) { | 540 | rxdesc->cipher_status = rt2x00_get_field32(word, RXD_W0_CIPHER_ERROR); |
599 | rxdesc->cipher = rt2x00_get_field32(rxwi0, RXWI_W0_UDF); | ||
600 | rxdesc->cipher_status = | ||
601 | rt2x00_get_field32(rxd0, RXD_W0_CIPHER_ERROR); | ||
602 | } | ||
603 | 541 | ||
604 | if (rt2x00_get_field32(rxd0, RXD_W0_DECRYPTED)) { | 542 | if (rt2x00_get_field32(word, RXD_W0_DECRYPTED)) { |
605 | /* | 543 | /* |
606 | * Hardware has stripped IV/EIV data from 802.11 frame during | 544 | * Hardware has stripped IV/EIV data from 802.11 frame during |
607 | * decryption. Unfortunately the descriptor doesn't contain | 545 | * decryption. Unfortunately the descriptor doesn't contain |
@@ -616,45 +554,21 @@ static void rt2800usb_fill_rxdone(struct queue_entry *entry, | |||
616 | rxdesc->flags |= RX_FLAG_MMIC_ERROR; | 554 | rxdesc->flags |= RX_FLAG_MMIC_ERROR; |
617 | } | 555 | } |
618 | 556 | ||
619 | if (rt2x00_get_field32(rxd0, RXD_W0_MY_BSS)) | 557 | if (rt2x00_get_field32(word, RXD_W0_MY_BSS)) |
620 | rxdesc->dev_flags |= RXDONE_MY_BSS; | 558 | rxdesc->dev_flags |= RXDONE_MY_BSS; |
621 | 559 | ||
622 | if (rt2x00_get_field32(rxd0, RXD_W0_L2PAD)) | 560 | if (rt2x00_get_field32(word, RXD_W0_L2PAD)) |
623 | rxdesc->dev_flags |= RXDONE_L2PAD; | 561 | rxdesc->dev_flags |= RXDONE_L2PAD; |
624 | 562 | ||
625 | if (rt2x00_get_field32(rxwi1, RXWI_W1_SHORT_GI)) | ||
626 | rxdesc->flags |= RX_FLAG_SHORT_GI; | ||
627 | |||
628 | if (rt2x00_get_field32(rxwi1, RXWI_W1_BW)) | ||
629 | rxdesc->flags |= RX_FLAG_40MHZ; | ||
630 | |||
631 | /* | 563 | /* |
632 | * Detect RX rate, always use MCS as signal type. | 564 | * Remove RXD descriptor from end of buffer. |
633 | */ | 565 | */ |
634 | rxdesc->dev_flags |= RXDONE_SIGNAL_MCS; | 566 | skb_trim(entry->skb, rx_pkt_len); |
635 | rxdesc->rate_mode = rt2x00_get_field32(rxwi1, RXWI_W1_PHYMODE); | ||
636 | rxdesc->signal = rt2x00_get_field32(rxwi1, RXWI_W1_MCS); | ||
637 | 567 | ||
638 | /* | 568 | /* |
639 | * Mask of 0x8 bit to remove the short preamble flag. | 569 | * Process the RXWI structure. |
640 | */ | 570 | */ |
641 | if (rxdesc->rate_mode == RATE_MODE_CCK) | 571 | rt2800_process_rxwi(entry->skb, rxdesc); |
642 | rxdesc->signal &= ~0x8; | ||
643 | |||
644 | rxdesc->rssi = | ||
645 | (rt2x00_get_field32(rxwi2, RXWI_W2_RSSI0) + | ||
646 | rt2x00_get_field32(rxwi2, RXWI_W2_RSSI1)) / 2; | ||
647 | |||
648 | rxdesc->noise = | ||
649 | (rt2x00_get_field32(rxwi3, RXWI_W3_SNR0) + | ||
650 | rt2x00_get_field32(rxwi3, RXWI_W3_SNR1)) / 2; | ||
651 | |||
652 | rxdesc->size = rt2x00_get_field32(rxwi0, RXWI_W0_MPDU_TOTAL_BYTE_COUNT); | ||
653 | |||
654 | /* | ||
655 | * Remove RXWI descriptor from start of buffer. | ||
656 | */ | ||
657 | skb_pull(entry->skb, skbdesc->desc_len); | ||
658 | } | 572 | } |
659 | 573 | ||
660 | /* | 574 | /* |
@@ -747,7 +661,7 @@ static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { | |||
747 | .write_tx_data = rt2x00usb_write_tx_data, | 661 | .write_tx_data = rt2x00usb_write_tx_data, |
748 | .write_beacon = rt2800usb_write_beacon, | 662 | .write_beacon = rt2800usb_write_beacon, |
749 | .get_tx_data_len = rt2800usb_get_tx_data_len, | 663 | .get_tx_data_len = rt2800usb_get_tx_data_len, |
750 | .kick_tx_queue = rt2800usb_kick_tx_queue, | 664 | .kick_tx_queue = rt2x00usb_kick_tx_queue, |
751 | .kill_tx_queue = rt2x00usb_kill_tx_queue, | 665 | .kill_tx_queue = rt2x00usb_kill_tx_queue, |
752 | .fill_rxdone = rt2800usb_fill_rxdone, | 666 | .fill_rxdone = rt2800usb_fill_rxdone, |
753 | .config_shared_key = rt2800_config_shared_key, | 667 | .config_shared_key = rt2800_config_shared_key, |
@@ -806,6 +720,10 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
806 | { USB_DEVICE(0x07b8, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, | 720 | { USB_DEVICE(0x07b8, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, |
807 | { USB_DEVICE(0x07b8, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, | 721 | { USB_DEVICE(0x07b8, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, |
808 | { USB_DEVICE(0x1482, 0x3c09), USB_DEVICE_DATA(&rt2800usb_ops) }, | 722 | { USB_DEVICE(0x1482, 0x3c09), USB_DEVICE_DATA(&rt2800usb_ops) }, |
723 | /* Allwin */ | ||
724 | { USB_DEVICE(0x8516, 0x2070), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
725 | { USB_DEVICE(0x8516, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
726 | { USB_DEVICE(0x8516, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
809 | /* Amit */ | 727 | /* Amit */ |
810 | { USB_DEVICE(0x15c5, 0x0008), USB_DEVICE_DATA(&rt2800usb_ops) }, | 728 | { USB_DEVICE(0x15c5, 0x0008), USB_DEVICE_DATA(&rt2800usb_ops) }, |
811 | /* Askey */ | 729 | /* Askey */ |
@@ -841,13 +759,18 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
841 | { USB_DEVICE(0x7392, 0x7717), USB_DEVICE_DATA(&rt2800usb_ops) }, | 759 | { USB_DEVICE(0x7392, 0x7717), USB_DEVICE_DATA(&rt2800usb_ops) }, |
842 | { USB_DEVICE(0x7392, 0x7718), USB_DEVICE_DATA(&rt2800usb_ops) }, | 760 | { USB_DEVICE(0x7392, 0x7718), USB_DEVICE_DATA(&rt2800usb_ops) }, |
843 | /* EnGenius */ | 761 | /* EnGenius */ |
844 | { USB_DEVICE(0X1740, 0x9701), USB_DEVICE_DATA(&rt2800usb_ops) }, | 762 | { USB_DEVICE(0x1740, 0x9701), USB_DEVICE_DATA(&rt2800usb_ops) }, |
845 | { USB_DEVICE(0x1740, 0x9702), USB_DEVICE_DATA(&rt2800usb_ops) }, | 763 | { USB_DEVICE(0x1740, 0x9702), USB_DEVICE_DATA(&rt2800usb_ops) }, |
846 | /* Gigabyte */ | 764 | /* Gigabyte */ |
847 | { USB_DEVICE(0x1044, 0x800b), USB_DEVICE_DATA(&rt2800usb_ops) }, | 765 | { USB_DEVICE(0x1044, 0x800b), USB_DEVICE_DATA(&rt2800usb_ops) }, |
848 | /* Hawking */ | 766 | /* Hawking */ |
849 | { USB_DEVICE(0x0e66, 0x0001), USB_DEVICE_DATA(&rt2800usb_ops) }, | 767 | { USB_DEVICE(0x0e66, 0x0001), USB_DEVICE_DATA(&rt2800usb_ops) }, |
850 | { USB_DEVICE(0x0e66, 0x0003), USB_DEVICE_DATA(&rt2800usb_ops) }, | 768 | { USB_DEVICE(0x0e66, 0x0003), USB_DEVICE_DATA(&rt2800usb_ops) }, |
769 | { USB_DEVICE(0x0e66, 0x0009), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
770 | { USB_DEVICE(0x0e66, 0x000b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
771 | { USB_DEVICE(0x0e66, 0x0013), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
772 | { USB_DEVICE(0x0e66, 0x0017), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
773 | { USB_DEVICE(0x0e66, 0x0018), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
851 | /* Linksys */ | 774 | /* Linksys */ |
852 | { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) }, | 775 | { USB_DEVICE(0x1737, 0x0070), USB_DEVICE_DATA(&rt2800usb_ops) }, |
853 | { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) }, | 776 | { USB_DEVICE(0x1737, 0x0071), USB_DEVICE_DATA(&rt2800usb_ops) }, |
@@ -876,6 +799,8 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
876 | { USB_DEVICE(0x0df6, 0x002c), USB_DEVICE_DATA(&rt2800usb_ops) }, | 799 | { USB_DEVICE(0x0df6, 0x002c), USB_DEVICE_DATA(&rt2800usb_ops) }, |
877 | { USB_DEVICE(0x0df6, 0x002d), USB_DEVICE_DATA(&rt2800usb_ops) }, | 800 | { USB_DEVICE(0x0df6, 0x002d), USB_DEVICE_DATA(&rt2800usb_ops) }, |
878 | { USB_DEVICE(0x0df6, 0x0039), USB_DEVICE_DATA(&rt2800usb_ops) }, | 801 | { USB_DEVICE(0x0df6, 0x0039), USB_DEVICE_DATA(&rt2800usb_ops) }, |
802 | { USB_DEVICE(0x0df6, 0x003b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
803 | { USB_DEVICE(0x0df6, 0x003d), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
879 | { USB_DEVICE(0x0df6, 0x003f), USB_DEVICE_DATA(&rt2800usb_ops) }, | 804 | { USB_DEVICE(0x0df6, 0x003f), USB_DEVICE_DATA(&rt2800usb_ops) }, |
880 | /* SMC */ | 805 | /* SMC */ |
881 | { USB_DEVICE(0x083a, 0x6618), USB_DEVICE_DATA(&rt2800usb_ops) }, | 806 | { USB_DEVICE(0x083a, 0x6618), USB_DEVICE_DATA(&rt2800usb_ops) }, |
@@ -905,8 +830,17 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
905 | { USB_DEVICE(0x07b8, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, | 830 | { USB_DEVICE(0x07b8, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, |
906 | /* AirTies */ | 831 | /* AirTies */ |
907 | { USB_DEVICE(0x1eda, 0x2310), USB_DEVICE_DATA(&rt2800usb_ops) }, | 832 | { USB_DEVICE(0x1eda, 0x2310), USB_DEVICE_DATA(&rt2800usb_ops) }, |
833 | /* Allwin */ | ||
834 | { USB_DEVICE(0x8516, 0x3070), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
835 | { USB_DEVICE(0x8516, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
836 | { USB_DEVICE(0x8516, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
837 | /* ASUS */ | ||
838 | { USB_DEVICE(0x0b05, 0x1784), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
908 | /* AzureWave */ | 839 | /* AzureWave */ |
909 | { USB_DEVICE(0x13d3, 0x3273), USB_DEVICE_DATA(&rt2800usb_ops) }, | 840 | { USB_DEVICE(0x13d3, 0x3273), USB_DEVICE_DATA(&rt2800usb_ops) }, |
841 | { USB_DEVICE(0x13d3, 0x3305), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
842 | { USB_DEVICE(0x13d3, 0x3307), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
843 | { USB_DEVICE(0x13d3, 0x3321), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
910 | /* Conceptronic */ | 844 | /* Conceptronic */ |
911 | { USB_DEVICE(0x14b2, 0x3c12), USB_DEVICE_DATA(&rt2800usb_ops) }, | 845 | { USB_DEVICE(0x14b2, 0x3c12), USB_DEVICE_DATA(&rt2800usb_ops) }, |
912 | /* Corega */ | 846 | /* Corega */ |
@@ -916,20 +850,46 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
916 | { USB_DEVICE(0x07d1, 0x3c0d), USB_DEVICE_DATA(&rt2800usb_ops) }, | 850 | { USB_DEVICE(0x07d1, 0x3c0d), USB_DEVICE_DATA(&rt2800usb_ops) }, |
917 | { USB_DEVICE(0x07d1, 0x3c0e), USB_DEVICE_DATA(&rt2800usb_ops) }, | 851 | { USB_DEVICE(0x07d1, 0x3c0e), USB_DEVICE_DATA(&rt2800usb_ops) }, |
918 | { USB_DEVICE(0x07d1, 0x3c0f), USB_DEVICE_DATA(&rt2800usb_ops) }, | 852 | { USB_DEVICE(0x07d1, 0x3c0f), USB_DEVICE_DATA(&rt2800usb_ops) }, |
853 | { USB_DEVICE(0x07d1, 0x3c16), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
854 | /* Draytek */ | ||
855 | { USB_DEVICE(0x07fa, 0x7712), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
919 | /* Edimax */ | 856 | /* Edimax */ |
920 | { USB_DEVICE(0x7392, 0x7711), USB_DEVICE_DATA(&rt2800usb_ops) }, | 857 | { USB_DEVICE(0x7392, 0x7711), USB_DEVICE_DATA(&rt2800usb_ops) }, |
921 | /* Encore */ | 858 | /* Encore */ |
922 | { USB_DEVICE(0x203d, 0x1480), USB_DEVICE_DATA(&rt2800usb_ops) }, | 859 | { USB_DEVICE(0x203d, 0x1480), USB_DEVICE_DATA(&rt2800usb_ops) }, |
860 | { USB_DEVICE(0x203d, 0x14a9), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
923 | /* EnGenius */ | 861 | /* EnGenius */ |
924 | { USB_DEVICE(0x1740, 0x9703), USB_DEVICE_DATA(&rt2800usb_ops) }, | 862 | { USB_DEVICE(0x1740, 0x9703), USB_DEVICE_DATA(&rt2800usb_ops) }, |
925 | { USB_DEVICE(0x1740, 0x9705), USB_DEVICE_DATA(&rt2800usb_ops) }, | 863 | { USB_DEVICE(0x1740, 0x9705), USB_DEVICE_DATA(&rt2800usb_ops) }, |
926 | { USB_DEVICE(0x1740, 0x9706), USB_DEVICE_DATA(&rt2800usb_ops) }, | 864 | { USB_DEVICE(0x1740, 0x9706), USB_DEVICE_DATA(&rt2800usb_ops) }, |
865 | { USB_DEVICE(0x1740, 0x9707), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
866 | { USB_DEVICE(0x1740, 0x9708), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
867 | { USB_DEVICE(0x1740, 0x9709), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
927 | /* Gigabyte */ | 868 | /* Gigabyte */ |
928 | { USB_DEVICE(0x1044, 0x800d), USB_DEVICE_DATA(&rt2800usb_ops) }, | 869 | { USB_DEVICE(0x1044, 0x800d), USB_DEVICE_DATA(&rt2800usb_ops) }, |
929 | /* I-O DATA */ | 870 | /* I-O DATA */ |
930 | { USB_DEVICE(0x04bb, 0x0945), USB_DEVICE_DATA(&rt2800usb_ops) }, | 871 | { USB_DEVICE(0x04bb, 0x0945), USB_DEVICE_DATA(&rt2800usb_ops) }, |
872 | { USB_DEVICE(0x04bb, 0x0947), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
873 | { USB_DEVICE(0x04bb, 0x0948), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
874 | /* Logitec */ | ||
875 | { USB_DEVICE(0x0789, 0x0166), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
931 | /* MSI */ | 876 | /* MSI */ |
932 | { USB_DEVICE(0x0db0, 0x3820), USB_DEVICE_DATA(&rt2800usb_ops) }, | 877 | { USB_DEVICE(0x0db0, 0x3820), USB_DEVICE_DATA(&rt2800usb_ops) }, |
878 | { USB_DEVICE(0x0db0, 0x3821), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
879 | { USB_DEVICE(0x0db0, 0x3822), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
880 | { USB_DEVICE(0x0db0, 0x3870), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
881 | { USB_DEVICE(0x0db0, 0x3871), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
882 | { USB_DEVICE(0x0db0, 0x821a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
883 | { USB_DEVICE(0x0db0, 0x822a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
884 | { USB_DEVICE(0x0db0, 0x822b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
885 | { USB_DEVICE(0x0db0, 0x822c), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
886 | { USB_DEVICE(0x0db0, 0x870a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
887 | { USB_DEVICE(0x0db0, 0x871a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
888 | { USB_DEVICE(0x0db0, 0x871b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
889 | { USB_DEVICE(0x0db0, 0x871c), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
890 | { USB_DEVICE(0x0db0, 0x899a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
891 | /* Para */ | ||
892 | { USB_DEVICE(0x20b8, 0x8888), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
933 | /* Pegatron */ | 893 | /* Pegatron */ |
934 | { USB_DEVICE(0x1d4d, 0x000c), USB_DEVICE_DATA(&rt2800usb_ops) }, | 894 | { USB_DEVICE(0x1d4d, 0x000c), USB_DEVICE_DATA(&rt2800usb_ops) }, |
935 | { USB_DEVICE(0x1d4d, 0x000e), USB_DEVICE_DATA(&rt2800usb_ops) }, | 895 | { USB_DEVICE(0x1d4d, 0x000e), USB_DEVICE_DATA(&rt2800usb_ops) }, |
@@ -944,14 +904,22 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
944 | { USB_DEVICE(0x148f, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, | 904 | { USB_DEVICE(0x148f, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, |
945 | /* Sitecom */ | 905 | /* Sitecom */ |
946 | { USB_DEVICE(0x0df6, 0x003e), USB_DEVICE_DATA(&rt2800usb_ops) }, | 906 | { USB_DEVICE(0x0df6, 0x003e), USB_DEVICE_DATA(&rt2800usb_ops) }, |
907 | { USB_DEVICE(0x0df6, 0x0040), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
947 | { USB_DEVICE(0x0df6, 0x0042), USB_DEVICE_DATA(&rt2800usb_ops) }, | 908 | { USB_DEVICE(0x0df6, 0x0042), USB_DEVICE_DATA(&rt2800usb_ops) }, |
909 | { USB_DEVICE(0x0df6, 0x0047), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
910 | { USB_DEVICE(0x0df6, 0x0048), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
948 | /* SMC */ | 911 | /* SMC */ |
949 | { USB_DEVICE(0x083a, 0x7511), USB_DEVICE_DATA(&rt2800usb_ops) }, | 912 | { USB_DEVICE(0x083a, 0x7511), USB_DEVICE_DATA(&rt2800usb_ops) }, |
913 | { USB_DEVICE(0x083a, 0xa701), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
914 | { USB_DEVICE(0x083a, 0xa702), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
915 | { USB_DEVICE(0x083a, 0xa703), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
950 | /* Zinwell */ | 916 | /* Zinwell */ |
951 | { USB_DEVICE(0x5a57, 0x0283), USB_DEVICE_DATA(&rt2800usb_ops) }, | 917 | { USB_DEVICE(0x5a57, 0x0283), USB_DEVICE_DATA(&rt2800usb_ops) }, |
952 | { USB_DEVICE(0x5a57, 0x5257), USB_DEVICE_DATA(&rt2800usb_ops) }, | 918 | { USB_DEVICE(0x5a57, 0x5257), USB_DEVICE_DATA(&rt2800usb_ops) }, |
953 | #endif | 919 | #endif |
954 | #ifdef CONFIG_RT2800USB_RT35XX | 920 | #ifdef CONFIG_RT2800USB_RT35XX |
921 | /* Allwin */ | ||
922 | { USB_DEVICE(0x8516, 0x3572), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
955 | /* Askey */ | 923 | /* Askey */ |
956 | { USB_DEVICE(0x1690, 0x0744), USB_DEVICE_DATA(&rt2800usb_ops) }, | 924 | { USB_DEVICE(0x1690, 0x0744), USB_DEVICE_DATA(&rt2800usb_ops) }, |
957 | /* Cisco */ | 925 | /* Cisco */ |
@@ -966,37 +934,27 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
966 | { USB_DEVICE(0x148f, 0x8070), USB_DEVICE_DATA(&rt2800usb_ops) }, | 934 | { USB_DEVICE(0x148f, 0x8070), USB_DEVICE_DATA(&rt2800usb_ops) }, |
967 | /* Sitecom */ | 935 | /* Sitecom */ |
968 | { USB_DEVICE(0x0df6, 0x0041), USB_DEVICE_DATA(&rt2800usb_ops) }, | 936 | { USB_DEVICE(0x0df6, 0x0041), USB_DEVICE_DATA(&rt2800usb_ops) }, |
937 | { USB_DEVICE(0x0df6, 0x0050), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
969 | /* Zinwell */ | 938 | /* Zinwell */ |
970 | { USB_DEVICE(0x5a57, 0x0284), USB_DEVICE_DATA(&rt2800usb_ops) }, | 939 | { USB_DEVICE(0x5a57, 0x0284), USB_DEVICE_DATA(&rt2800usb_ops) }, |
971 | #endif | 940 | #endif |
972 | #ifdef CONFIG_RT2800USB_UNKNOWN | 941 | #ifdef CONFIG_RT2800USB_UNKNOWN |
973 | /* | 942 | /* |
974 | * Unclear what kind of devices these are (they aren't supported by the | 943 | * Unclear what kind of devices these are (they aren't supported by the |
975 | * vendor driver). | 944 | * vendor linux driver). |
976 | */ | 945 | */ |
977 | /* Allwin */ | ||
978 | { USB_DEVICE(0x8516, 0x2070), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
979 | { USB_DEVICE(0x8516, 0x2770), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
980 | { USB_DEVICE(0x8516, 0x2870), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
981 | { USB_DEVICE(0x8516, 0x3070), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
982 | { USB_DEVICE(0x8516, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
983 | { USB_DEVICE(0x8516, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
984 | { USB_DEVICE(0x8516, 0x3572), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
985 | /* Amigo */ | 946 | /* Amigo */ |
986 | { USB_DEVICE(0x0e0b, 0x9031), USB_DEVICE_DATA(&rt2800usb_ops) }, | 947 | { USB_DEVICE(0x0e0b, 0x9031), USB_DEVICE_DATA(&rt2800usb_ops) }, |
987 | { USB_DEVICE(0x0e0b, 0x9041), USB_DEVICE_DATA(&rt2800usb_ops) }, | 948 | { USB_DEVICE(0x0e0b, 0x9041), USB_DEVICE_DATA(&rt2800usb_ops) }, |
988 | /* Askey */ | ||
989 | { USB_DEVICE(0x0930, 0x0a07), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
990 | /* ASUS */ | 949 | /* ASUS */ |
991 | { USB_DEVICE(0x0b05, 0x1760), USB_DEVICE_DATA(&rt2800usb_ops) }, | 950 | { USB_DEVICE(0x0b05, 0x1760), USB_DEVICE_DATA(&rt2800usb_ops) }, |
992 | { USB_DEVICE(0x0b05, 0x1761), USB_DEVICE_DATA(&rt2800usb_ops) }, | 951 | { USB_DEVICE(0x0b05, 0x1761), USB_DEVICE_DATA(&rt2800usb_ops) }, |
993 | { USB_DEVICE(0x0b05, 0x1784), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
994 | { USB_DEVICE(0x0b05, 0x1790), USB_DEVICE_DATA(&rt2800usb_ops) }, | 952 | { USB_DEVICE(0x0b05, 0x1790), USB_DEVICE_DATA(&rt2800usb_ops) }, |
995 | { USB_DEVICE(0x1761, 0x0b05), USB_DEVICE_DATA(&rt2800usb_ops) }, | 953 | { USB_DEVICE(0x1761, 0x0b05), USB_DEVICE_DATA(&rt2800usb_ops) }, |
996 | /* AzureWave */ | 954 | /* AzureWave */ |
997 | { USB_DEVICE(0x13d3, 0x3262), USB_DEVICE_DATA(&rt2800usb_ops) }, | 955 | { USB_DEVICE(0x13d3, 0x3262), USB_DEVICE_DATA(&rt2800usb_ops) }, |
998 | { USB_DEVICE(0x13d3, 0x3284), USB_DEVICE_DATA(&rt2800usb_ops) }, | 956 | { USB_DEVICE(0x13d3, 0x3284), USB_DEVICE_DATA(&rt2800usb_ops) }, |
999 | { USB_DEVICE(0x13d3, 0x3305), USB_DEVICE_DATA(&rt2800usb_ops) }, | 957 | { USB_DEVICE(0x13d3, 0x3322), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1000 | /* Belkin */ | 958 | /* Belkin */ |
1001 | { USB_DEVICE(0x050d, 0x825a), USB_DEVICE_DATA(&rt2800usb_ops) }, | 959 | { USB_DEVICE(0x050d, 0x825a), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1002 | /* Buffalo */ | 960 | /* Buffalo */ |
@@ -1015,24 +973,13 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
1015 | { USB_DEVICE(0x07d1, 0x3c0b), USB_DEVICE_DATA(&rt2800usb_ops) }, | 973 | { USB_DEVICE(0x07d1, 0x3c0b), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1016 | { USB_DEVICE(0x07d1, 0x3c13), USB_DEVICE_DATA(&rt2800usb_ops) }, | 974 | { USB_DEVICE(0x07d1, 0x3c13), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1017 | { USB_DEVICE(0x07d1, 0x3c15), USB_DEVICE_DATA(&rt2800usb_ops) }, | 975 | { USB_DEVICE(0x07d1, 0x3c15), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1018 | { USB_DEVICE(0x07d1, 0x3c16), USB_DEVICE_DATA(&rt2800usb_ops) }, | 976 | { USB_DEVICE(0x07d1, 0x3c17), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1019 | /* Encore */ | 977 | /* Encore */ |
1020 | { USB_DEVICE(0x203d, 0x14a1), USB_DEVICE_DATA(&rt2800usb_ops) }, | 978 | { USB_DEVICE(0x203d, 0x14a1), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1021 | { USB_DEVICE(0x203d, 0x14a9), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1022 | /* EnGenius */ | ||
1023 | { USB_DEVICE(0x1740, 0x9707), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1024 | { USB_DEVICE(0x1740, 0x9708), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1025 | { USB_DEVICE(0x1740, 0x9709), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1026 | /* Gemtek */ | 979 | /* Gemtek */ |
1027 | { USB_DEVICE(0x15a9, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, | 980 | { USB_DEVICE(0x15a9, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1028 | /* Gigabyte */ | 981 | /* Gigabyte */ |
1029 | { USB_DEVICE(0x1044, 0x800c), USB_DEVICE_DATA(&rt2800usb_ops) }, | 982 | { USB_DEVICE(0x1044, 0x800c), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1030 | /* Hawking */ | ||
1031 | { USB_DEVICE(0x0e66, 0x0009), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1032 | { USB_DEVICE(0x0e66, 0x000b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1033 | /* I-O DATA */ | ||
1034 | { USB_DEVICE(0x04bb, 0x0947), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1035 | { USB_DEVICE(0x04bb, 0x0948), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1036 | /* LevelOne */ | 983 | /* LevelOne */ |
1037 | { USB_DEVICE(0x1740, 0x0605), USB_DEVICE_DATA(&rt2800usb_ops) }, | 984 | { USB_DEVICE(0x1740, 0x0605), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1038 | { USB_DEVICE(0x1740, 0x0615), USB_DEVICE_DATA(&rt2800usb_ops) }, | 985 | { USB_DEVICE(0x1740, 0x0615), USB_DEVICE_DATA(&rt2800usb_ops) }, |
@@ -1042,43 +989,23 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
1042 | { USB_DEVICE(0x1737, 0x0079), USB_DEVICE_DATA(&rt2800usb_ops) }, | 989 | { USB_DEVICE(0x1737, 0x0079), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1043 | /* Motorola */ | 990 | /* Motorola */ |
1044 | { USB_DEVICE(0x100d, 0x9032), USB_DEVICE_DATA(&rt2800usb_ops) }, | 991 | { USB_DEVICE(0x100d, 0x9032), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1045 | /* MSI */ | ||
1046 | { USB_DEVICE(0x0db0, 0x3821), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1047 | { USB_DEVICE(0x0db0, 0x3822), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1048 | { USB_DEVICE(0x0db0, 0x3870), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1049 | { USB_DEVICE(0x0db0, 0x3871), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1050 | { USB_DEVICE(0x0db0, 0x821a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1051 | { USB_DEVICE(0x0db0, 0x822a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1052 | { USB_DEVICE(0x0db0, 0x870a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1053 | { USB_DEVICE(0x0db0, 0x871a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1054 | { USB_DEVICE(0x0db0, 0x899a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1055 | /* Ovislink */ | 992 | /* Ovislink */ |
993 | { USB_DEVICE(0x1b75, 0x3071), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1056 | { USB_DEVICE(0x1b75, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, | 994 | { USB_DEVICE(0x1b75, 0x3072), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1057 | /* Para */ | ||
1058 | { USB_DEVICE(0x20b8, 0x8888), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1059 | /* Pegatron */ | 995 | /* Pegatron */ |
1060 | { USB_DEVICE(0x05a6, 0x0101), USB_DEVICE_DATA(&rt2800usb_ops) }, | 996 | { USB_DEVICE(0x05a6, 0x0101), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1061 | { USB_DEVICE(0x1d4d, 0x0002), USB_DEVICE_DATA(&rt2800usb_ops) }, | 997 | { USB_DEVICE(0x1d4d, 0x0002), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1062 | { USB_DEVICE(0x1d4d, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, | 998 | { USB_DEVICE(0x1d4d, 0x0010), USB_DEVICE_DATA(&rt2800usb_ops) }, |
999 | { USB_DEVICE(0x1d4d, 0x0011), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1063 | /* Planex */ | 1000 | /* Planex */ |
1064 | { USB_DEVICE(0x2019, 0xab24), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1001 | { USB_DEVICE(0x2019, 0xab24), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1065 | /* Qcom */ | 1002 | /* Qcom */ |
1066 | { USB_DEVICE(0x18e8, 0x6259), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1003 | { USB_DEVICE(0x18e8, 0x6259), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1067 | /* Sitecom */ | ||
1068 | { USB_DEVICE(0x0df6, 0x003b), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1069 | { USB_DEVICE(0x0df6, 0x003c), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1070 | { USB_DEVICE(0x0df6, 0x003d), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1071 | { USB_DEVICE(0x0df6, 0x0040), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1072 | { USB_DEVICE(0x0df6, 0x0047), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1073 | { USB_DEVICE(0x0df6, 0x0048), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1074 | { USB_DEVICE(0x0df6, 0x004a), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1075 | { USB_DEVICE(0x0df6, 0x004d), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1076 | /* SMC */ | 1004 | /* SMC */ |
1077 | { USB_DEVICE(0x083a, 0xa512), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1005 | { USB_DEVICE(0x083a, 0xa512), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1078 | { USB_DEVICE(0x083a, 0xa701), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1079 | { USB_DEVICE(0x083a, 0xa702), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1080 | { USB_DEVICE(0x083a, 0xc522), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1006 | { USB_DEVICE(0x083a, 0xc522), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1081 | { USB_DEVICE(0x083a, 0xd522), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1007 | { USB_DEVICE(0x083a, 0xd522), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1008 | { USB_DEVICE(0x083a, 0xf511), USB_DEVICE_DATA(&rt2800usb_ops) }, | ||
1082 | /* Sweex */ | 1009 | /* Sweex */ |
1083 | { USB_DEVICE(0x177f, 0x0153), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1010 | { USB_DEVICE(0x177f, 0x0153), USB_DEVICE_DATA(&rt2800usb_ops) }, |
1084 | { USB_DEVICE(0x177f, 0x0313), USB_DEVICE_DATA(&rt2800usb_ops) }, | 1011 | { USB_DEVICE(0x177f, 0x0313), USB_DEVICE_DATA(&rt2800usb_ops) }, |