• Home
  • Raw
  • Download

Lines Matching refs:rt2x00dev

161 static void rt2800mmio_wakeup(struct rt2x00_dev *rt2x00dev)  in rt2800mmio_wakeup()  argument
166 rt2800_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); in rt2800mmio_wakeup()
250 static bool rt2800mmio_txdone(struct rt2x00_dev *rt2x00dev) in rt2800mmio_txdone() argument
257 while (kfifo_get(&rt2x00dev->txstatus_fifo, &status)) { in rt2800mmio_txdone()
264 rt2x00_warn(rt2x00dev, "Got TX status report with unexpected pid %u, dropping\n", in rt2800mmio_txdone()
269 queue = rt2x00queue_get_tx_queue(rt2x00dev, qid); in rt2800mmio_txdone()
275 rt2x00_warn(rt2x00dev, "Got TX status for an unavailable queue %u, dropping\n", in rt2800mmio_txdone()
285 rt2x00_warn(rt2x00dev, "Got TX status for an empty queue %u, dropping\n", in rt2800mmio_txdone()
304 rt2x00_warn(rt2x00dev, "No frame found for TX status on queue %u, dropping\n", in rt2800mmio_txdone()
324 static inline void rt2800mmio_enable_interrupt(struct rt2x00_dev *rt2x00dev, in rt2800mmio_enable_interrupt() argument
333 spin_lock_irq(&rt2x00dev->irqmask_lock); in rt2800mmio_enable_interrupt()
334 rt2x00mmio_register_read(rt2x00dev, INT_MASK_CSR, &reg); in rt2800mmio_enable_interrupt()
336 rt2x00mmio_register_write(rt2x00dev, INT_MASK_CSR, reg); in rt2800mmio_enable_interrupt()
337 spin_unlock_irq(&rt2x00dev->irqmask_lock); in rt2800mmio_enable_interrupt()
342 struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; in rt2800mmio_txstatus_tasklet() local
343 if (rt2800mmio_txdone(rt2x00dev)) in rt2800mmio_txstatus_tasklet()
344 tasklet_schedule(&rt2x00dev->txstatus_tasklet); in rt2800mmio_txstatus_tasklet()
356 struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; in rt2800mmio_pretbtt_tasklet() local
357 rt2x00lib_pretbtt(rt2x00dev); in rt2800mmio_pretbtt_tasklet()
358 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2800mmio_pretbtt_tasklet()
359 rt2800mmio_enable_interrupt(rt2x00dev, INT_MASK_CSR_PRE_TBTT); in rt2800mmio_pretbtt_tasklet()
365 struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; in rt2800mmio_tbtt_tasklet() local
366 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800mmio_tbtt_tasklet()
369 rt2x00lib_beacondone(rt2x00dev); in rt2800mmio_tbtt_tasklet()
371 if (rt2x00dev->intf_ap_count) { in rt2800mmio_tbtt_tasklet()
379 rt2x00mmio_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800mmio_tbtt_tasklet()
381 (rt2x00dev->beacon_int * 16) - 1); in rt2800mmio_tbtt_tasklet()
382 rt2x00mmio_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800mmio_tbtt_tasklet()
384 rt2x00mmio_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800mmio_tbtt_tasklet()
386 (rt2x00dev->beacon_int * 16)); in rt2800mmio_tbtt_tasklet()
387 rt2x00mmio_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800mmio_tbtt_tasklet()
393 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2800mmio_tbtt_tasklet()
394 rt2800mmio_enable_interrupt(rt2x00dev, INT_MASK_CSR_TBTT); in rt2800mmio_tbtt_tasklet()
400 struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; in rt2800mmio_rxdone_tasklet() local
401 if (rt2x00mmio_rxdone(rt2x00dev)) in rt2800mmio_rxdone_tasklet()
402 tasklet_schedule(&rt2x00dev->rxdone_tasklet); in rt2800mmio_rxdone_tasklet()
403 else if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2800mmio_rxdone_tasklet()
404 rt2800mmio_enable_interrupt(rt2x00dev, INT_MASK_CSR_RX_DONE); in rt2800mmio_rxdone_tasklet()
410 struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; in rt2800mmio_autowake_tasklet() local
411 rt2800mmio_wakeup(rt2x00dev); in rt2800mmio_autowake_tasklet()
412 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2800mmio_autowake_tasklet()
413 rt2800mmio_enable_interrupt(rt2x00dev, in rt2800mmio_autowake_tasklet()
418 static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev) in rt2800mmio_txstatus_interrupt() argument
441 for (i = 0; i < rt2x00dev->tx->limit; i++) { in rt2800mmio_txstatus_interrupt()
442 rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &status); in rt2800mmio_txstatus_interrupt()
447 if (!kfifo_put(&rt2x00dev->txstatus_fifo, status)) { in rt2800mmio_txstatus_interrupt()
448 rt2x00_warn(rt2x00dev, "TX status FIFO overrun, drop tx status report\n"); in rt2800mmio_txstatus_interrupt()
454 tasklet_schedule(&rt2x00dev->txstatus_tasklet); in rt2800mmio_txstatus_interrupt()
459 struct rt2x00_dev *rt2x00dev = dev_instance; in rt2800mmio_interrupt() local
463 rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR, &reg); in rt2800mmio_interrupt()
464 rt2x00mmio_register_write(rt2x00dev, INT_SOURCE_CSR, reg); in rt2800mmio_interrupt()
469 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2800mmio_interrupt()
480 rt2800mmio_txstatus_interrupt(rt2x00dev); in rt2800mmio_interrupt()
488 tasklet_hi_schedule(&rt2x00dev->pretbtt_tasklet); in rt2800mmio_interrupt()
491 tasklet_hi_schedule(&rt2x00dev->tbtt_tasklet); in rt2800mmio_interrupt()
494 tasklet_schedule(&rt2x00dev->rxdone_tasklet); in rt2800mmio_interrupt()
497 tasklet_schedule(&rt2x00dev->autowake_tasklet); in rt2800mmio_interrupt()
503 spin_lock(&rt2x00dev->irqmask_lock); in rt2800mmio_interrupt()
504 rt2x00mmio_register_read(rt2x00dev, INT_MASK_CSR, &reg); in rt2800mmio_interrupt()
506 rt2x00mmio_register_write(rt2x00dev, INT_MASK_CSR, reg); in rt2800mmio_interrupt()
507 spin_unlock(&rt2x00dev->irqmask_lock); in rt2800mmio_interrupt()
513 void rt2800mmio_toggle_irq(struct rt2x00_dev *rt2x00dev, in rt2800mmio_toggle_irq() argument
524 rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR, &reg); in rt2800mmio_toggle_irq()
525 rt2x00mmio_register_write(rt2x00dev, INT_SOURCE_CSR, reg); in rt2800mmio_toggle_irq()
528 spin_lock_irqsave(&rt2x00dev->irqmask_lock, flags); in rt2800mmio_toggle_irq()
537 rt2x00mmio_register_write(rt2x00dev, INT_MASK_CSR, reg); in rt2800mmio_toggle_irq()
538 spin_unlock_irqrestore(&rt2x00dev->irqmask_lock, flags); in rt2800mmio_toggle_irq()
544 tasklet_kill(&rt2x00dev->txstatus_tasklet); in rt2800mmio_toggle_irq()
545 tasklet_kill(&rt2x00dev->rxdone_tasklet); in rt2800mmio_toggle_irq()
546 tasklet_kill(&rt2x00dev->autowake_tasklet); in rt2800mmio_toggle_irq()
547 tasklet_kill(&rt2x00dev->tbtt_tasklet); in rt2800mmio_toggle_irq()
548 tasklet_kill(&rt2x00dev->pretbtt_tasklet); in rt2800mmio_toggle_irq()
558 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800mmio_start_queue() local
563 rt2x00mmio_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); in rt2800mmio_start_queue()
565 rt2x00mmio_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800mmio_start_queue()
568 rt2x00mmio_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800mmio_start_queue()
572 rt2x00mmio_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800mmio_start_queue()
574 rt2x00mmio_register_read(rt2x00dev, INT_TIMER_EN, &reg); in rt2800mmio_start_queue()
576 rt2x00mmio_register_write(rt2x00dev, INT_TIMER_EN, reg); in rt2800mmio_start_queue()
586 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800mmio_kick_queue() local
595 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX(queue->qid), in rt2800mmio_kick_queue()
600 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX(5), in rt2800mmio_kick_queue()
611 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800mmio_stop_queue() local
616 rt2x00mmio_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); in rt2800mmio_stop_queue()
618 rt2x00mmio_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800mmio_stop_queue()
621 rt2x00mmio_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800mmio_stop_queue()
625 rt2x00mmio_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800mmio_stop_queue()
627 rt2x00mmio_register_read(rt2x00dev, INT_TIMER_EN, &reg); in rt2800mmio_stop_queue()
629 rt2x00mmio_register_write(rt2x00dev, INT_TIMER_EN, reg); in rt2800mmio_stop_queue()
636 tasklet_kill(&rt2x00dev->tbtt_tasklet); in rt2800mmio_stop_queue()
637 tasklet_kill(&rt2x00dev->pretbtt_tasklet); in rt2800mmio_stop_queue()
648 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800mmio_queue_init() local
651 rt2800_get_txwi_rxwi_size(rt2x00dev, &txwi_size, &rxwi_size); in rt2800mmio_queue_init()
714 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2800mmio_clear_entry() local
730 rt2x00mmio_register_write(rt2x00dev, RX_CRX_IDX, in rt2800mmio_clear_entry()
740 int rt2800mmio_init_queues(struct rt2x00_dev *rt2x00dev) in rt2800mmio_init_queues() argument
747 entry_priv = rt2x00dev->tx[0].entries[0].priv_data; in rt2800mmio_init_queues()
748 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR0, in rt2800mmio_init_queues()
750 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT0, in rt2800mmio_init_queues()
751 rt2x00dev->tx[0].limit); in rt2800mmio_init_queues()
752 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX0, 0); in rt2800mmio_init_queues()
753 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX0, 0); in rt2800mmio_init_queues()
755 entry_priv = rt2x00dev->tx[1].entries[0].priv_data; in rt2800mmio_init_queues()
756 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR1, in rt2800mmio_init_queues()
758 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT1, in rt2800mmio_init_queues()
759 rt2x00dev->tx[1].limit); in rt2800mmio_init_queues()
760 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX1, 0); in rt2800mmio_init_queues()
761 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX1, 0); in rt2800mmio_init_queues()
763 entry_priv = rt2x00dev->tx[2].entries[0].priv_data; in rt2800mmio_init_queues()
764 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR2, in rt2800mmio_init_queues()
766 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT2, in rt2800mmio_init_queues()
767 rt2x00dev->tx[2].limit); in rt2800mmio_init_queues()
768 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX2, 0); in rt2800mmio_init_queues()
769 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX2, 0); in rt2800mmio_init_queues()
771 entry_priv = rt2x00dev->tx[3].entries[0].priv_data; in rt2800mmio_init_queues()
772 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR3, in rt2800mmio_init_queues()
774 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT3, in rt2800mmio_init_queues()
775 rt2x00dev->tx[3].limit); in rt2800mmio_init_queues()
776 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX3, 0); in rt2800mmio_init_queues()
777 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX3, 0); in rt2800mmio_init_queues()
779 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR4, 0); in rt2800mmio_init_queues()
780 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT4, 0); in rt2800mmio_init_queues()
781 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX4, 0); in rt2800mmio_init_queues()
782 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX4, 0); in rt2800mmio_init_queues()
784 rt2x00mmio_register_write(rt2x00dev, TX_BASE_PTR5, 0); in rt2800mmio_init_queues()
785 rt2x00mmio_register_write(rt2x00dev, TX_MAX_CNT5, 0); in rt2800mmio_init_queues()
786 rt2x00mmio_register_write(rt2x00dev, TX_CTX_IDX5, 0); in rt2800mmio_init_queues()
787 rt2x00mmio_register_write(rt2x00dev, TX_DTX_IDX5, 0); in rt2800mmio_init_queues()
789 entry_priv = rt2x00dev->rx->entries[0].priv_data; in rt2800mmio_init_queues()
790 rt2x00mmio_register_write(rt2x00dev, RX_BASE_PTR, in rt2800mmio_init_queues()
792 rt2x00mmio_register_write(rt2x00dev, RX_MAX_CNT, in rt2800mmio_init_queues()
793 rt2x00dev->rx[0].limit); in rt2800mmio_init_queues()
794 rt2x00mmio_register_write(rt2x00dev, RX_CRX_IDX, in rt2800mmio_init_queues()
795 rt2x00dev->rx[0].limit - 1); in rt2800mmio_init_queues()
796 rt2x00mmio_register_write(rt2x00dev, RX_DRX_IDX, 0); in rt2800mmio_init_queues()
798 rt2800_disable_wpdma(rt2x00dev); in rt2800mmio_init_queues()
800 rt2x00mmio_register_write(rt2x00dev, DELAY_INT_CFG, 0); in rt2800mmio_init_queues()
806 int rt2800mmio_init_registers(struct rt2x00_dev *rt2x00dev) in rt2800mmio_init_registers() argument
813 rt2x00mmio_register_read(rt2x00dev, WPDMA_RST_IDX, &reg); in rt2800mmio_init_registers()
821 rt2x00mmio_register_write(rt2x00dev, WPDMA_RST_IDX, reg); in rt2800mmio_init_registers()
823 rt2x00mmio_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f); in rt2800mmio_init_registers()
824 rt2x00mmio_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00); in rt2800mmio_init_registers()
826 if (rt2x00_is_pcie(rt2x00dev) && in rt2800mmio_init_registers()
827 (rt2x00_rt(rt2x00dev, RT3090) || in rt2800mmio_init_registers()
828 rt2x00_rt(rt2x00dev, RT3390) || in rt2800mmio_init_registers()
829 rt2x00_rt(rt2x00dev, RT3572) || in rt2800mmio_init_registers()
830 rt2x00_rt(rt2x00dev, RT3593) || in rt2800mmio_init_registers()
831 rt2x00_rt(rt2x00dev, RT5390) || in rt2800mmio_init_registers()
832 rt2x00_rt(rt2x00dev, RT5392) || in rt2800mmio_init_registers()
833 rt2x00_rt(rt2x00dev, RT5592))) { in rt2800mmio_init_registers()
834 rt2x00mmio_register_read(rt2x00dev, AUX_CTRL, &reg); in rt2800mmio_init_registers()
837 rt2x00mmio_register_write(rt2x00dev, AUX_CTRL, reg); in rt2800mmio_init_registers()
840 rt2x00mmio_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003); in rt2800mmio_init_registers()
845 rt2x00mmio_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800mmio_init_registers()
847 rt2x00mmio_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); in rt2800mmio_init_registers()
856 int rt2800mmio_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2800mmio_enable_radio() argument
859 rt2800_wait_wpdma_ready(rt2x00dev); in rt2800mmio_enable_radio()
861 if (unlikely(rt2800mmio_init_queues(rt2x00dev))) in rt2800mmio_enable_radio()
864 return rt2800_enable_radio(rt2x00dev); in rt2800mmio_enable_radio()