Lines Matching refs:rt2x00dev
49 static bool rt2800usb_hwcrypt_disabled(struct rt2x00_dev *rt2x00dev) in rt2800usb_hwcrypt_disabled() argument
59 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800usb_start_queue() local
64 rt2x00usb_register_read(rt2x00dev, MAC_SYS_CTRL, ®); in rt2800usb_start_queue()
66 rt2x00usb_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800usb_start_queue()
69 rt2x00usb_register_read(rt2x00dev, BCN_TIME_CFG, ®); in rt2800usb_start_queue()
73 rt2x00usb_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800usb_start_queue()
82 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800usb_stop_queue() local
87 rt2x00usb_register_read(rt2x00dev, MAC_SYS_CTRL, ®); in rt2800usb_stop_queue()
89 rt2x00usb_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800usb_stop_queue()
92 rt2x00usb_register_read(rt2x00dev, BCN_TIME_CFG, ®); in rt2800usb_stop_queue()
96 rt2x00usb_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800usb_stop_queue()
107 static bool rt2800usb_txstatus_pending(struct rt2x00_dev *rt2x00dev) in rt2800usb_txstatus_pending() argument
111 tx_queue_for_each(rt2x00dev, queue) { in rt2800usb_txstatus_pending()
128 rt2x00_dbg(entry->queue->rt2x00dev, in rt2800usb_entry_txstatus_timeout()
135 static bool rt2800usb_txstatus_timeout(struct rt2x00_dev *rt2x00dev) in rt2800usb_txstatus_timeout() argument
140 tx_queue_for_each(rt2x00dev, queue) { in rt2800usb_txstatus_timeout()
150 static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev, in rt2800usb_tx_sta_fifo_read_completed() argument
156 rt2x00_warn(rt2x00dev, "TX status read failed %d\n", in rt2800usb_tx_sta_fifo_read_completed()
164 if (!kfifo_put(&rt2x00dev->txstatus_fifo, tx_status)) in rt2800usb_tx_sta_fifo_read_completed()
165 rt2x00_warn(rt2x00dev, "TX status FIFO overrun\n"); in rt2800usb_tx_sta_fifo_read_completed()
167 queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); in rt2800usb_tx_sta_fifo_read_completed()
174 if (rt2800usb_txstatus_timeout(rt2x00dev)) in rt2800usb_tx_sta_fifo_read_completed()
175 queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); in rt2800usb_tx_sta_fifo_read_completed()
177 if (rt2800usb_txstatus_pending(rt2x00dev)) { in rt2800usb_tx_sta_fifo_read_completed()
179 hrtimer_start(&rt2x00dev->txstatus_timer, in rt2800usb_tx_sta_fifo_read_completed()
186 clear_bit(TX_STATUS_READING, &rt2x00dev->flags); in rt2800usb_tx_sta_fifo_read_completed()
192 if (rt2800usb_txstatus_pending(rt2x00dev) && in rt2800usb_tx_sta_fifo_read_completed()
193 !test_and_set_bit(TX_STATUS_READING, &rt2x00dev->flags)) in rt2800usb_tx_sta_fifo_read_completed()
199 static void rt2800usb_async_read_tx_status(struct rt2x00_dev *rt2x00dev) in rt2800usb_async_read_tx_status() argument
202 if (test_and_set_bit(TX_STATUS_READING, &rt2x00dev->flags)) in rt2800usb_async_read_tx_status()
206 hrtimer_start(&rt2x00dev->txstatus_timer, in rt2800usb_async_read_tx_status()
213 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2800usb_tx_dma_done() local
215 rt2800usb_async_read_tx_status(rt2x00dev); in rt2800usb_tx_dma_done()
220 struct rt2x00_dev *rt2x00dev = in rt2800usb_tx_sta_fifo_timeout() local
223 rt2x00usb_register_read_async(rt2x00dev, TX_STA_FIFO, in rt2800usb_tx_sta_fifo_timeout()
232 static int rt2800usb_autorun_detect(struct rt2x00_dev *rt2x00dev) in rt2800usb_autorun_detect() argument
245 rt2x00usb_vendor_request(rt2x00dev, USB_DEVICE_MODE, in rt2800usb_autorun_detect()
257 static char *rt2800usb_get_firmware_name(struct rt2x00_dev *rt2x00dev) in rt2800usb_get_firmware_name() argument
262 static int rt2800usb_write_firmware(struct rt2x00_dev *rt2x00dev, in rt2800usb_write_firmware() argument
273 if (rt2x00_rt(rt2x00dev, RT2860) || in rt2800usb_write_firmware()
274 rt2x00_rt(rt2x00dev, RT2872) || in rt2800usb_write_firmware()
275 rt2x00_rt(rt2x00dev, RT3070)) { in rt2800usb_write_firmware()
286 retval = rt2800usb_autorun_detect(rt2x00dev); in rt2800usb_write_firmware()
290 rt2x00_info(rt2x00dev, in rt2800usb_write_firmware()
293 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, in rt2800usb_write_firmware()
297 rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); in rt2800usb_write_firmware()
298 rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); in rt2800usb_write_firmware()
304 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, in rt2800usb_write_firmware()
308 rt2x00_err(rt2x00dev, "Failed to write Firmware to device\n"); in rt2800usb_write_firmware()
313 rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800usb_write_firmware()
321 static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt2800usb_init_registers() argument
328 if (rt2800_wait_csr_ready(rt2x00dev)) in rt2800usb_init_registers()
331 rt2x00usb_register_read(rt2x00dev, PBF_SYS_CTRL, ®); in rt2800usb_init_registers()
332 rt2x00usb_register_write(rt2x00dev, PBF_SYS_CTRL, reg & ~0x00002000); in rt2800usb_init_registers()
337 rt2x00usb_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800usb_init_registers()
339 rt2x00usb_register_write(rt2x00dev, USB_DMA_CFG, 0x00000000); in rt2800usb_init_registers()
341 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt2800usb_init_registers()
344 rt2x00usb_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); in rt2800usb_init_registers()
349 static int rt2800usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2800usb_enable_radio() argument
353 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev))) in rt2800usb_enable_radio()
356 rt2x00usb_register_read(rt2x00dev, USB_DMA_CFG, ®); in rt2800usb_enable_radio()
365 ((rt2x00dev->rx->limit * DATA_FRAME_SIZE) in rt2800usb_enable_radio()
369 rt2x00usb_register_write(rt2x00dev, USB_DMA_CFG, reg); in rt2800usb_enable_radio()
371 return rt2800_enable_radio(rt2x00dev); in rt2800usb_enable_radio()
374 static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2800usb_disable_radio() argument
376 rt2800_disable_radio(rt2x00dev); in rt2800usb_disable_radio()
377 rt2x00usb_disable_radio(rt2x00dev); in rt2800usb_disable_radio()
380 static int rt2800usb_set_state(struct rt2x00_dev *rt2x00dev, in rt2800usb_set_state() argument
384 rt2800_mcu_request(rt2x00dev, MCU_WAKEUP, 0xff, 0, 2); in rt2800usb_set_state()
386 rt2800_mcu_request(rt2x00dev, MCU_SLEEP, 0xff, 0xff, 2); in rt2800usb_set_state()
391 static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt2800usb_set_device_state() argument
403 rt2800usb_set_state(rt2x00dev, STATE_AWAKE); in rt2800usb_set_device_state()
405 retval = rt2800usb_enable_radio(rt2x00dev); in rt2800usb_set_device_state()
412 rt2800usb_disable_radio(rt2x00dev); in rt2800usb_set_device_state()
413 rt2800usb_set_state(rt2x00dev, STATE_SLEEP); in rt2800usb_set_device_state()
423 retval = rt2800usb_set_state(rt2x00dev, state); in rt2800usb_set_device_state()
431 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt2800usb_set_device_state()
440 static void rt2800usb_watchdog(struct rt2x00_dev *rt2x00dev) in rt2800usb_watchdog() argument
445 rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, ®); in rt2800usb_watchdog()
447 rt2x00_warn(rt2x00dev, "TX HW queue 0 timed out, invoke forced kick\n"); in rt2800usb_watchdog()
449 rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40012); in rt2800usb_watchdog()
457 rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40006); in rt2800usb_watchdog()
460 rt2x00usb_register_read(rt2x00dev, TXRXQ_PCNT, ®); in rt2800usb_watchdog()
462 rt2x00_warn(rt2x00dev, "TX HW queue 1 timed out, invoke forced kick\n"); in rt2800usb_watchdog()
464 rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf4000a); in rt2800usb_watchdog()
472 rt2x00usb_register_write(rt2x00dev, PBF_CFG, 0xf40006); in rt2800usb_watchdog()
475 rt2x00usb_watchdog(rt2x00dev); in rt2800usb_watchdog()
577 rt2x00_dbg(entry->queue->rt2x00dev, in rt2800usb_txdone_entry_check()
586 static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev) in rt2800usb_txdone() argument
594 while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) { in rt2800usb_txdone()
600 queue = rt2x00queue_get_tx_queue(rt2x00dev, qid); in rt2800usb_txdone()
603 rt2x00_dbg(rt2x00dev, "Got TX status for an empty queue %u, dropping\n", in rt2800usb_txdone()
612 rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n", in rt2800usb_txdone()
625 static void rt2800usb_txdone_nostatus(struct rt2x00_dev *rt2x00dev) in rt2800usb_txdone_nostatus() argument
637 tx_queue_for_each(rt2x00dev, queue) { in rt2800usb_txdone_nostatus()
657 struct rt2x00_dev *rt2x00dev = in rt2800usb_work_txdone() local
660 while (!kfifo_is_empty(&rt2x00dev->txstatus_fifo) || in rt2800usb_work_txdone()
661 rt2800usb_txstatus_timeout(rt2x00dev)) { in rt2800usb_work_txdone()
663 rt2800usb_txdone(rt2x00dev); in rt2800usb_work_txdone()
665 rt2800usb_txdone_nostatus(rt2x00dev); in rt2800usb_work_txdone()
672 if (rt2800usb_txstatus_pending(rt2x00dev)) in rt2800usb_work_txdone()
673 rt2800usb_async_read_tx_status(rt2x00dev); in rt2800usb_work_txdone()
714 rt2x00_err(entry->queue->rt2x00dev, in rt2800usb_fill_rxdone()
772 static int rt2800usb_efuse_detect(struct rt2x00_dev *rt2x00dev) in rt2800usb_efuse_detect() argument
776 retval = rt2800usb_autorun_detect(rt2x00dev); in rt2800usb_efuse_detect()
781 return rt2800_efuse_detect(rt2x00dev); in rt2800usb_efuse_detect()
784 static int rt2800usb_read_eeprom(struct rt2x00_dev *rt2x00dev) in rt2800usb_read_eeprom() argument
788 retval = rt2800usb_efuse_detect(rt2x00dev); in rt2800usb_read_eeprom()
792 retval = rt2800_read_eeprom_efuse(rt2x00dev); in rt2800usb_read_eeprom()
794 retval = rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, in rt2800usb_read_eeprom()
800 static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2800usb_probe_hw() argument
804 retval = rt2800_probe_hw(rt2x00dev); in rt2800usb_probe_hw()
811 rt2x00dev->txstatus_timer.function = rt2800usb_tx_sta_fifo_timeout; in rt2800usb_probe_hw()
816 INIT_WORK(&rt2x00dev->txdone_work, rt2800usb_work_txdone); in rt2800usb_probe_hw()
904 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2800usb_queue_init() local
907 rt2800_get_txwi_rxwi_size(rt2x00dev, &txwi_size, &rxwi_size); in rt2800usb_queue_init()