Lines Matching refs:priv
121 static void rtl8187_iowrite_async(struct rtl8187_priv *priv, __le16 addr, in rtl8187_iowrite_async() argument
152 usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0), in rtl8187_iowrite_async()
155 usb_anchor_urb(urb, &priv->anchored); in rtl8187_iowrite_async()
164 static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv, in rtl818x_iowrite32_async() argument
169 rtl8187_iowrite_async(priv, cpu_to_le16((unsigned long)addr), in rtl818x_iowrite32_async()
175 struct rtl8187_priv *priv = dev->priv; in rtl8187_write_phy() local
180 rtl818x_iowrite8(priv, &priv->map->PHY[3], (data >> 24) & 0xFF); in rtl8187_write_phy()
181 rtl818x_iowrite8(priv, &priv->map->PHY[2], (data >> 16) & 0xFF); in rtl8187_write_phy()
182 rtl818x_iowrite8(priv, &priv->map->PHY[1], (data >> 8) & 0xFF); in rtl8187_write_phy()
183 rtl818x_iowrite8(priv, &priv->map->PHY[0], data & 0xFF); in rtl8187_write_phy()
191 struct rtl8187_priv *priv = hw->priv; in rtl8187_tx_cb() local
193 skb_pull(skb, priv->is_rtl8187b ? sizeof(struct rtl8187b_tx_hdr) : in rtl8187_tx_cb()
198 if (priv->is_rtl8187b) { in rtl8187_tx_cb()
199 skb_queue_tail(&priv->b_tx_status.queue, skb); in rtl8187_tx_cb()
202 while (skb_queue_len(&priv->b_tx_status.queue) > 5) { in rtl8187_tx_cb()
205 dev_dbg(&priv->udev->dev, in rtl8187_tx_cb()
208 old_skb = skb_dequeue(&priv->b_tx_status.queue); in rtl8187_tx_cb()
216 if (priv->is_rtl8187b) in rtl8187_tx_cb()
222 skb_queue_tail(&priv->b_tx_status.queue, skb); in rtl8187_tx_cb()
223 ieee80211_queue_delayed_work(hw, &priv->work, 0); in rtl8187_tx_cb()
231 struct rtl8187_priv *priv = dev->priv; in rtl8187_tx() local
261 rts_dur = ieee80211_rts_duration(dev, priv->vif, in rtl8187_tx()
266 rts_dur = ieee80211_ctstoself_duration(dev, priv->vif, in rtl8187_tx()
272 priv->seqno += 0x10; in rtl8187_tx()
274 tx_hdr->seq_ctrl |= cpu_to_le16(priv->seqno); in rtl8187_tx()
277 if (!priv->is_rtl8187b) { in rtl8187_tx()
299 ieee80211_generic_frame_duration(dev, priv->vif, in rtl8187_tx()
313 usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep), in rtl8187_tx()
316 usb_anchor_urb(urb, &priv->anchored); in rtl8187_tx()
330 struct rtl8187_priv *priv = dev->priv; in rtl8187_rx_cb() local
336 spin_lock_irqsave(&priv->rx_queue.lock, f); in rtl8187_rx_cb()
337 __skb_unlink(skb, &priv->rx_queue); in rtl8187_rx_cb()
338 spin_unlock_irqrestore(&priv->rx_queue.lock, f); in rtl8187_rx_cb()
346 if (!priv->is_rtl8187b) { in rtl8187_rx_cb()
379 priv->signal = signal; in rtl8187_rx_cb()
404 skb_queue_tail(&priv->rx_queue, skb); in rtl8187_rx_cb()
406 usb_anchor_urb(urb, &priv->anchored); in rtl8187_rx_cb()
409 skb_unlink(skb, &priv->rx_queue); in rtl8187_rx_cb()
416 struct rtl8187_priv *priv = dev->priv; in rtl8187_init_urbs() local
422 while (skb_queue_len(&priv->rx_queue) < 32) { in rtl8187_init_urbs()
433 usb_fill_bulk_urb(entry, priv->udev, in rtl8187_init_urbs()
434 usb_rcvbulkpipe(priv->udev, in rtl8187_init_urbs()
435 priv->is_rtl8187b ? 3 : 1), in rtl8187_init_urbs()
441 skb_queue_tail(&priv->rx_queue, skb); in rtl8187_init_urbs()
442 usb_anchor_urb(entry, &priv->anchored); in rtl8187_init_urbs()
445 skb_unlink(skb, &priv->rx_queue); in rtl8187_init_urbs()
456 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_init_urbs()
463 struct rtl8187_priv *priv = hw->priv; in rtl8187b_status_cb() local
494 val = le64_to_cpu(priv->b_tx_status.buf); in rtl8187b_status_cb()
508 spin_lock_irqsave(&priv->b_tx_status.queue.lock, flags); in rtl8187b_status_cb()
510 skb_queue_reverse_walk(&priv->b_tx_status.queue, iter) { in rtl8187b_status_cb()
532 __skb_unlink(skb, &priv->b_tx_status.queue); in rtl8187b_status_cb()
539 spin_unlock_irqrestore(&priv->b_tx_status.queue.lock, flags); in rtl8187b_status_cb()
542 usb_anchor_urb(urb, &priv->anchored); in rtl8187b_status_cb()
549 struct rtl8187_priv *priv = dev->priv; in rtl8187b_init_status_urb() local
557 usb_fill_bulk_urb(entry, priv->udev, usb_rcvbulkpipe(priv->udev, 9), in rtl8187b_init_status_urb()
558 &priv->b_tx_status.buf, sizeof(priv->b_tx_status.buf), in rtl8187b_init_status_urb()
561 usb_anchor_urb(entry, &priv->anchored); in rtl8187b_init_status_urb()
570 static void rtl8187_set_anaparam(struct rtl8187_priv *priv, bool rfon) in rtl8187_set_anaparam() argument
575 if (!priv->is_rtl8187b) { in rtl8187_set_anaparam()
595 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_set_anaparam()
597 reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); in rtl8187_set_anaparam()
599 rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); in rtl8187_set_anaparam()
600 rtl818x_iowrite32(priv, &priv->map->ANAPARAM, anaparam); in rtl8187_set_anaparam()
601 rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, anaparam2); in rtl8187_set_anaparam()
602 if (priv->is_rtl8187b) in rtl8187_set_anaparam()
603 rtl818x_iowrite8(priv, &priv->map->ANAPARAM3A, anaparam3); in rtl8187_set_anaparam()
605 rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); in rtl8187_set_anaparam()
606 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_set_anaparam()
612 struct rtl8187_priv *priv = dev->priv; in rtl8187_cmd_reset() local
616 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_cmd_reset()
619 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_cmd_reset()
624 if (!(rtl818x_ioread8(priv, &priv->map->CMD) & in rtl8187_cmd_reset()
635 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_LOAD); in rtl8187_cmd_reset()
640 if (!(rtl818x_ioread8(priv, &priv->map->EEPROM_CMD) & in rtl8187_cmd_reset()
655 struct rtl8187_priv *priv = dev->priv; in rtl8187_init_hw() local
660 rtl8187_set_anaparam(priv, true); in rtl8187_init_hw()
662 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); in rtl8187_init_hw()
665 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x10); in rtl8187_init_hw()
666 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x11); in rtl8187_init_hw()
667 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x00); in rtl8187_init_hw()
674 rtl8187_set_anaparam(priv, true); in rtl8187_init_hw()
677 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0); in rtl8187_init_hw()
678 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0); in rtl8187_init_hw()
680 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, (4 << 8)); in rtl8187_init_hw()
681 rtl818x_iowrite8(priv, &priv->map->GPIO0, 1); in rtl8187_init_hw()
682 rtl818x_iowrite8(priv, &priv->map->GP_ENABLE, 0); in rtl8187_init_hw()
684 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_init_hw()
686 rtl818x_iowrite16(priv, (__le16 *)0xFFF4, 0xFFFF); in rtl8187_init_hw()
687 reg = rtl818x_ioread8(priv, &priv->map->CONFIG1); in rtl8187_init_hw()
690 rtl818x_iowrite8(priv, &priv->map->CONFIG1, reg); in rtl8187_init_hw()
692 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_init_hw()
694 rtl818x_iowrite32(priv, &priv->map->INT_TIMEOUT, 0); in rtl8187_init_hw()
695 rtl818x_iowrite8(priv, &priv->map->WPA_CONF, 0); in rtl8187_init_hw()
696 rtl818x_iowrite8(priv, &priv->map->RATE_FALLBACK, 0); in rtl8187_init_hw()
699 rtl818x_iowrite8(priv, &priv->map->RESP_RATE, (8 << 4) | 0); in rtl8187_init_hw()
700 rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3); in rtl8187_init_hw()
703 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0); in rtl8187_init_hw()
704 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0); in rtl8187_init_hw()
705 reg = rtl818x_ioread8(priv, (u8 *)0xFE53); in rtl8187_init_hw()
706 rtl818x_iowrite8(priv, (u8 *)0xFE53, reg | (1 << 7)); in rtl8187_init_hw()
707 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, (4 << 8)); in rtl8187_init_hw()
708 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0x20); in rtl8187_init_hw()
709 rtl818x_iowrite8(priv, &priv->map->GP_ENABLE, 0); in rtl8187_init_hw()
710 rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, 0x80); in rtl8187_init_hw()
711 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0x80); in rtl8187_init_hw()
712 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x80); in rtl8187_init_hw()
715 rtl818x_iowrite32(priv, &priv->map->RF_TIMING, 0x000a8008); in rtl8187_init_hw()
716 rtl818x_iowrite16(priv, &priv->map->BRSR, 0xFFFF); in rtl8187_init_hw()
717 rtl818x_iowrite32(priv, &priv->map->RF_PARA, 0x00100044); in rtl8187_init_hw()
718 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_init_hw()
720 rtl818x_iowrite8(priv, &priv->map->CONFIG3, 0x44); in rtl8187_init_hw()
721 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_init_hw()
723 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FF7); in rtl8187_init_hw()
726 priv->rf->init(dev); in rtl8187_init_hw()
728 rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3); in rtl8187_init_hw()
729 reg = rtl818x_ioread8(priv, &priv->map->PGSELECT) & ~1; in rtl8187_init_hw()
730 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg | 1); in rtl8187_init_hw()
731 rtl818x_iowrite16(priv, (__le16 *)0xFFFE, 0x10); in rtl8187_init_hw()
732 rtl818x_iowrite8(priv, &priv->map->TALLY_SEL, 0x80); in rtl8187_init_hw()
733 rtl818x_iowrite8(priv, (u8 *)0xFFFF, 0x60); in rtl8187_init_hw()
734 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg); in rtl8187_init_hw()
771 struct rtl8187_priv *priv = dev->priv; in rtl8187b_init_hw() local
775 rtl8187_set_anaparam(priv, true); in rtl8187b_init_hw()
779 rtl818x_iowrite8(priv, (u8 *)0xFF61, 0x10); in rtl8187b_init_hw()
780 reg = rtl818x_ioread8(priv, (u8 *)0xFF62); in rtl8187b_init_hw()
781 rtl818x_iowrite8(priv, (u8 *)0xFF62, reg & ~(1 << 5)); in rtl8187b_init_hw()
782 rtl818x_iowrite8(priv, (u8 *)0xFF62, reg | (1 << 5)); in rtl8187b_init_hw()
788 rtl8187_set_anaparam(priv, true); in rtl8187b_init_hw()
793 rtl818x_iowrite16(priv, (__le16 *)0xFF34, 0x0FFF); in rtl8187b_init_hw()
795 reg = rtl818x_ioread8(priv, &priv->map->CW_CONF); in rtl8187b_init_hw()
797 rtl818x_iowrite8(priv, &priv->map->CW_CONF, reg); in rtl8187b_init_hw()
800 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFE0, 0x0FFF, 1); in rtl8187b_init_hw()
801 rtl818x_iowrite8_idx(priv, (u8 *)0xFFE2, 0x00, 1); in rtl8187b_init_hw()
803 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFD4, 0xFFFF, 1); in rtl8187b_init_hw()
805 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187b_init_hw()
807 reg = rtl818x_ioread8(priv, &priv->map->CONFIG1); in rtl8187b_init_hw()
808 rtl818x_iowrite8(priv, &priv->map->CONFIG1, (reg & 0x3F) | 0x80); in rtl8187b_init_hw()
809 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187b_init_hw()
812 rtl818x_iowrite8(priv, &priv->map->WPA_CONF, 0); in rtl8187b_init_hw()
814 rtl818x_iowrite8_idx(priv, in rtl8187b_init_hw()
821 rtl818x_iowrite16(priv, &priv->map->TID_AC_MAP, 0xFA50); in rtl8187b_init_hw()
822 rtl818x_iowrite16(priv, &priv->map->INT_MIG, 0); in rtl8187b_init_hw()
824 rtl818x_iowrite32_idx(priv, (__le32 *)0xFFF0, 0, 1); in rtl8187b_init_hw()
825 rtl818x_iowrite32_idx(priv, (__le32 *)0xFFF4, 0, 1); in rtl8187b_init_hw()
826 rtl818x_iowrite8_idx(priv, (u8 *)0xFFF8, 0, 1); in rtl8187b_init_hw()
828 rtl818x_iowrite32(priv, &priv->map->RF_TIMING, 0x00004001); in rtl8187b_init_hw()
831 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF72, 0x569A, 2); in rtl8187b_init_hw()
833 rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, 0x0480); in rtl8187b_init_hw()
834 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0x2488); in rtl8187b_init_hw()
835 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FFF); in rtl8187b_init_hw()
838 priv->rf->init(dev); in rtl8187b_init_hw()
841 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187b_init_hw()
842 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); in rtl8187b_init_hw()
844 rtl818x_iowrite8(priv, (u8 *)0xFE41, 0xF4); in rtl8187b_init_hw()
845 rtl818x_iowrite8(priv, (u8 *)0xFE40, 0x00); in rtl8187b_init_hw()
846 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x00); in rtl8187b_init_hw()
847 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x01); in rtl8187b_init_hw()
848 rtl818x_iowrite8(priv, (u8 *)0xFE40, 0x0F); in rtl8187b_init_hw()
849 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x00); in rtl8187b_init_hw()
850 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x01); in rtl8187b_init_hw()
852 reg = rtl818x_ioread8(priv, (u8 *)0xFFDB); in rtl8187b_init_hw()
853 rtl818x_iowrite8(priv, (u8 *)0xFFDB, reg | (1 << 2)); in rtl8187b_init_hw()
854 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF72, 0x59FA, 3); in rtl8187b_init_hw()
855 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF74, 0x59D2, 3); in rtl8187b_init_hw()
856 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF76, 0x59D2, 3); in rtl8187b_init_hw()
857 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF78, 0x19FA, 3); in rtl8187b_init_hw()
858 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF7A, 0x19FA, 3); in rtl8187b_init_hw()
859 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF7C, 0x00D0, 3); in rtl8187b_init_hw()
860 rtl818x_iowrite8(priv, (u8 *)0xFF61, 0); in rtl8187b_init_hw()
861 rtl818x_iowrite8_idx(priv, (u8 *)0xFF80, 0x0F, 1); in rtl8187b_init_hw()
862 rtl818x_iowrite8_idx(priv, (u8 *)0xFF83, 0x03, 1); in rtl8187b_init_hw()
863 rtl818x_iowrite8(priv, (u8 *)0xFFDA, 0x10); in rtl8187b_init_hw()
864 rtl818x_iowrite8_idx(priv, (u8 *)0xFF4D, 0x08, 2); in rtl8187b_init_hw()
866 rtl818x_iowrite32(priv, &priv->map->HSSI_PARA, 0x0600321B); in rtl8187b_init_hw()
868 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFEC, 0x0800, 1); in rtl8187b_init_hw()
870 priv->slot_time = 0x9; in rtl8187b_init_hw()
871 priv->aifsn[0] = 2; /* AIFSN[AC_VO] */ in rtl8187b_init_hw()
872 priv->aifsn[1] = 2; /* AIFSN[AC_VI] */ in rtl8187b_init_hw()
873 priv->aifsn[2] = 7; /* AIFSN[AC_BK] */ in rtl8187b_init_hw()
874 priv->aifsn[3] = 3; /* AIFSN[AC_BE] */ in rtl8187b_init_hw()
875 rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); in rtl8187b_init_hw()
878 rtl818x_iowrite8(priv, &priv->map->MSR, RTL818X_MSR_ENEDCA); in rtl8187b_init_hw()
892 struct rtl8187_priv *priv = container_of(work, struct rtl8187_priv, in rtl8187_work() local
895 struct ieee80211_hw *dev = priv->dev; in rtl8187_work()
901 mutex_lock(&priv->conf_mutex); in rtl8187_work()
902 tmp = rtl818x_ioread16(priv, (__le16 *)0xFFFA); in rtl8187_work()
903 length = skb_queue_len(&priv->b_tx_status.queue); in rtl8187_work()
909 while (skb_queue_len(&priv->b_tx_status.queue) > 0) { in rtl8187_work()
912 old_skb = skb_dequeue(&priv->b_tx_status.queue); in rtl8187_work()
920 mutex_unlock(&priv->conf_mutex); in rtl8187_work()
925 struct rtl8187_priv *priv = dev->priv; in rtl8187_start() local
929 mutex_lock(&priv->conf_mutex); in rtl8187_start()
931 ret = (!priv->is_rtl8187b) ? rtl8187_init_hw(dev) : in rtl8187_start()
936 init_usb_anchor(&priv->anchored); in rtl8187_start()
937 priv->dev = dev; in rtl8187_start()
939 if (priv->is_rtl8187b) { in rtl8187_start()
949 priv->rx_conf = reg; in rtl8187_start()
950 rtl818x_iowrite32(priv, &priv->map->RX_CONF, reg); in rtl8187_start()
952 reg = rtl818x_ioread8(priv, &priv->map->TX_AGC_CTL); in rtl8187_start()
956 rtl818x_iowrite8(priv, &priv->map->TX_AGC_CTL, reg); in rtl8187_start()
958 rtl818x_iowrite32(priv, &priv->map->TX_CONF, in rtl8187_start()
969 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_start()
973 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); in rtl8187_start()
975 rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0); in rtl8187_start()
976 rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0); in rtl8187_start()
992 priv->rx_conf = reg; in rtl8187_start()
993 rtl818x_iowrite32(priv, &priv->map->RX_CONF, reg); in rtl8187_start()
995 reg = rtl818x_ioread8(priv, &priv->map->CW_CONF); in rtl8187_start()
998 rtl818x_iowrite8(priv, &priv->map->CW_CONF, reg); in rtl8187_start()
1000 reg = rtl818x_ioread8(priv, &priv->map->TX_AGC_CTL); in rtl8187_start()
1004 rtl818x_iowrite8(priv, &priv->map->TX_AGC_CTL, reg); in rtl8187_start()
1009 rtl818x_iowrite32(priv, &priv->map->TX_CONF, reg); in rtl8187_start()
1011 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_start()
1014 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_start()
1015 INIT_DELAYED_WORK(&priv->work, rtl8187_work); in rtl8187_start()
1018 mutex_unlock(&priv->conf_mutex); in rtl8187_start()
1024 struct rtl8187_priv *priv = dev->priv; in rtl8187_stop() local
1028 mutex_lock(&priv->conf_mutex); in rtl8187_stop()
1029 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); in rtl8187_stop()
1031 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_stop()
1034 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_stop()
1036 priv->rf->stop(dev); in rtl8187_stop()
1037 rtl8187_set_anaparam(priv, false); in rtl8187_stop()
1039 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_stop()
1040 reg = rtl818x_ioread8(priv, &priv->map->CONFIG4); in rtl8187_stop()
1041 rtl818x_iowrite8(priv, &priv->map->CONFIG4, reg | RTL818X_CONFIG4_VCOOFF); in rtl8187_stop()
1042 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_stop()
1044 while ((skb = skb_dequeue(&priv->b_tx_status.queue))) in rtl8187_stop()
1047 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_stop()
1048 mutex_unlock(&priv->conf_mutex); in rtl8187_stop()
1050 if (!priv->is_rtl8187b) in rtl8187_stop()
1051 cancel_delayed_work_sync(&priv->work); in rtl8187_stop()
1056 struct rtl8187_priv *priv = dev->priv; in rtl8187_get_tsf() local
1058 return rtl818x_ioread32(priv, &priv->map->TSFT[0]) | in rtl8187_get_tsf()
1059 (u64)(rtl818x_ioread32(priv, &priv->map->TSFT[1])) << 32; in rtl8187_get_tsf()
1107 struct rtl8187_priv *priv = dev->priv; in rtl8187_add_interface() local
1112 mutex_lock(&priv->conf_mutex); in rtl8187_add_interface()
1113 if (priv->vif) in rtl8187_add_interface()
1125 priv->vif = vif; in rtl8187_add_interface()
1134 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_add_interface()
1136 rtl818x_iowrite8(priv, &priv->map->MAC[i], in rtl8187_add_interface()
1138 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_add_interface()
1141 mutex_unlock(&priv->conf_mutex); in rtl8187_add_interface()
1148 struct rtl8187_priv *priv = dev->priv; in rtl8187_remove_interface() local
1149 mutex_lock(&priv->conf_mutex); in rtl8187_remove_interface()
1150 priv->vif = NULL; in rtl8187_remove_interface()
1151 mutex_unlock(&priv->conf_mutex); in rtl8187_remove_interface()
1156 struct rtl8187_priv *priv = dev->priv; in rtl8187_config() local
1160 mutex_lock(&priv->conf_mutex); in rtl8187_config()
1161 reg = rtl818x_ioread32(priv, &priv->map->TX_CONF); in rtl8187_config()
1166 rtl818x_iowrite32(priv, &priv->map->TX_CONF, in rtl8187_config()
1168 priv->rf->set_chan(dev, conf); in rtl8187_config()
1170 rtl818x_iowrite32(priv, &priv->map->TX_CONF, reg); in rtl8187_config()
1172 rtl818x_iowrite16(priv, &priv->map->ATIM_WND, 2); in rtl8187_config()
1173 rtl818x_iowrite16(priv, &priv->map->ATIMTR_INTERVAL, 100); in rtl8187_config()
1174 rtl818x_iowrite16(priv, &priv->map->BEACON_INTERVAL, 100); in rtl8187_config()
1175 rtl818x_iowrite16(priv, &priv->map->BEACON_INTERVAL_TIME, 100); in rtl8187_config()
1176 mutex_unlock(&priv->conf_mutex); in rtl8187_config()
1193 static void rtl8187_conf_erp(struct rtl8187_priv *priv, bool use_short_slot, in rtl8187_conf_erp() argument
1196 if (priv->is_rtl8187b) { in rtl8187_conf_erp()
1202 priv->slot_time = 0x9; in rtl8187_conf_erp()
1206 priv->slot_time = 0x14; in rtl8187_conf_erp()
1210 rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); in rtl8187_conf_erp()
1211 rtl818x_iowrite8(priv, &priv->map->SLOT, priv->slot_time); in rtl8187_conf_erp()
1212 rtl818x_iowrite8(priv, &priv->map->DIFS, difs); in rtl8187_conf_erp()
1218 rtl818x_iowrite8(priv, (u8 *)&priv->map->BRSR + 1, eifs); in rtl8187_conf_erp()
1230 rtl818x_iowrite8(priv, &priv->map->CARRIER_SENSE_COUNTER, in rtl8187_conf_erp()
1234 rtl818x_iowrite8(priv, (u8 *) rtl8187b_ac_addr[queue], in rtl8187_conf_erp()
1235 priv->aifsn[queue] * priv->slot_time + in rtl8187_conf_erp()
1238 rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); in rtl8187_conf_erp()
1240 rtl818x_iowrite8(priv, &priv->map->SLOT, 0x9); in rtl8187_conf_erp()
1241 rtl818x_iowrite8(priv, &priv->map->DIFS, 0x14); in rtl8187_conf_erp()
1242 rtl818x_iowrite8(priv, &priv->map->EIFS, 91 - 0x14); in rtl8187_conf_erp()
1244 rtl818x_iowrite8(priv, &priv->map->SLOT, 0x14); in rtl8187_conf_erp()
1245 rtl818x_iowrite8(priv, &priv->map->DIFS, 0x24); in rtl8187_conf_erp()
1246 rtl818x_iowrite8(priv, &priv->map->EIFS, 91 - 0x24); in rtl8187_conf_erp()
1256 struct rtl8187_priv *priv = dev->priv; in rtl8187_bss_info_changed() local
1264 mutex_lock(&priv->conf_mutex); in rtl8187_bss_info_changed()
1266 rtl818x_iowrite8(priv, &priv->map->BSSID[i], in rtl8187_bss_info_changed()
1269 if (priv->is_rtl8187b) in rtl8187_bss_info_changed()
1283 rtl818x_iowrite8(priv, &priv->map->MSR, reg); in rtl8187_bss_info_changed()
1285 mutex_unlock(&priv->conf_mutex); in rtl8187_bss_info_changed()
1289 rtl8187_conf_erp(priv, info->use_short_slot, in rtl8187_bss_info_changed()
1314 struct rtl8187_priv *priv = dev->priv; in rtl8187_configure_filter() local
1317 priv->rx_conf ^= RTL818X_RX_CONF_FCS; in rtl8187_configure_filter()
1319 priv->rx_conf ^= RTL818X_RX_CONF_CTRL; in rtl8187_configure_filter()
1322 priv->rx_conf |= RTL818X_RX_CONF_MONITOR; in rtl8187_configure_filter()
1324 priv->rx_conf &= ~RTL818X_RX_CONF_MONITOR; in rtl8187_configure_filter()
1328 if (priv->rx_conf & RTL818X_RX_CONF_FCS) in rtl8187_configure_filter()
1330 if (priv->rx_conf & RTL818X_RX_CONF_CTRL) in rtl8187_configure_filter()
1332 if (priv->rx_conf & RTL818X_RX_CONF_MONITOR) { in rtl8187_configure_filter()
1337 rtl818x_iowrite32_async(priv, &priv->map->RX_CONF, priv->rx_conf); in rtl8187_configure_filter()
1345 struct rtl8187_priv *priv = dev->priv; in rtl8187_conf_tx() local
1354 if (priv->is_rtl8187b) { in rtl8187_conf_tx()
1355 priv->aifsn[queue] = params->aifs; in rtl8187_conf_tx()
1364 rtl818x_iowrite32(priv, rtl8187b_ac_addr[queue], in rtl8187_conf_tx()
1367 priv->slot_time + SIFS_TIME)); in rtl8187_conf_tx()
1372 rtl818x_iowrite8(priv, &priv->map->CW_VAL, in rtl8187_conf_tx()
1402 struct rtl8187_priv *priv = dev->priv; in rtl8187_eeprom_register_read() local
1403 u8 reg = rtl818x_ioread8(priv, &priv->map->EEPROM_CMD); in rtl8187_eeprom_register_read()
1414 struct rtl8187_priv *priv = dev->priv; in rtl8187_eeprom_register_write() local
1426 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, reg); in rtl8187_eeprom_register_write()
1435 struct rtl8187_priv *priv; in rtl8187_probe() local
1444 dev = ieee80211_alloc_hw(sizeof(*priv), &rtl8187_ops); in rtl8187_probe()
1450 priv = dev->priv; in rtl8187_probe()
1451 priv->is_rtl8187b = (id->driver_info == DEVICE_RTL8187B); in rtl8187_probe()
1454 priv->io_dmabuf = kmalloc(sizeof(*priv->io_dmabuf), GFP_KERNEL); in rtl8187_probe()
1455 if (!priv->io_dmabuf) { in rtl8187_probe()
1459 mutex_init(&priv->io_mutex); in rtl8187_probe()
1460 mutex_init(&priv->conf_mutex); in rtl8187_probe()
1464 priv->udev = udev; in rtl8187_probe()
1468 skb_queue_head_init(&priv->rx_queue); in rtl8187_probe()
1470 BUILD_BUG_ON(sizeof(priv->channels) != sizeof(rtl818x_channels)); in rtl8187_probe()
1471 BUILD_BUG_ON(sizeof(priv->rates) != sizeof(rtl818x_rates)); in rtl8187_probe()
1473 memcpy(priv->channels, rtl818x_channels, sizeof(rtl818x_channels)); in rtl8187_probe()
1474 memcpy(priv->rates, rtl818x_rates, sizeof(rtl818x_rates)); in rtl8187_probe()
1475 priv->map = (struct rtl818x_csr *)0xFF00; in rtl8187_probe()
1477 priv->band.band = NL80211_BAND_2GHZ; in rtl8187_probe()
1478 priv->band.channels = priv->channels; in rtl8187_probe()
1479 priv->band.n_channels = ARRAY_SIZE(rtl818x_channels); in rtl8187_probe()
1480 priv->band.bitrates = priv->rates; in rtl8187_probe()
1481 priv->band.n_bitrates = ARRAY_SIZE(rtl818x_rates); in rtl8187_probe()
1482 dev->wiphy->bands[NL80211_BAND_2GHZ] = &priv->band; in rtl8187_probe()
1495 if (rtl818x_ioread32(priv, &priv->map->RX_CONF) & (1 << 6)) in rtl8187_probe()
1500 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_probe()
1512 channel = priv->channels; in rtl8187_probe()
1527 &priv->txpwr_base); in rtl8187_probe()
1529 reg = rtl818x_ioread8(priv, &priv->map->PGSELECT) & ~1; in rtl8187_probe()
1530 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg | 1); in rtl8187_probe()
1534 priv->asic_rev = rtl818x_ioread8(priv, (u8 *)0xFFFE) & 0x3; in rtl8187_probe()
1535 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg); in rtl8187_probe()
1536 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_probe()
1538 if (!priv->is_rtl8187b) { in rtl8187_probe()
1540 reg32 = rtl818x_ioread32(priv, &priv->map->TX_CONF); in rtl8187_probe()
1547 priv->is_rtl8187b = 1; in rtl8187_probe()
1548 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1566 switch (rtl818x_ioread8(priv, (u8 *)0xFFE1)) { in rtl8187_probe()
1569 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1573 priv->hw_rev = RTL8187BvD; in rtl8187_probe()
1577 priv->hw_rev = RTL8187BvE; in rtl8187_probe()
1581 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1585 if (!priv->is_rtl8187b) { in rtl8187_probe()
1606 priv->rfkill_mask = RFKILL_MASK_8187_89_97; in rtl8187_probe()
1610 priv->rfkill_mask = RFKILL_MASK_8198; in rtl8187_probe()
1618 if ((id->driver_info == DEVICE_RTL8187) && priv->is_rtl8187b) in rtl8187_probe()
1622 priv->rf = rtl8187_detect_rf(dev); in rtl8187_probe()
1623 dev->extra_tx_headroom = (!priv->is_rtl8187b) ? in rtl8187_probe()
1626 if (!priv->is_rtl8187b) in rtl8187_probe()
1636 skb_queue_head_init(&priv->b_tx_status.queue); in rtl8187_probe()
1639 mac_addr, chip_name, priv->asic_rev, priv->rf->name, in rtl8187_probe()
1640 priv->rfkill_mask); in rtl8187_probe()
1652 kfree(priv->io_dmabuf); in rtl8187_probe()
1663 struct rtl8187_priv *priv; in rtl8187_disconnect() local
1674 priv = dev->priv; in rtl8187_disconnect()
1675 usb_reset_device(priv->udev); in rtl8187_disconnect()
1677 kfree(priv->io_dmabuf); in rtl8187_disconnect()