Lines Matching refs:dev

12 	struct mt7996_dev *dev;  in mt7996_poll_tx()  local
14 dev = container_of(napi, struct mt7996_dev, mt76.tx_napi); in mt7996_poll_tx()
16 mt76_connac_tx_cleanup(&dev->mt76); in mt7996_poll_tx()
18 mt7996_irq_enable(dev, MT_INT_TX_DONE_MCU); in mt7996_poll_tx()
23 static void mt7996_dma_config(struct mt7996_dev *dev) in mt7996_dma_config() argument
27 dev->q_wfdma_mask |= (1 << (q)); \ in mt7996_dma_config()
28 dev->q_int_mask[(q)] = int; \ in mt7996_dma_config()
29 dev->q_id[(q)] = id; \ in mt7996_dma_config()
59 static void __mt7996_dma_prefetch(struct mt7996_dev *dev, u32 ofs) in __mt7996_dma_prefetch() argument
63 mt76_wr(dev, MT_MCUQ_EXT_CTRL(MT_MCUQ_FWDL) + ofs, PREFETCH(0x0, 0x2)); in __mt7996_dma_prefetch()
64 mt76_wr(dev, MT_MCUQ_EXT_CTRL(MT_MCUQ_WM) + ofs, PREFETCH(0x20, 0x2)); in __mt7996_dma_prefetch()
65 mt76_wr(dev, MT_TXQ_EXT_CTRL(0) + ofs, PREFETCH(0x40, 0x4)); in __mt7996_dma_prefetch()
66 mt76_wr(dev, MT_TXQ_EXT_CTRL(1) + ofs, PREFETCH(0x80, 0x4)); in __mt7996_dma_prefetch()
67 mt76_wr(dev, MT_MCUQ_EXT_CTRL(MT_MCUQ_WA) + ofs, PREFETCH(0xc0, 0x2)); in __mt7996_dma_prefetch()
68 mt76_wr(dev, MT_TXQ_EXT_CTRL(2) + ofs, PREFETCH(0xe0, 0x4)); in __mt7996_dma_prefetch()
69 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_MCU) + ofs, PREFETCH(0x120, 0x2)); in __mt7996_dma_prefetch()
70 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_MCU_WA) + ofs, PREFETCH(0x140, 0x2)); in __mt7996_dma_prefetch()
71 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_MAIN_WA) + ofs, PREFETCH(0x160, 0x2)); in __mt7996_dma_prefetch()
72 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_BAND2_WA) + ofs, PREFETCH(0x180, 0x2)); in __mt7996_dma_prefetch()
73 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_MAIN) + ofs, PREFETCH(0x1a0, 0x10)); in __mt7996_dma_prefetch()
74 mt76_wr(dev, MT_RXQ_BAND1_CTRL(MT_RXQ_BAND2) + ofs, PREFETCH(0x2a0, 0x10)); in __mt7996_dma_prefetch()
76 mt76_set(dev, WF_WFDMA0_GLO_CFG_EXT1 + ofs, WF_WFDMA0_GLO_CFG_EXT1_CALC_MODE); in __mt7996_dma_prefetch()
79 void mt7996_dma_prefetch(struct mt7996_dev *dev) in mt7996_dma_prefetch() argument
81 __mt7996_dma_prefetch(dev, 0); in mt7996_dma_prefetch()
82 if (dev->hif2) in mt7996_dma_prefetch()
83 __mt7996_dma_prefetch(dev, MT_WFDMA0_PCIE1(0) - MT_WFDMA0(0)); in mt7996_dma_prefetch()
86 static void mt7996_dma_disable(struct mt7996_dev *dev, bool reset) in mt7996_dma_disable() argument
90 if (dev->hif2) in mt7996_dma_disable()
94 mt76_clear(dev, MT_WFDMA0_RST, in mt7996_dma_disable()
98 mt76_set(dev, MT_WFDMA0_RST, in mt7996_dma_disable()
102 if (dev->hif2) { in mt7996_dma_disable()
103 mt76_clear(dev, MT_WFDMA0_RST + hif1_ofs, in mt7996_dma_disable()
107 mt76_set(dev, MT_WFDMA0_RST + hif1_ofs, in mt7996_dma_disable()
114 mt76_clear(dev, MT_WFDMA0_GLO_CFG, in mt7996_dma_disable()
121 if (dev->hif2) { in mt7996_dma_disable()
122 mt76_clear(dev, MT_WFDMA0_GLO_CFG + hif1_ofs, in mt7996_dma_disable()
131 void mt7996_dma_start(struct mt7996_dev *dev, bool reset) in mt7996_dma_start() argument
136 if (dev->hif2) in mt7996_dma_start()
141 mt76_set(dev, MT_WFDMA0_GLO_CFG, in mt7996_dma_start()
147 if (dev->hif2) in mt7996_dma_start()
148 mt76_set(dev, MT_WFDMA0_GLO_CFG + hif1_ofs, in mt7996_dma_start()
162 if (!dev->mphy.band_idx) in mt7996_dma_start()
165 if (dev->dbdc_support) in mt7996_dma_start()
168 if (dev->tbtc_support) in mt7996_dma_start()
172 mt7996_irq_enable(dev, irq_mask); in mt7996_dma_start()
173 mt7996_irq_disable(dev, 0); in mt7996_dma_start()
176 static void mt7996_dma_enable(struct mt7996_dev *dev, bool reset) in mt7996_dma_enable() argument
180 if (dev->hif2) in mt7996_dma_enable()
184 mt76_wr(dev, MT_WFDMA0_RST_DTX_PTR, ~0); in mt7996_dma_enable()
185 if (dev->hif2) in mt7996_dma_enable()
186 mt76_wr(dev, MT_WFDMA0_RST_DTX_PTR + hif1_ofs, ~0); in mt7996_dma_enable()
189 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG0, 0); in mt7996_dma_enable()
190 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG1, 0); in mt7996_dma_enable()
191 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG2, 0); in mt7996_dma_enable()
193 if (dev->hif2) { in mt7996_dma_enable()
194 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG0 + hif1_ofs, 0); in mt7996_dma_enable()
195 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG1 + hif1_ofs, 0); in mt7996_dma_enable()
196 mt76_wr(dev, MT_WFDMA0_PRI_DLY_INT_CFG2 + hif1_ofs, 0); in mt7996_dma_enable()
200 mt7996_dma_prefetch(dev); in mt7996_dma_enable()
203 mt76_set(dev, MT_WFDMA0_BUSY_ENA, in mt7996_dma_enable()
208 if (dev->hif2) in mt7996_dma_enable()
209 mt76_set(dev, MT_WFDMA0_BUSY_ENA + hif1_ofs, in mt7996_dma_enable()
214 mt76_poll(dev, MT_WFDMA_EXT_CSR_HIF_MISC, in mt7996_dma_enable()
218 mt76_set(dev, WF_WFDMA0_GLO_CFG_EXT0, in mt7996_dma_enable()
223 mt76_set(dev, WF_WFDMA0_GLO_CFG_EXT1, in mt7996_dma_enable()
226 if (dev->hif2) { in mt7996_dma_enable()
228 mt76_set(dev, WF_WFDMA0_GLO_CFG_EXT0 + hif1_ofs, in mt7996_dma_enable()
233 mt76_set(dev, WF_WFDMA0_GLO_CFG_EXT1 + hif1_ofs, in mt7996_dma_enable()
236 mt76_set(dev, MT_WFDMA_HOST_CONFIG, in mt7996_dma_enable()
240 if (dev->hif2) { in mt7996_dma_enable()
244 mt76_set(dev, MT_WFDMA0_RX_INT_PCIE_SEL, in mt7996_dma_enable()
250 mt7996_dma_start(dev, reset); in mt7996_dma_enable()
253 int mt7996_dma_init(struct mt7996_dev *dev) in mt7996_dma_init() argument
258 mt7996_dma_config(dev); in mt7996_dma_init()
260 mt76_dma_attach(&dev->mt76); in mt7996_dma_init()
262 if (dev->hif2) in mt7996_dma_init()
265 mt7996_dma_disable(dev, true); in mt7996_dma_init()
268 ret = mt76_connac_init_tx_queues(dev->phy.mt76, in mt7996_dma_init()
269 MT_TXQ_ID(dev->mphy.band_idx), in mt7996_dma_init()
276 ret = mt76_init_mcu_queue(&dev->mt76, MT_MCUQ_WM, in mt7996_dma_init()
284 ret = mt76_init_mcu_queue(&dev->mt76, MT_MCUQ_WA, in mt7996_dma_init()
292 ret = mt76_init_mcu_queue(&dev->mt76, MT_MCUQ_FWDL, in mt7996_dma_init()
300 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU], in mt7996_dma_init()
309 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU_WA], in mt7996_dma_init()
318 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MAIN], in mt7996_dma_init()
327 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MAIN_WA], in mt7996_dma_init()
335 if (dev->tbtc_support || dev->mphy.band_idx == MT_BAND2) { in mt7996_dma_init()
337 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_BAND2], in mt7996_dma_init()
348 ret = mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_BAND2_WA], in mt7996_dma_init()
357 ret = mt76_init_queues(dev, mt76_dma_rx_poll); in mt7996_dma_init()
361 netif_napi_add_tx(&dev->mt76.tx_napi_dev, &dev->mt76.tx_napi, in mt7996_dma_init()
363 napi_enable(&dev->mt76.tx_napi); in mt7996_dma_init()
365 mt7996_dma_enable(dev, false); in mt7996_dma_init()
370 void mt7996_dma_reset(struct mt7996_dev *dev, bool force) in mt7996_dma_reset() argument
372 struct mt76_phy *phy2 = dev->mt76.phys[MT_BAND1]; in mt7996_dma_reset()
373 struct mt76_phy *phy3 = dev->mt76.phys[MT_BAND2]; in mt7996_dma_reset()
377 mt76_clear(dev, MT_WFDMA0_GLO_CFG, in mt7996_dma_reset()
381 if (dev->hif2) in mt7996_dma_reset()
382 mt76_clear(dev, MT_WFDMA0_GLO_CFG + hif1_ofs, in mt7996_dma_reset()
389 mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], true); in mt7996_dma_reset()
391 mt76_queue_tx_cleanup(dev, phy2->q_tx[i], true); in mt7996_dma_reset()
393 mt76_queue_tx_cleanup(dev, phy3->q_tx[i], true); in mt7996_dma_reset()
397 mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[i], true); in mt7996_dma_reset()
399 mt76_for_each_q_rx(&dev->mt76, i) in mt7996_dma_reset()
400 mt76_queue_rx_cleanup(dev, &dev->mt76.q_rx[i]); in mt7996_dma_reset()
402 mt76_tx_status_check(&dev->mt76, true); in mt7996_dma_reset()
406 mt7996_wfsys_reset(dev); in mt7996_dma_reset()
408 mt7996_dma_disable(dev, force); in mt7996_dma_reset()
412 mt76_queue_reset(dev, dev->mphy.q_tx[i]); in mt7996_dma_reset()
414 mt76_queue_reset(dev, phy2->q_tx[i]); in mt7996_dma_reset()
416 mt76_queue_reset(dev, phy3->q_tx[i]); in mt7996_dma_reset()
420 mt76_queue_reset(dev, dev->mt76.q_mcu[i]); in mt7996_dma_reset()
422 mt76_for_each_q_rx(&dev->mt76, i) { in mt7996_dma_reset()
423 mt76_queue_reset(dev, &dev->mt76.q_rx[i]); in mt7996_dma_reset()
426 mt76_tx_status_check(&dev->mt76, true); in mt7996_dma_reset()
428 mt76_for_each_q_rx(&dev->mt76, i) in mt7996_dma_reset()
429 mt76_queue_rx_reset(dev, i); in mt7996_dma_reset()
431 mt7996_dma_enable(dev, !force); in mt7996_dma_reset()
434 void mt7996_dma_cleanup(struct mt7996_dev *dev) in mt7996_dma_cleanup() argument
436 mt7996_dma_disable(dev, true); in mt7996_dma_cleanup()
438 mt76_dma_cleanup(&dev->mt76); in mt7996_dma_cleanup()