Lines Matching refs:priv

124 static void rtl8187_iowrite_async(struct rtl8187_priv *priv, __le16 addr,  in rtl8187_iowrite_async()  argument
155 usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0), in rtl8187_iowrite_async()
158 usb_anchor_urb(urb, &priv->anchored); in rtl8187_iowrite_async()
167 static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv, in rtl818x_iowrite32_async() argument
172 rtl8187_iowrite_async(priv, cpu_to_le16((unsigned long)addr), in rtl818x_iowrite32_async()
178 struct rtl8187_priv *priv = dev->priv; in rtl8187_write_phy() local
183 rtl818x_iowrite8(priv, &priv->map->PHY[3], (data >> 24) & 0xFF); in rtl8187_write_phy()
184 rtl818x_iowrite8(priv, &priv->map->PHY[2], (data >> 16) & 0xFF); in rtl8187_write_phy()
185 rtl818x_iowrite8(priv, &priv->map->PHY[1], (data >> 8) & 0xFF); in rtl8187_write_phy()
186 rtl818x_iowrite8(priv, &priv->map->PHY[0], data & 0xFF); in rtl8187_write_phy()
194 struct rtl8187_priv *priv = hw->priv; in rtl8187_tx_cb() local
196 skb_pull(skb, priv->is_rtl8187b ? sizeof(struct rtl8187b_tx_hdr) : in rtl8187_tx_cb()
201 if (priv->is_rtl8187b) { in rtl8187_tx_cb()
202 skb_queue_tail(&priv->b_tx_status.queue, skb); in rtl8187_tx_cb()
205 while (skb_queue_len(&priv->b_tx_status.queue) > 5) { in rtl8187_tx_cb()
208 dev_dbg(&priv->udev->dev, in rtl8187_tx_cb()
211 old_skb = skb_dequeue(&priv->b_tx_status.queue); in rtl8187_tx_cb()
219 if (priv->is_rtl8187b) in rtl8187_tx_cb()
225 skb_queue_tail(&priv->b_tx_status.queue, skb); in rtl8187_tx_cb()
226 ieee80211_queue_delayed_work(hw, &priv->work, 0); in rtl8187_tx_cb()
234 struct rtl8187_priv *priv = dev->priv; in rtl8187_tx() local
264 rts_dur = ieee80211_rts_duration(dev, priv->vif, in rtl8187_tx()
269 rts_dur = ieee80211_ctstoself_duration(dev, priv->vif, in rtl8187_tx()
275 priv->seqno += 0x10; in rtl8187_tx()
277 tx_hdr->seq_ctrl |= cpu_to_le16(priv->seqno); in rtl8187_tx()
280 if (!priv->is_rtl8187b) { in rtl8187_tx()
304 ieee80211_generic_frame_duration(dev, priv->vif, in rtl8187_tx()
318 usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep), in rtl8187_tx()
321 usb_anchor_urb(urb, &priv->anchored); in rtl8187_tx()
335 struct rtl8187_priv *priv = dev->priv; in rtl8187_rx_cb() local
341 spin_lock_irqsave(&priv->rx_queue.lock, f); in rtl8187_rx_cb()
342 __skb_unlink(skb, &priv->rx_queue); in rtl8187_rx_cb()
343 spin_unlock_irqrestore(&priv->rx_queue.lock, f); in rtl8187_rx_cb()
351 if (!priv->is_rtl8187b) { in rtl8187_rx_cb()
384 priv->signal = signal; in rtl8187_rx_cb()
409 skb_queue_tail(&priv->rx_queue, skb); in rtl8187_rx_cb()
411 usb_anchor_urb(urb, &priv->anchored); in rtl8187_rx_cb()
414 skb_unlink(skb, &priv->rx_queue); in rtl8187_rx_cb()
421 struct rtl8187_priv *priv = dev->priv; in rtl8187_init_urbs() local
427 while (skb_queue_len(&priv->rx_queue) < 32) { in rtl8187_init_urbs()
438 usb_fill_bulk_urb(entry, priv->udev, in rtl8187_init_urbs()
439 usb_rcvbulkpipe(priv->udev, in rtl8187_init_urbs()
440 priv->is_rtl8187b ? 3 : 1), in rtl8187_init_urbs()
446 skb_queue_tail(&priv->rx_queue, skb); in rtl8187_init_urbs()
447 usb_anchor_urb(entry, &priv->anchored); in rtl8187_init_urbs()
451 skb_unlink(skb, &priv->rx_queue); in rtl8187_init_urbs()
460 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_init_urbs()
467 struct rtl8187_priv *priv = hw->priv; in rtl8187b_status_cb() local
498 val = le64_to_cpu(priv->b_tx_status.buf); in rtl8187b_status_cb()
512 spin_lock_irqsave(&priv->b_tx_status.queue.lock, flags); in rtl8187b_status_cb()
513 skb_queue_reverse_walk(&priv->b_tx_status.queue, skb) { in rtl8187b_status_cb()
530 if (skb != (struct sk_buff *) &priv->b_tx_status.queue) { in rtl8187b_status_cb()
533 __skb_unlink(skb, &priv->b_tx_status.queue); in rtl8187b_status_cb()
540 spin_unlock_irqrestore(&priv->b_tx_status.queue.lock, flags); in rtl8187b_status_cb()
543 usb_anchor_urb(urb, &priv->anchored); in rtl8187b_status_cb()
550 struct rtl8187_priv *priv = dev->priv; in rtl8187b_init_status_urb() local
558 usb_fill_bulk_urb(entry, priv->udev, usb_rcvbulkpipe(priv->udev, 9), in rtl8187b_init_status_urb()
559 &priv->b_tx_status.buf, sizeof(priv->b_tx_status.buf), in rtl8187b_init_status_urb()
562 usb_anchor_urb(entry, &priv->anchored); in rtl8187b_init_status_urb()
571 static void rtl8187_set_anaparam(struct rtl8187_priv *priv, bool rfon) in rtl8187_set_anaparam() argument
576 if (!priv->is_rtl8187b) { in rtl8187_set_anaparam()
596 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_set_anaparam()
598 reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); in rtl8187_set_anaparam()
600 rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); in rtl8187_set_anaparam()
601 rtl818x_iowrite32(priv, &priv->map->ANAPARAM, anaparam); in rtl8187_set_anaparam()
602 rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, anaparam2); in rtl8187_set_anaparam()
603 if (priv->is_rtl8187b) in rtl8187_set_anaparam()
604 rtl818x_iowrite8(priv, &priv->map->ANAPARAM3A, anaparam3); in rtl8187_set_anaparam()
606 rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg); in rtl8187_set_anaparam()
607 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_set_anaparam()
613 struct rtl8187_priv *priv = dev->priv; in rtl8187_cmd_reset() local
617 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_cmd_reset()
620 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_cmd_reset()
625 if (!(rtl818x_ioread8(priv, &priv->map->CMD) & in rtl8187_cmd_reset()
636 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_LOAD); in rtl8187_cmd_reset()
641 if (!(rtl818x_ioread8(priv, &priv->map->EEPROM_CMD) & in rtl8187_cmd_reset()
656 struct rtl8187_priv *priv = dev->priv; in rtl8187_init_hw() local
661 rtl8187_set_anaparam(priv, true); in rtl8187_init_hw()
663 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); in rtl8187_init_hw()
666 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x10); in rtl8187_init_hw()
667 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x11); in rtl8187_init_hw()
668 rtl818x_iowrite8(priv, (u8 *)0xFE18, 0x00); in rtl8187_init_hw()
675 rtl8187_set_anaparam(priv, true); in rtl8187_init_hw()
678 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0); in rtl8187_init_hw()
679 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0); in rtl8187_init_hw()
681 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, (4 << 8)); in rtl8187_init_hw()
682 rtl818x_iowrite8(priv, &priv->map->GPIO0, 1); in rtl8187_init_hw()
683 rtl818x_iowrite8(priv, &priv->map->GP_ENABLE, 0); in rtl8187_init_hw()
685 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_init_hw()
687 rtl818x_iowrite16(priv, (__le16 *)0xFFF4, 0xFFFF); in rtl8187_init_hw()
688 reg = rtl818x_ioread8(priv, &priv->map->CONFIG1); in rtl8187_init_hw()
691 rtl818x_iowrite8(priv, &priv->map->CONFIG1, reg); in rtl8187_init_hw()
693 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_init_hw()
695 rtl818x_iowrite32(priv, &priv->map->INT_TIMEOUT, 0); in rtl8187_init_hw()
696 rtl818x_iowrite8(priv, &priv->map->WPA_CONF, 0); in rtl8187_init_hw()
697 rtl818x_iowrite8(priv, &priv->map->RATE_FALLBACK, 0); in rtl8187_init_hw()
700 rtl818x_iowrite8(priv, &priv->map->RESP_RATE, (8 << 4) | 0); in rtl8187_init_hw()
701 rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3); in rtl8187_init_hw()
704 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0); in rtl8187_init_hw()
705 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0); in rtl8187_init_hw()
706 reg = rtl818x_ioread8(priv, (u8 *)0xFE53); in rtl8187_init_hw()
707 rtl818x_iowrite8(priv, (u8 *)0xFE53, reg | (1 << 7)); in rtl8187_init_hw()
708 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, (4 << 8)); in rtl8187_init_hw()
709 rtl818x_iowrite8(priv, &priv->map->GPIO0, 0x20); in rtl8187_init_hw()
710 rtl818x_iowrite8(priv, &priv->map->GP_ENABLE, 0); in rtl8187_init_hw()
711 rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, 0x80); in rtl8187_init_hw()
712 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0x80); in rtl8187_init_hw()
713 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x80); in rtl8187_init_hw()
716 rtl818x_iowrite32(priv, &priv->map->RF_TIMING, 0x000a8008); in rtl8187_init_hw()
717 rtl818x_iowrite16(priv, &priv->map->BRSR, 0xFFFF); in rtl8187_init_hw()
718 rtl818x_iowrite32(priv, &priv->map->RF_PARA, 0x00100044); in rtl8187_init_hw()
719 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_init_hw()
721 rtl818x_iowrite8(priv, &priv->map->CONFIG3, 0x44); in rtl8187_init_hw()
722 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187_init_hw()
724 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FF7); in rtl8187_init_hw()
727 priv->rf->init(dev); in rtl8187_init_hw()
729 rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3); in rtl8187_init_hw()
730 reg = rtl818x_ioread8(priv, &priv->map->PGSELECT) & ~1; in rtl8187_init_hw()
731 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg | 1); in rtl8187_init_hw()
732 rtl818x_iowrite16(priv, (__le16 *)0xFFFE, 0x10); in rtl8187_init_hw()
733 rtl818x_iowrite8(priv, &priv->map->TALLY_SEL, 0x80); in rtl8187_init_hw()
734 rtl818x_iowrite8(priv, (u8 *)0xFFFF, 0x60); in rtl8187_init_hw()
735 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg); in rtl8187_init_hw()
772 struct rtl8187_priv *priv = dev->priv; in rtl8187b_init_hw() local
776 rtl8187_set_anaparam(priv, true); in rtl8187b_init_hw()
780 rtl818x_iowrite8(priv, (u8 *)0xFF61, 0x10); in rtl8187b_init_hw()
781 reg = rtl818x_ioread8(priv, (u8 *)0xFF62); in rtl8187b_init_hw()
782 rtl818x_iowrite8(priv, (u8 *)0xFF62, reg & ~(1 << 5)); in rtl8187b_init_hw()
783 rtl818x_iowrite8(priv, (u8 *)0xFF62, reg | (1 << 5)); in rtl8187b_init_hw()
789 rtl8187_set_anaparam(priv, true); in rtl8187b_init_hw()
794 rtl818x_iowrite16(priv, (__le16 *)0xFF34, 0x0FFF); in rtl8187b_init_hw()
796 reg = rtl818x_ioread8(priv, &priv->map->CW_CONF); in rtl8187b_init_hw()
798 rtl818x_iowrite8(priv, &priv->map->CW_CONF, reg); in rtl8187b_init_hw()
801 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFE0, 0x0FFF, 1); in rtl8187b_init_hw()
802 rtl818x_iowrite8_idx(priv, (u8 *)0xFFE2, 0x00, 1); in rtl8187b_init_hw()
804 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFD4, 0xFFFF, 1); in rtl8187b_init_hw()
806 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187b_init_hw()
808 reg = rtl818x_ioread8(priv, &priv->map->CONFIG1); in rtl8187b_init_hw()
809 rtl818x_iowrite8(priv, &priv->map->CONFIG1, (reg & 0x3F) | 0x80); in rtl8187b_init_hw()
810 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, in rtl8187b_init_hw()
813 rtl818x_iowrite8(priv, &priv->map->WPA_CONF, 0); in rtl8187b_init_hw()
815 rtl818x_iowrite8_idx(priv, in rtl8187b_init_hw()
822 rtl818x_iowrite16(priv, &priv->map->TID_AC_MAP, 0xFA50); in rtl8187b_init_hw()
823 rtl818x_iowrite16(priv, &priv->map->INT_MIG, 0); in rtl8187b_init_hw()
825 rtl818x_iowrite32_idx(priv, (__le32 *)0xFFF0, 0, 1); in rtl8187b_init_hw()
826 rtl818x_iowrite32_idx(priv, (__le32 *)0xFFF4, 0, 1); in rtl8187b_init_hw()
827 rtl818x_iowrite8_idx(priv, (u8 *)0xFFF8, 0, 1); in rtl8187b_init_hw()
829 rtl818x_iowrite32(priv, &priv->map->RF_TIMING, 0x00004001); in rtl8187b_init_hw()
832 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF72, 0x569A, 2); in rtl8187b_init_hw()
834 rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, 0x0480); in rtl8187b_init_hw()
835 rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0x2488); in rtl8187b_init_hw()
836 rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FFF); in rtl8187b_init_hw()
839 priv->rf->init(dev); in rtl8187b_init_hw()
842 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187b_init_hw()
843 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); in rtl8187b_init_hw()
845 rtl818x_iowrite8(priv, (u8 *)0xFE41, 0xF4); in rtl8187b_init_hw()
846 rtl818x_iowrite8(priv, (u8 *)0xFE40, 0x00); in rtl8187b_init_hw()
847 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x00); in rtl8187b_init_hw()
848 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x01); in rtl8187b_init_hw()
849 rtl818x_iowrite8(priv, (u8 *)0xFE40, 0x0F); in rtl8187b_init_hw()
850 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x00); in rtl8187b_init_hw()
851 rtl818x_iowrite8(priv, (u8 *)0xFE42, 0x01); in rtl8187b_init_hw()
853 reg = rtl818x_ioread8(priv, (u8 *)0xFFDB); in rtl8187b_init_hw()
854 rtl818x_iowrite8(priv, (u8 *)0xFFDB, reg | (1 << 2)); in rtl8187b_init_hw()
855 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF72, 0x59FA, 3); in rtl8187b_init_hw()
856 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF74, 0x59D2, 3); in rtl8187b_init_hw()
857 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF76, 0x59D2, 3); in rtl8187b_init_hw()
858 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF78, 0x19FA, 3); in rtl8187b_init_hw()
859 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF7A, 0x19FA, 3); in rtl8187b_init_hw()
860 rtl818x_iowrite16_idx(priv, (__le16 *)0xFF7C, 0x00D0, 3); in rtl8187b_init_hw()
861 rtl818x_iowrite8(priv, (u8 *)0xFF61, 0); in rtl8187b_init_hw()
862 rtl818x_iowrite8_idx(priv, (u8 *)0xFF80, 0x0F, 1); in rtl8187b_init_hw()
863 rtl818x_iowrite8_idx(priv, (u8 *)0xFF83, 0x03, 1); in rtl8187b_init_hw()
864 rtl818x_iowrite8(priv, (u8 *)0xFFDA, 0x10); in rtl8187b_init_hw()
865 rtl818x_iowrite8_idx(priv, (u8 *)0xFF4D, 0x08, 2); in rtl8187b_init_hw()
867 rtl818x_iowrite32(priv, &priv->map->HSSI_PARA, 0x0600321B); in rtl8187b_init_hw()
869 rtl818x_iowrite16_idx(priv, (__le16 *)0xFFEC, 0x0800, 1); in rtl8187b_init_hw()
871 priv->slot_time = 0x9; in rtl8187b_init_hw()
872 priv->aifsn[0] = 2; /* AIFSN[AC_VO] */ in rtl8187b_init_hw()
873 priv->aifsn[1] = 2; /* AIFSN[AC_VI] */ in rtl8187b_init_hw()
874 priv->aifsn[2] = 7; /* AIFSN[AC_BK] */ in rtl8187b_init_hw()
875 priv->aifsn[3] = 3; /* AIFSN[AC_BE] */ in rtl8187b_init_hw()
876 rtl818x_iowrite8(priv, &priv->map->ACM_CONTROL, 0); in rtl8187b_init_hw()
879 rtl818x_iowrite8(priv, &priv->map->MSR, RTL818X_MSR_ENEDCA); in rtl8187b_init_hw()
893 struct rtl8187_priv *priv = container_of(work, struct rtl8187_priv, in rtl8187_work() local
896 struct ieee80211_hw *dev = priv->dev; in rtl8187_work()
902 mutex_lock(&priv->conf_mutex); in rtl8187_work()
903 tmp = rtl818x_ioread16(priv, (__le16 *)0xFFFA); in rtl8187_work()
904 length = skb_queue_len(&priv->b_tx_status.queue); in rtl8187_work()
910 while (skb_queue_len(&priv->b_tx_status.queue) > 0) { in rtl8187_work()
913 old_skb = skb_dequeue(&priv->b_tx_status.queue); in rtl8187_work()
921 mutex_unlock(&priv->conf_mutex); in rtl8187_work()
926 struct rtl8187_priv *priv = dev->priv; in rtl8187_start() local
930 mutex_lock(&priv->conf_mutex); in rtl8187_start()
932 ret = (!priv->is_rtl8187b) ? rtl8187_init_hw(dev) : in rtl8187_start()
937 init_usb_anchor(&priv->anchored); in rtl8187_start()
938 priv->dev = dev; in rtl8187_start()
940 if (priv->is_rtl8187b) { in rtl8187_start()
951 priv->rx_conf = reg; in rtl8187_start()
952 rtl818x_iowrite32(priv, &priv->map->RX_CONF, reg); in rtl8187_start()
954 reg = rtl818x_ioread8(priv, &priv->map->TX_AGC_CTL); in rtl8187_start()
958 rtl818x_iowrite8(priv, &priv->map->TX_AGC_CTL, reg); in rtl8187_start()
960 rtl818x_iowrite32(priv, &priv->map->TX_CONF, in rtl8187_start()
971 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_start()
975 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); in rtl8187_start()
977 rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0); in rtl8187_start()
978 rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0); in rtl8187_start()
994 priv->rx_conf = reg; in rtl8187_start()
995 rtl818x_iowrite32(priv, &priv->map->RX_CONF, reg); in rtl8187_start()
997 reg = rtl818x_ioread8(priv, &priv->map->CW_CONF); in rtl8187_start()
1000 rtl818x_iowrite8(priv, &priv->map->CW_CONF, reg); in rtl8187_start()
1002 reg = rtl818x_ioread8(priv, &priv->map->TX_AGC_CTL); in rtl8187_start()
1006 rtl818x_iowrite8(priv, &priv->map->TX_AGC_CTL, reg); in rtl8187_start()
1011 rtl818x_iowrite32(priv, &priv->map->TX_CONF, reg); in rtl8187_start()
1013 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_start()
1016 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_start()
1017 INIT_DELAYED_WORK(&priv->work, rtl8187_work); in rtl8187_start()
1020 mutex_unlock(&priv->conf_mutex); in rtl8187_start()
1026 struct rtl8187_priv *priv = dev->priv; in rtl8187_stop() local
1030 mutex_lock(&priv->conf_mutex); in rtl8187_stop()
1031 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); in rtl8187_stop()
1033 reg = rtl818x_ioread8(priv, &priv->map->CMD); in rtl8187_stop()
1036 rtl818x_iowrite8(priv, &priv->map->CMD, reg); in rtl8187_stop()
1038 priv->rf->stop(dev); in rtl8187_stop()
1039 rtl8187_set_anaparam(priv, false); in rtl8187_stop()
1041 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_stop()
1042 reg = rtl818x_ioread8(priv, &priv->map->CONFIG4); in rtl8187_stop()
1043 rtl818x_iowrite8(priv, &priv->map->CONFIG4, reg | RTL818X_CONFIG4_VCOOFF); in rtl8187_stop()
1044 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_stop()
1046 while ((skb = skb_dequeue(&priv->b_tx_status.queue))) in rtl8187_stop()
1049 usb_kill_anchored_urbs(&priv->anchored); in rtl8187_stop()
1050 mutex_unlock(&priv->conf_mutex); in rtl8187_stop()
1052 if (!priv->is_rtl8187b) in rtl8187_stop()
1053 cancel_delayed_work_sync(&priv->work); in rtl8187_stop()
1058 struct rtl8187_priv *priv = dev->priv; in rtl8187_get_tsf() local
1060 return rtl818x_ioread32(priv, &priv->map->TSFT[0]) | in rtl8187_get_tsf()
1061 (u64)(rtl818x_ioread32(priv, &priv->map->TSFT[1])) << 32; in rtl8187_get_tsf()
1109 struct rtl8187_priv *priv = dev->priv; in rtl8187_add_interface() local
1114 mutex_lock(&priv->conf_mutex); in rtl8187_add_interface()
1115 if (priv->vif) in rtl8187_add_interface()
1127 priv->vif = vif; in rtl8187_add_interface()
1136 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_add_interface()
1138 rtl818x_iowrite8(priv, &priv->map->MAC[i], in rtl8187_add_interface()
1140 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_add_interface()
1143 mutex_unlock(&priv->conf_mutex); in rtl8187_add_interface()
1150 struct rtl8187_priv *priv = dev->priv; in rtl8187_remove_interface() local
1151 mutex_lock(&priv->conf_mutex); in rtl8187_remove_interface()
1152 priv->vif = NULL; in rtl8187_remove_interface()
1153 mutex_unlock(&priv->conf_mutex); in rtl8187_remove_interface()
1158 struct rtl8187_priv *priv = dev->priv; in rtl8187_config() local
1162 mutex_lock(&priv->conf_mutex); in rtl8187_config()
1163 reg = rtl818x_ioread32(priv, &priv->map->TX_CONF); in rtl8187_config()
1168 rtl818x_iowrite32(priv, &priv->map->TX_CONF, in rtl8187_config()
1170 priv->rf->set_chan(dev, conf); in rtl8187_config()
1172 rtl818x_iowrite32(priv, &priv->map->TX_CONF, reg); in rtl8187_config()
1174 rtl818x_iowrite16(priv, &priv->map->ATIM_WND, 2); in rtl8187_config()
1175 rtl818x_iowrite16(priv, &priv->map->ATIMTR_INTERVAL, 100); in rtl8187_config()
1176 rtl818x_iowrite16(priv, &priv->map->BEACON_INTERVAL, 100); in rtl8187_config()
1177 rtl818x_iowrite16(priv, &priv->map->BEACON_INTERVAL_TIME, 100); in rtl8187_config()
1178 mutex_unlock(&priv->conf_mutex); in rtl8187_config()
1195 static void rtl8187_conf_erp(struct rtl8187_priv *priv, bool use_short_slot, in rtl8187_conf_erp() argument
1198 if (priv->is_rtl8187b) { in rtl8187_conf_erp()
1204 priv->slot_time = 0x9; in rtl8187_conf_erp()
1208 priv->slot_time = 0x14; in rtl8187_conf_erp()
1212 rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); in rtl8187_conf_erp()
1213 rtl818x_iowrite8(priv, &priv->map->SLOT, priv->slot_time); in rtl8187_conf_erp()
1214 rtl818x_iowrite8(priv, &priv->map->DIFS, difs); in rtl8187_conf_erp()
1220 rtl818x_iowrite8(priv, (u8 *)&priv->map->BRSR + 1, eifs); in rtl8187_conf_erp()
1232 rtl818x_iowrite8(priv, &priv->map->CARRIER_SENSE_COUNTER, in rtl8187_conf_erp()
1236 rtl818x_iowrite8(priv, (u8 *) rtl8187b_ac_addr[queue], in rtl8187_conf_erp()
1237 priv->aifsn[queue] * priv->slot_time + in rtl8187_conf_erp()
1240 rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22); in rtl8187_conf_erp()
1242 rtl818x_iowrite8(priv, &priv->map->SLOT, 0x9); in rtl8187_conf_erp()
1243 rtl818x_iowrite8(priv, &priv->map->DIFS, 0x14); in rtl8187_conf_erp()
1244 rtl818x_iowrite8(priv, &priv->map->EIFS, 91 - 0x14); in rtl8187_conf_erp()
1246 rtl818x_iowrite8(priv, &priv->map->SLOT, 0x14); in rtl8187_conf_erp()
1247 rtl818x_iowrite8(priv, &priv->map->DIFS, 0x24); in rtl8187_conf_erp()
1248 rtl818x_iowrite8(priv, &priv->map->EIFS, 91 - 0x24); in rtl8187_conf_erp()
1258 struct rtl8187_priv *priv = dev->priv; in rtl8187_bss_info_changed() local
1266 mutex_lock(&priv->conf_mutex); in rtl8187_bss_info_changed()
1268 rtl818x_iowrite8(priv, &priv->map->BSSID[i], in rtl8187_bss_info_changed()
1271 if (priv->is_rtl8187b) in rtl8187_bss_info_changed()
1285 rtl818x_iowrite8(priv, &priv->map->MSR, reg); in rtl8187_bss_info_changed()
1287 mutex_unlock(&priv->conf_mutex); in rtl8187_bss_info_changed()
1291 rtl8187_conf_erp(priv, info->use_short_slot, in rtl8187_bss_info_changed()
1316 struct rtl8187_priv *priv = dev->priv; in rtl8187_configure_filter() local
1319 priv->rx_conf ^= RTL818X_RX_CONF_FCS; in rtl8187_configure_filter()
1321 priv->rx_conf ^= RTL818X_RX_CONF_CTRL; in rtl8187_configure_filter()
1323 priv->rx_conf ^= RTL818X_RX_CONF_MONITOR; in rtl8187_configure_filter()
1325 priv->rx_conf |= RTL818X_RX_CONF_MULTICAST; in rtl8187_configure_filter()
1327 priv->rx_conf &= ~RTL818X_RX_CONF_MULTICAST; in rtl8187_configure_filter()
1331 if (priv->rx_conf & RTL818X_RX_CONF_FCS) in rtl8187_configure_filter()
1333 if (priv->rx_conf & RTL818X_RX_CONF_CTRL) in rtl8187_configure_filter()
1335 if (priv->rx_conf & RTL818X_RX_CONF_MONITOR) in rtl8187_configure_filter()
1337 if (priv->rx_conf & RTL818X_RX_CONF_MULTICAST) in rtl8187_configure_filter()
1340 rtl818x_iowrite32_async(priv, &priv->map->RX_CONF, priv->rx_conf); in rtl8187_configure_filter()
1347 struct rtl8187_priv *priv = dev->priv; in rtl8187_conf_tx() local
1356 if (priv->is_rtl8187b) { in rtl8187_conf_tx()
1357 priv->aifsn[queue] = params->aifs; in rtl8187_conf_tx()
1366 rtl818x_iowrite32(priv, rtl8187b_ac_addr[queue], in rtl8187_conf_tx()
1369 priv->slot_time + SIFS_TIME)); in rtl8187_conf_tx()
1374 rtl818x_iowrite8(priv, &priv->map->CW_VAL, in rtl8187_conf_tx()
1399 struct rtl8187_priv *priv = dev->priv; in rtl8187_eeprom_register_read() local
1400 u8 reg = rtl818x_ioread8(priv, &priv->map->EEPROM_CMD); in rtl8187_eeprom_register_read()
1411 struct rtl8187_priv *priv = dev->priv; in rtl8187_eeprom_register_write() local
1423 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, reg); in rtl8187_eeprom_register_write()
1432 struct rtl8187_priv *priv; in rtl8187_probe() local
1441 dev = ieee80211_alloc_hw(sizeof(*priv), &rtl8187_ops); in rtl8187_probe()
1447 priv = dev->priv; in rtl8187_probe()
1448 priv->is_rtl8187b = (id->driver_info == DEVICE_RTL8187B); in rtl8187_probe()
1451 priv->io_dmabuf = kmalloc(sizeof(*priv->io_dmabuf), GFP_KERNEL); in rtl8187_probe()
1452 if (!priv->io_dmabuf) { in rtl8187_probe()
1456 mutex_init(&priv->io_mutex); in rtl8187_probe()
1460 priv->udev = udev; in rtl8187_probe()
1464 skb_queue_head_init(&priv->rx_queue); in rtl8187_probe()
1466 BUILD_BUG_ON(sizeof(priv->channels) != sizeof(rtl818x_channels)); in rtl8187_probe()
1467 BUILD_BUG_ON(sizeof(priv->rates) != sizeof(rtl818x_rates)); in rtl8187_probe()
1469 memcpy(priv->channels, rtl818x_channels, sizeof(rtl818x_channels)); in rtl8187_probe()
1470 memcpy(priv->rates, rtl818x_rates, sizeof(rtl818x_rates)); in rtl8187_probe()
1471 priv->map = (struct rtl818x_csr *)0xFF00; in rtl8187_probe()
1473 priv->band.band = IEEE80211_BAND_2GHZ; in rtl8187_probe()
1474 priv->band.channels = priv->channels; in rtl8187_probe()
1475 priv->band.n_channels = ARRAY_SIZE(rtl818x_channels); in rtl8187_probe()
1476 priv->band.bitrates = priv->rates; in rtl8187_probe()
1477 priv->band.n_bitrates = ARRAY_SIZE(rtl818x_rates); in rtl8187_probe()
1478 dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band; in rtl8187_probe()
1491 if (rtl818x_ioread32(priv, &priv->map->RX_CONF) & (1 << 6)) in rtl8187_probe()
1496 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); in rtl8187_probe()
1508 channel = priv->channels; in rtl8187_probe()
1523 &priv->txpwr_base); in rtl8187_probe()
1525 reg = rtl818x_ioread8(priv, &priv->map->PGSELECT) & ~1; in rtl8187_probe()
1526 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg | 1); in rtl8187_probe()
1530 priv->asic_rev = rtl818x_ioread8(priv, (u8 *)0xFFFE) & 0x3; in rtl8187_probe()
1531 rtl818x_iowrite8(priv, &priv->map->PGSELECT, reg); in rtl8187_probe()
1532 rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL); in rtl8187_probe()
1534 if (!priv->is_rtl8187b) { in rtl8187_probe()
1536 reg32 = rtl818x_ioread32(priv, &priv->map->TX_CONF); in rtl8187_probe()
1543 priv->is_rtl8187b = 1; in rtl8187_probe()
1544 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1562 switch (rtl818x_ioread8(priv, (u8 *)0xFFE1)) { in rtl8187_probe()
1565 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1569 priv->hw_rev = RTL8187BvD; in rtl8187_probe()
1573 priv->hw_rev = RTL8187BvE; in rtl8187_probe()
1577 priv->hw_rev = RTL8187BvB; in rtl8187_probe()
1581 if (!priv->is_rtl8187b) { in rtl8187_probe()
1602 priv->rfkill_mask = RFKILL_MASK_8187_89_97; in rtl8187_probe()
1606 priv->rfkill_mask = RFKILL_MASK_8198; in rtl8187_probe()
1612 if ((id->driver_info == DEVICE_RTL8187) && priv->is_rtl8187b) in rtl8187_probe()
1616 priv->rf = rtl8187_detect_rf(dev); in rtl8187_probe()
1617 dev->extra_tx_headroom = (!priv->is_rtl8187b) ? in rtl8187_probe()
1620 if (!priv->is_rtl8187b) in rtl8187_probe()
1630 mutex_init(&priv->conf_mutex); in rtl8187_probe()
1631 skb_queue_head_init(&priv->b_tx_status.queue); in rtl8187_probe()
1634 mac_addr, chip_name, priv->asic_rev, priv->rf->name, in rtl8187_probe()
1635 priv->rfkill_mask); in rtl8187_probe()
1647 kfree(priv->io_dmabuf); in rtl8187_probe()
1658 struct rtl8187_priv *priv; in rtl8187_disconnect() local
1669 priv = dev->priv; in rtl8187_disconnect()
1670 usb_reset_device(priv->udev); in rtl8187_disconnect()
1672 kfree(priv->io_dmabuf); in rtl8187_disconnect()