Lines Matching refs:rtwdev

49 static u8 rtw_pci_read8(struct rtw_dev *rtwdev, u32 addr)  in rtw_pci_read8()  argument
51 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_read8()
56 static u16 rtw_pci_read16(struct rtw_dev *rtwdev, u32 addr) in rtw_pci_read16() argument
58 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_read16()
63 static u32 rtw_pci_read32(struct rtw_dev *rtwdev, u32 addr) in rtw_pci_read32() argument
65 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_read32()
70 static void rtw_pci_write8(struct rtw_dev *rtwdev, u32 addr, u8 val) in rtw_pci_write8() argument
72 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_write8()
77 static void rtw_pci_write16(struct rtw_dev *rtwdev, u32 addr, u16 val) in rtw_pci_write16() argument
79 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_write16()
84 static void rtw_pci_write32(struct rtw_dev *rtwdev, u32 addr, u32 val) in rtw_pci_write32() argument
86 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_write32()
98 static void rtw_pci_free_tx_ring_skbs(struct rtw_dev *rtwdev, in rtw_pci_free_tx_ring_skbs() argument
101 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_free_tx_ring_skbs()
117 static void rtw_pci_free_tx_ring(struct rtw_dev *rtwdev, in rtw_pci_free_tx_ring() argument
120 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_free_tx_ring()
125 rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring); in rtw_pci_free_tx_ring()
132 static void rtw_pci_free_rx_ring_skbs(struct rtw_dev *rtwdev, in rtw_pci_free_rx_ring_skbs() argument
135 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_free_rx_ring_skbs()
153 static void rtw_pci_free_rx_ring(struct rtw_dev *rtwdev, in rtw_pci_free_rx_ring() argument
156 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_free_rx_ring()
160 rtw_pci_free_rx_ring_skbs(rtwdev, rx_ring); in rtw_pci_free_rx_ring()
165 static void rtw_pci_free_trx_ring(struct rtw_dev *rtwdev) in rtw_pci_free_trx_ring() argument
167 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_free_trx_ring()
174 rtw_pci_free_tx_ring(rtwdev, tx_ring); in rtw_pci_free_trx_ring()
179 rtw_pci_free_rx_ring(rtwdev, rx_ring); in rtw_pci_free_trx_ring()
183 static int rtw_pci_init_tx_ring(struct rtw_dev *rtwdev, in rtw_pci_init_tx_ring() argument
187 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_init_tx_ring()
193 rtw_err(rtwdev, "len %d exceeds maximum TX entries\n", len); in rtw_pci_init_tx_ring()
199 rtw_err(rtwdev, "failed to allocate tx ring\n"); in rtw_pci_init_tx_ring()
214 static int rtw_pci_reset_rx_desc(struct rtw_dev *rtwdev, struct sk_buff *skb, in rtw_pci_reset_rx_desc() argument
218 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_reset_rx_desc()
240 static void rtw_pci_sync_rx_desc_device(struct rtw_dev *rtwdev, dma_addr_t dma, in rtw_pci_sync_rx_desc_device() argument
244 struct device *dev = rtwdev->dev; in rtw_pci_sync_rx_desc_device()
257 static int rtw_pci_init_rx_ring(struct rtw_dev *rtwdev, in rtw_pci_init_rx_ring() argument
261 struct pci_dev *pdev = to_pci_dev(rtwdev->dev); in rtw_pci_init_rx_ring()
271 rtw_err(rtwdev, "len %d exceeds maximum RX entries\n", len); in rtw_pci_init_rx_ring()
277 rtw_err(rtwdev, "failed to allocate rx ring\n"); in rtw_pci_init_rx_ring()
292 ret = rtw_pci_reset_rx_desc(rtwdev, skb, rx_ring, i, desc_size); in rtw_pci_init_rx_ring()
320 rtw_err(rtwdev, "failed to init rx buffer\n"); in rtw_pci_init_rx_ring()
325 static int rtw_pci_init_trx_ring(struct rtw_dev *rtwdev) in rtw_pci_init_trx_ring() argument
327 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_init_trx_ring()
330 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_init_trx_ring()
341 ret = rtw_pci_init_tx_ring(rtwdev, tx_ring, tx_desc_size, len); in rtw_pci_init_trx_ring()
350 ret = rtw_pci_init_rx_ring(rtwdev, rx_ring, rx_desc_size, in rtw_pci_init_trx_ring()
362 rtw_pci_free_tx_ring(rtwdev, tx_ring); in rtw_pci_init_trx_ring()
368 rtw_pci_free_rx_ring(rtwdev, rx_ring); in rtw_pci_init_trx_ring()
374 static void rtw_pci_deinit(struct rtw_dev *rtwdev) in rtw_pci_deinit() argument
376 rtw_pci_free_trx_ring(rtwdev); in rtw_pci_deinit()
379 static int rtw_pci_init(struct rtw_dev *rtwdev) in rtw_pci_init() argument
381 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_init()
400 ret = rtw_pci_init_trx_ring(rtwdev); in rtw_pci_init()
405 static void rtw_pci_reset_buf_desc(struct rtw_dev *rtwdev) in rtw_pci_reset_buf_desc() argument
407 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_reset_buf_desc()
412 tmp = rtw_read8(rtwdev, RTK_PCI_CTRL + 3); in rtw_pci_reset_buf_desc()
413 rtw_write8(rtwdev, RTK_PCI_CTRL + 3, tmp | 0xf7); in rtw_pci_reset_buf_desc()
416 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BCNQ, dma); in rtw_pci_reset_buf_desc()
418 if (!rtw_chip_wcpu_11n(rtwdev)) { in rtw_pci_reset_buf_desc()
423 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_H2CQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
424 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_H2CQ, dma); in rtw_pci_reset_buf_desc()
431 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_BKQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
432 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BKQ, dma); in rtw_pci_reset_buf_desc()
438 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_BEQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
439 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_BEQ, dma); in rtw_pci_reset_buf_desc()
445 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_VOQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
446 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_VOQ, dma); in rtw_pci_reset_buf_desc()
452 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_VIQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
453 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_VIQ, dma); in rtw_pci_reset_buf_desc()
459 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_MGMTQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
460 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_MGMTQ, dma); in rtw_pci_reset_buf_desc()
466 rtw_write16(rtwdev, RTK_PCI_TXBD_NUM_HI0Q, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
467 rtw_write32(rtwdev, RTK_PCI_TXBD_DESA_HI0Q, dma); in rtw_pci_reset_buf_desc()
473 rtw_write16(rtwdev, RTK_PCI_RXBD_NUM_MPDUQ, len & TRX_BD_IDX_MASK); in rtw_pci_reset_buf_desc()
474 rtw_write32(rtwdev, RTK_PCI_RXBD_DESA_MPDUQ, dma); in rtw_pci_reset_buf_desc()
477 rtw_write32(rtwdev, RTK_PCI_TXBD_RWPTR_CLR, 0xffffffff); in rtw_pci_reset_buf_desc()
480 if (rtw_chip_wcpu_11ac(rtwdev)) in rtw_pci_reset_buf_desc()
481 rtw_write32_set(rtwdev, RTK_PCI_TXBD_H2CQ_CSR, in rtw_pci_reset_buf_desc()
485 static void rtw_pci_reset_trx_ring(struct rtw_dev *rtwdev) in rtw_pci_reset_trx_ring() argument
487 rtw_pci_reset_buf_desc(rtwdev); in rtw_pci_reset_trx_ring()
490 static void rtw_pci_enable_interrupt(struct rtw_dev *rtwdev, in rtw_pci_enable_interrupt() argument
497 rtw_write32(rtwdev, RTK_PCI_HIMR0, rtwpci->irq_mask[0]); in rtw_pci_enable_interrupt()
498 rtw_write32(rtwdev, RTK_PCI_HIMR1, rtwpci->irq_mask[1]); in rtw_pci_enable_interrupt()
499 if (rtw_chip_wcpu_11ac(rtwdev)) in rtw_pci_enable_interrupt()
500 rtw_write32(rtwdev, RTK_PCI_HIMR3, rtwpci->irq_mask[3]); in rtw_pci_enable_interrupt()
507 static void rtw_pci_disable_interrupt(struct rtw_dev *rtwdev, in rtw_pci_disable_interrupt() argument
517 rtw_write32(rtwdev, RTK_PCI_HIMR0, 0); in rtw_pci_disable_interrupt()
518 rtw_write32(rtwdev, RTK_PCI_HIMR1, 0); in rtw_pci_disable_interrupt()
519 if (rtw_chip_wcpu_11ac(rtwdev)) in rtw_pci_disable_interrupt()
520 rtw_write32(rtwdev, RTK_PCI_HIMR3, 0); in rtw_pci_disable_interrupt()
528 static void rtw_pci_dma_reset(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) in rtw_pci_dma_reset() argument
531 rtw_write32_set(rtwdev, RTK_PCI_CTRL, in rtw_pci_dma_reset()
536 static int rtw_pci_setup(struct rtw_dev *rtwdev) in rtw_pci_setup() argument
538 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_setup()
540 rtw_pci_reset_trx_ring(rtwdev); in rtw_pci_setup()
541 rtw_pci_dma_reset(rtwdev, rtwpci); in rtw_pci_setup()
546 static void rtw_pci_dma_release(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci) in rtw_pci_dma_release() argument
551 rtw_pci_reset_trx_ring(rtwdev); in rtw_pci_dma_release()
554 rtw_pci_free_tx_ring_skbs(rtwdev, tx_ring); in rtw_pci_dma_release()
558 static int rtw_pci_start(struct rtw_dev *rtwdev) in rtw_pci_start() argument
560 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_start()
563 rtw_pci_enable_interrupt(rtwdev, rtwpci); in rtw_pci_start()
569 static void rtw_pci_stop(struct rtw_dev *rtwdev) in rtw_pci_stop() argument
571 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_stop()
574 rtw_pci_disable_interrupt(rtwdev, rtwpci); in rtw_pci_stop()
575 rtw_pci_dma_release(rtwdev, rtwpci); in rtw_pci_stop()
579 static void rtw_pci_deep_ps_enter(struct rtw_dev *rtwdev) in rtw_pci_deep_ps_enter() argument
581 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_deep_ps_enter()
607 rtw_dbg(rtwdev, RTW_DBG_PS, in rtw_pci_deep_ps_enter()
612 set_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags); in rtw_pci_deep_ps_enter()
613 rtw_power_mode_change(rtwdev, true); in rtw_pci_deep_ps_enter()
616 static void rtw_pci_deep_ps_leave(struct rtw_dev *rtwdev) in rtw_pci_deep_ps_leave() argument
618 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_deep_ps_leave()
622 if (test_and_clear_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags)) in rtw_pci_deep_ps_leave()
623 rtw_power_mode_change(rtwdev, false); in rtw_pci_deep_ps_leave()
626 static void rtw_pci_deep_ps(struct rtw_dev *rtwdev, bool enter) in rtw_pci_deep_ps() argument
628 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_deep_ps()
632 if (enter && !test_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags)) in rtw_pci_deep_ps()
633 rtw_pci_deep_ps_enter(rtwdev); in rtw_pci_deep_ps()
635 if (!enter && test_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags)) in rtw_pci_deep_ps()
636 rtw_pci_deep_ps_leave(rtwdev); in rtw_pci_deep_ps()
683 static void rtw_pci_dma_check(struct rtw_dev *rtwdev, in rtw_pci_dma_check() argument
687 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_dma_check()
688 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_dma_check()
699 rtw_warn(rtwdev, "pci bus timeout, check dma status\n"); in rtw_pci_dma_check()
704 static void rtw_pci_tx_kick_off_queue(struct rtw_dev *rtwdev, u8 queue) in rtw_pci_tx_kick_off_queue() argument
706 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_tx_kick_off_queue()
714 rtw_pci_deep_ps_leave(rtwdev); in rtw_pci_tx_kick_off_queue()
715 rtw_write16(rtwdev, bd_idx, ring->r.wp & TRX_BD_IDX_MASK); in rtw_pci_tx_kick_off_queue()
719 static void rtw_pci_tx_kick_off(struct rtw_dev *rtwdev) in rtw_pci_tx_kick_off() argument
721 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_tx_kick_off()
726 rtw_pci_tx_kick_off_queue(rtwdev, queue); in rtw_pci_tx_kick_off()
729 static int rtw_pci_tx_write_data(struct rtw_dev *rtwdev, in rtw_pci_tx_write_data() argument
733 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_tx_write_data()
734 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_tx_write_data()
798 static int rtw_pci_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf, in rtw_pci_write_data_rsvd_page() argument
806 skb = rtw_tx_write_data_rsvd_page_get(rtwdev, &pkt_info, buf, size); in rtw_pci_write_data_rsvd_page()
810 ret = rtw_pci_tx_write_data(rtwdev, &pkt_info, skb, RTW_TX_QUEUE_BCN); in rtw_pci_write_data_rsvd_page()
812 rtw_err(rtwdev, "failed to write rsvd page data\n"); in rtw_pci_write_data_rsvd_page()
817 reg_bcn_work = rtw_read8(rtwdev, RTK_PCI_TXBD_BCN_WORK); in rtw_pci_write_data_rsvd_page()
819 rtw_write8(rtwdev, RTK_PCI_TXBD_BCN_WORK, reg_bcn_work); in rtw_pci_write_data_rsvd_page()
824 static int rtw_pci_write_data_h2c(struct rtw_dev *rtwdev, u8 *buf, u32 size) in rtw_pci_write_data_h2c() argument
830 skb = rtw_tx_write_data_h2c_get(rtwdev, &pkt_info, buf, size); in rtw_pci_write_data_h2c()
834 ret = rtw_pci_tx_write_data(rtwdev, &pkt_info, skb, RTW_TX_QUEUE_H2C); in rtw_pci_write_data_h2c()
836 rtw_err(rtwdev, "failed to write h2c data\n"); in rtw_pci_write_data_h2c()
840 rtw_pci_tx_kick_off_queue(rtwdev, RTW_TX_QUEUE_H2C); in rtw_pci_write_data_h2c()
845 static int rtw_pci_tx_write(struct rtw_dev *rtwdev, in rtw_pci_tx_write() argument
849 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_tx_write()
854 ret = rtw_pci_tx_write_data(rtwdev, pkt_info, skb, queue); in rtw_pci_tx_write()
860 ieee80211_stop_queue(rtwdev->hw, skb_get_queue_mapping(skb)); in rtw_pci_tx_write()
867 static void rtw_pci_tx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci, in rtw_pci_tx_isr() argument
870 struct ieee80211_hw *hw = rtwdev->hw; in rtw_pci_tx_isr()
883 bd_idx = rtw_read32(rtwdev, bd_idx_addr); in rtw_pci_tx_isr()
894 rtw_err(rtwdev, "failed to dequeue %d skb TX queue %d, BD=0x%08x, rp %d -> %d\n", in rtw_pci_tx_isr()
915 skb_pull(skb, rtwdev->chip->tx_pkt_desc_sz); in rtw_pci_tx_isr()
921 rtw_tx_report_enqueue(rtwdev, skb, tx_data->sn); in rtw_pci_tx_isr()
938 static void rtw_pci_rx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci, in rtw_pci_rx_isr() argument
941 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_rx_isr()
957 tmp = rtw_read32(rtwdev, RTK_PCI_RXBD_IDX_MPDUQ); in rtw_pci_rx_isr()
967 rtw_pci_dma_check(rtwdev, ring, cur_rp); in rtw_pci_rx_isr()
970 dma_sync_single_for_cpu(rtwdev->dev, dma, RTK_PCI_RX_BUF_SIZE, in rtw_pci_rx_isr()
973 chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status); in rtw_pci_rx_isr()
991 rtw_fw_c2h_cmd_rx_irqsafe(rtwdev, pkt_offset, new); in rtw_pci_rx_isr()
996 rtw_rx_stats(rtwdev, pkt_stat.vif, new); in rtw_pci_rx_isr()
998 ieee80211_rx_irqsafe(rtwdev->hw, new); in rtw_pci_rx_isr()
1003 rtw_pci_sync_rx_desc_device(rtwdev, dma, ring, cur_rp, in rtw_pci_rx_isr()
1013 rtw_write16(rtwdev, RTK_PCI_RXBD_IDX_MPDUQ, ring->r.rp); in rtw_pci_rx_isr()
1016 static void rtw_pci_irq_recognized(struct rtw_dev *rtwdev, in rtw_pci_irq_recognized() argument
1023 irq_status[0] = rtw_read32(rtwdev, RTK_PCI_HISR0); in rtw_pci_irq_recognized()
1024 irq_status[1] = rtw_read32(rtwdev, RTK_PCI_HISR1); in rtw_pci_irq_recognized()
1025 if (rtw_chip_wcpu_11ac(rtwdev)) in rtw_pci_irq_recognized()
1026 irq_status[3] = rtw_read32(rtwdev, RTK_PCI_HISR3); in rtw_pci_irq_recognized()
1032 rtw_write32(rtwdev, RTK_PCI_HISR0, irq_status[0]); in rtw_pci_irq_recognized()
1033 rtw_write32(rtwdev, RTK_PCI_HISR1, irq_status[1]); in rtw_pci_irq_recognized()
1034 if (rtw_chip_wcpu_11ac(rtwdev)) in rtw_pci_irq_recognized()
1035 rtw_write32(rtwdev, RTK_PCI_HISR3, irq_status[3]); in rtw_pci_irq_recognized()
1042 struct rtw_dev *rtwdev = dev; in rtw_pci_interrupt_handler() local
1043 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_interrupt_handler()
1053 rtw_pci_disable_interrupt(rtwdev, rtwpci); in rtw_pci_interrupt_handler()
1060 struct rtw_dev *rtwdev = dev; in rtw_pci_interrupt_threadfn() local
1061 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_interrupt_threadfn()
1065 rtw_pci_irq_recognized(rtwdev, rtwpci, irq_status); in rtw_pci_interrupt_threadfn()
1068 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_MGMT); in rtw_pci_interrupt_threadfn()
1070 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_HI0); in rtw_pci_interrupt_threadfn()
1072 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_BE); in rtw_pci_interrupt_threadfn()
1074 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_BK); in rtw_pci_interrupt_threadfn()
1076 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_VO); in rtw_pci_interrupt_threadfn()
1078 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_VI); in rtw_pci_interrupt_threadfn()
1080 rtw_pci_tx_isr(rtwdev, rtwpci, RTW_TX_QUEUE_H2C); in rtw_pci_interrupt_threadfn()
1082 rtw_pci_rx_isr(rtwdev, rtwpci, RTW_RX_QUEUE_MPDU); in rtw_pci_interrupt_threadfn()
1084 rtw_fw_c2h_cmd_isr(rtwdev); in rtw_pci_interrupt_threadfn()
1087 rtw_pci_enable_interrupt(rtwdev, rtwpci); in rtw_pci_interrupt_threadfn()
1093 static int rtw_pci_io_mapping(struct rtw_dev *rtwdev, in rtw_pci_io_mapping() argument
1096 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_io_mapping()
1103 rtw_err(rtwdev, "failed to request pci regions\n"); in rtw_pci_io_mapping()
1111 rtw_err(rtwdev, "failed to map pci memory\n"); in rtw_pci_io_mapping()
1118 static void rtw_pci_io_unmapping(struct rtw_dev *rtwdev, in rtw_pci_io_unmapping() argument
1121 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_io_unmapping()
1129 static void rtw_dbi_write8(struct rtw_dev *rtwdev, u16 addr, u8 data) in rtw_dbi_write8() argument
1138 rtw_write8(rtwdev, REG_DBI_WDATA_V1 + remainder, data); in rtw_dbi_write8()
1139 rtw_write16(rtwdev, REG_DBI_FLAG_V1, write_addr); in rtw_dbi_write8()
1140 rtw_write8(rtwdev, REG_DBI_FLAG_V1 + 2, BIT_DBI_WFLAG >> 16); in rtw_dbi_write8()
1143 flag = rtw_read8(rtwdev, REG_DBI_FLAG_V1 + 2); in rtw_dbi_write8()
1153 static int rtw_dbi_read8(struct rtw_dev *rtwdev, u16 addr, u8 *value) in rtw_dbi_read8() argument
1159 rtw_write16(rtwdev, REG_DBI_FLAG_V1, read_addr); in rtw_dbi_read8()
1160 rtw_write8(rtwdev, REG_DBI_FLAG_V1 + 2, BIT_DBI_RFLAG >> 16); in rtw_dbi_read8()
1163 flag = rtw_read8(rtwdev, REG_DBI_FLAG_V1 + 2); in rtw_dbi_read8()
1166 *value = rtw_read8(rtwdev, read_addr); in rtw_dbi_read8()
1177 static void rtw_mdio_write(struct rtw_dev *rtwdev, u8 addr, u16 data, bool g1) in rtw_mdio_write() argument
1183 rtw_write16(rtwdev, REG_MDIO_V1, data); in rtw_mdio_write()
1187 rtw_write8(rtwdev, REG_PCIE_MIX_CFG, addr & BITS_MDIO_ADDR_MASK); in rtw_mdio_write()
1188 rtw_write8(rtwdev, REG_PCIE_MIX_CFG + 3, page); in rtw_mdio_write()
1189 rtw_write32_mask(rtwdev, REG_PCIE_MIX_CFG, BIT_MDIO_WFLAG_V1, 1); in rtw_mdio_write()
1192 wflag = rtw_read32_mask(rtwdev, REG_PCIE_MIX_CFG, in rtw_mdio_write()
1203 static void rtw_pci_clkreq_set(struct rtw_dev *rtwdev, bool enable) in rtw_pci_clkreq_set() argument
1211 ret = rtw_dbi_read8(rtwdev, RTK_PCIE_LINK_CFG, &value); in rtw_pci_clkreq_set()
1213 rtw_err(rtwdev, "failed to read CLKREQ_L1, ret=%d", ret); in rtw_pci_clkreq_set()
1222 rtw_dbi_write8(rtwdev, RTK_PCIE_LINK_CFG, value); in rtw_pci_clkreq_set()
1225 static void rtw_pci_aspm_set(struct rtw_dev *rtwdev, bool enable) in rtw_pci_aspm_set() argument
1233 ret = rtw_dbi_read8(rtwdev, RTK_PCIE_LINK_CFG, &value); in rtw_pci_aspm_set()
1235 rtw_err(rtwdev, "failed to read ASPM, ret=%d", ret); in rtw_pci_aspm_set()
1244 rtw_dbi_write8(rtwdev, RTK_PCIE_LINK_CFG, value); in rtw_pci_aspm_set()
1247 static void rtw_pci_link_ps(struct rtw_dev *rtwdev, bool enter) in rtw_pci_link_ps() argument
1249 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_link_ps()
1262 rtw_pci_aspm_set(rtwdev, enter); in rtw_pci_link_ps()
1265 static void rtw_pci_link_cfg(struct rtw_dev *rtwdev) in rtw_pci_link_cfg() argument
1267 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_link_cfg()
1268 struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_link_cfg()
1277 rtw_dbi_write8(rtwdev, RTK_PCIE_CLKDLY_CTRL, 0); in rtw_pci_link_cfg()
1297 rtw_err(rtwdev, "failed to read PCI cap, ret=%d\n", ret); in rtw_pci_link_cfg()
1302 rtw_pci_clkreq_set(rtwdev, true); in rtw_pci_link_cfg()
1307 static void rtw_pci_interface_cfg(struct rtw_dev *rtwdev) in rtw_pci_interface_cfg() argument
1309 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_interface_cfg()
1313 if (rtwdev->hal.cut_version >= RTW_CHIP_VER_CUT_D) in rtw_pci_interface_cfg()
1314 rtw_write32_mask(rtwdev, REG_HCI_MIX_CFG, in rtw_pci_interface_cfg()
1322 static void rtw_pci_phy_cfg(struct rtw_dev *rtwdev) in rtw_pci_phy_cfg() argument
1324 struct rtw_chip_info *chip = rtwdev->chip; in rtw_pci_phy_cfg()
1331 cut = BIT(0) << rtwdev->hal.cut_version; in rtw_pci_phy_cfg()
1342 rtw_mdio_write(rtwdev, offset, value, true); in rtw_pci_phy_cfg()
1344 rtw_dbi_write8(rtwdev, offset, value); in rtw_pci_phy_cfg()
1356 rtw_mdio_write(rtwdev, offset, value, false); in rtw_pci_phy_cfg()
1358 rtw_dbi_write8(rtwdev, offset, value); in rtw_pci_phy_cfg()
1361 rtw_pci_link_cfg(rtwdev); in rtw_pci_phy_cfg()
1377 static int rtw_pci_claim(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_claim() argument
1383 rtw_err(rtwdev, "failed to enable pci device\n"); in rtw_pci_claim()
1388 pci_set_drvdata(pdev, rtwdev->hw); in rtw_pci_claim()
1389 SET_IEEE80211_DEV(rtwdev->hw, &pdev->dev); in rtw_pci_claim()
1394 static void rtw_pci_declaim(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_declaim() argument
1400 static int rtw_pci_setup_resource(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_setup_resource() argument
1405 rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_setup_resource()
1409 ret = rtw_pci_io_mapping(rtwdev, pdev); in rtw_pci_setup_resource()
1411 rtw_err(rtwdev, "failed to request pci io region\n"); in rtw_pci_setup_resource()
1415 ret = rtw_pci_init(rtwdev); in rtw_pci_setup_resource()
1417 rtw_err(rtwdev, "failed to allocate pci resources\n"); in rtw_pci_setup_resource()
1424 rtw_pci_io_unmapping(rtwdev, pdev); in rtw_pci_setup_resource()
1430 static void rtw_pci_destroy(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_destroy() argument
1432 rtw_pci_deinit(rtwdev); in rtw_pci_destroy()
1433 rtw_pci_io_unmapping(rtwdev, pdev); in rtw_pci_destroy()
1456 static int rtw_pci_request_irq(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_request_irq() argument
1466 rtw_err(rtwdev, "failed to alloc PCI irq vectors\n"); in rtw_pci_request_irq()
1470 ret = devm_request_threaded_irq(rtwdev->dev, pdev->irq, in rtw_pci_request_irq()
1473 IRQF_SHARED, KBUILD_MODNAME, rtwdev); in rtw_pci_request_irq()
1475 rtw_err(rtwdev, "failed to request irq %d\n", ret); in rtw_pci_request_irq()
1482 static void rtw_pci_free_irq(struct rtw_dev *rtwdev, struct pci_dev *pdev) in rtw_pci_free_irq() argument
1484 devm_free_irq(rtwdev->dev, pdev->irq, rtwdev); in rtw_pci_free_irq()
1492 struct rtw_dev *rtwdev; in rtw_pci_probe() local
1503 rtwdev = hw->priv; in rtw_pci_probe()
1504 rtwdev->hw = hw; in rtw_pci_probe()
1505 rtwdev->dev = &pdev->dev; in rtw_pci_probe()
1506 rtwdev->chip = (struct rtw_chip_info *)id->driver_data; in rtw_pci_probe()
1507 rtwdev->hci.ops = &rtw_pci_ops; in rtw_pci_probe()
1508 rtwdev->hci.type = RTW_HCI_TYPE_PCIE; in rtw_pci_probe()
1510 ret = rtw_core_init(rtwdev); in rtw_pci_probe()
1514 rtw_dbg(rtwdev, RTW_DBG_PCI, in rtw_pci_probe()
1518 ret = rtw_pci_claim(rtwdev, pdev); in rtw_pci_probe()
1520 rtw_err(rtwdev, "failed to claim pci device\n"); in rtw_pci_probe()
1524 ret = rtw_pci_setup_resource(rtwdev, pdev); in rtw_pci_probe()
1526 rtw_err(rtwdev, "failed to setup pci resources\n"); in rtw_pci_probe()
1530 ret = rtw_chip_info_setup(rtwdev); in rtw_pci_probe()
1532 rtw_err(rtwdev, "failed to setup chip information\n"); in rtw_pci_probe()
1536 rtw_pci_phy_cfg(rtwdev); in rtw_pci_probe()
1538 ret = rtw_register_hw(rtwdev, hw); in rtw_pci_probe()
1540 rtw_err(rtwdev, "failed to register hw\n"); in rtw_pci_probe()
1544 ret = rtw_pci_request_irq(rtwdev, pdev); in rtw_pci_probe()
1553 rtw_pci_destroy(rtwdev, pdev); in rtw_pci_probe()
1556 rtw_pci_declaim(rtwdev, pdev); in rtw_pci_probe()
1559 rtw_core_deinit(rtwdev); in rtw_pci_probe()
1571 struct rtw_dev *rtwdev; in rtw_pci_remove() local
1577 rtwdev = hw->priv; in rtw_pci_remove()
1578 rtwpci = (struct rtw_pci *)rtwdev->priv; in rtw_pci_remove()
1580 rtw_unregister_hw(rtwdev, hw); in rtw_pci_remove()
1581 rtw_pci_disable_interrupt(rtwdev, rtwpci); in rtw_pci_remove()
1582 rtw_pci_destroy(rtwdev, pdev); in rtw_pci_remove()
1583 rtw_pci_declaim(rtwdev, pdev); in rtw_pci_remove()
1584 rtw_pci_free_irq(rtwdev, pdev); in rtw_pci_remove()
1585 rtw_core_deinit(rtwdev); in rtw_pci_remove()
1593 struct rtw_dev *rtwdev; in rtw_pci_shutdown() local
1599 rtwdev = hw->priv; in rtw_pci_shutdown()
1600 chip = rtwdev->chip; in rtw_pci_shutdown()
1603 chip->ops->shutdown(rtwdev); in rtw_pci_shutdown()