Lines Matching refs:rt2x00dev
37 int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev, in rt2x00usb_vendor_request() argument
43 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2x00usb_vendor_request()
50 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00usb_vendor_request()
62 clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00usb_vendor_request()
67 rt2x00_err(rt2x00dev, in rt2x00usb_vendor_request()
75 int rt2x00usb_vendor_req_buff_lock(struct rt2x00_dev *rt2x00dev, in rt2x00usb_vendor_req_buff_lock() argument
82 BUG_ON(!mutex_is_locked(&rt2x00dev->csr_mutex)); in rt2x00usb_vendor_req_buff_lock()
87 if (unlikely(!rt2x00dev->csr.cache || buffer_length > CSR_CACHE_SIZE)) { in rt2x00usb_vendor_req_buff_lock()
88 rt2x00_err(rt2x00dev, "CSR cache not available\n"); in rt2x00usb_vendor_req_buff_lock()
93 memcpy(rt2x00dev->csr.cache, buffer, buffer_length); in rt2x00usb_vendor_req_buff_lock()
95 status = rt2x00usb_vendor_request(rt2x00dev, request, requesttype, in rt2x00usb_vendor_req_buff_lock()
96 offset, 0, rt2x00dev->csr.cache, in rt2x00usb_vendor_req_buff_lock()
100 memcpy(buffer, rt2x00dev->csr.cache, buffer_length); in rt2x00usb_vendor_req_buff_lock()
106 int rt2x00usb_vendor_request_buff(struct rt2x00_dev *rt2x00dev, in rt2x00usb_vendor_request_buff() argument
115 mutex_lock(&rt2x00dev->csr_mutex); in rt2x00usb_vendor_request_buff()
122 status = rt2x00usb_vendor_req_buff_lock(rt2x00dev, request, in rt2x00usb_vendor_request_buff()
131 mutex_unlock(&rt2x00dev->csr_mutex); in rt2x00usb_vendor_request_buff()
137 int rt2x00usb_regbusy_read(struct rt2x00_dev *rt2x00dev, in rt2x00usb_regbusy_read() argument
144 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00usb_regbusy_read()
148 *reg = rt2x00usb_register_read_lock(rt2x00dev, offset); in rt2x00usb_regbusy_read()
154 rt2x00_err(rt2x00dev, "Indirect register access failed: offset=0x%.08x, value=0x%.08x\n", in rt2x00usb_regbusy_read()
166 struct rt2x00_dev *rt2x00dev; member
173 if (rd->callback(rd->rt2x00dev, urb->status, le32_to_cpu(rd->reg))) { in rt2x00usb_register_read_async_cb()
174 usb_anchor_urb(urb, rd->rt2x00dev->anchor); in rt2x00usb_register_read_async_cb()
183 void rt2x00usb_register_read_async(struct rt2x00_dev *rt2x00dev, in rt2x00usb_register_read_async() argument
187 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2x00usb_register_read_async()
201 rd->rt2x00dev = rt2x00dev; in rt2x00usb_register_read_async()
212 usb_anchor_urb(urb, rt2x00dev->anchor); in rt2x00usb_register_read_async()
242 struct rt2x00_dev *rt2x00dev = in rt2x00usb_work_txdone() local
247 tx_queue_for_each(rt2x00dev, queue) { in rt2x00usb_work_txdone()
263 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00usb_interrupt_txdone() local
277 if (rt2x00dev->ops->lib->tx_dma_done) in rt2x00usb_interrupt_txdone()
278 rt2x00dev->ops->lib->tx_dma_done(entry); in rt2x00usb_interrupt_txdone()
283 if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_TXSTATUS_FIFO) || in rt2x00usb_interrupt_txdone()
284 !kfifo_is_empty(&rt2x00dev->txstatus_fifo)) in rt2x00usb_interrupt_txdone()
285 queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); in rt2x00usb_interrupt_txdone()
290 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00usb_kick_tx_entry() local
291 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2x00usb_kick_tx_entry()
305 length = rt2x00dev->ops->lib->get_tx_data_len(entry); in rt2x00usb_kick_tx_entry()
310 rt2x00_warn(rt2x00dev, "TX SKB padding error, out of memory\n"); in rt2x00usb_kick_tx_entry()
325 clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00usb_kick_tx_entry()
338 struct rt2x00_dev *rt2x00dev = in rt2x00usb_work_rxdone() local
344 while (!rt2x00queue_empty(rt2x00dev->rx)) { in rt2x00usb_work_rxdone()
345 entry = rt2x00queue_get_entry(rt2x00dev->rx, Q_INDEX_DONE); in rt2x00usb_work_rxdone()
368 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00usb_interrupt_rxdone() local
390 queue_work(rt2x00dev->workqueue, &rt2x00dev->rxdone_work); in rt2x00usb_interrupt_rxdone()
395 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00usb_kick_rx_entry() local
396 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2x00usb_kick_rx_entry()
414 clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00usb_kick_rx_entry()
452 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00usb_flush_entry() local
465 (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_BEACON_GUARD))) in rt2x00usb_flush_entry()
488 completion = &queue->rt2x00dev->txdone_work; in rt2x00usb_flush_queue()
491 completion = &queue->rt2x00dev->rxdone_work; in rt2x00usb_flush_queue()
510 queue_work(queue->rt2x00dev->workqueue, completion); in rt2x00usb_flush_queue()
523 rt2x00_warn(queue->rt2x00dev, "TX queue %d DMA timed out, invoke forced forced reset\n", in rt2x00usb_watchdog_tx_dma()
539 void rt2x00usb_watchdog(struct rt2x00_dev *rt2x00dev) in rt2x00usb_watchdog() argument
543 tx_queue_for_each(rt2x00dev, queue) { in rt2x00usb_watchdog()
555 void rt2x00usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2x00usb_disable_radio() argument
557 rt2x00usb_vendor_request_sw(rt2x00dev, USB_RX_CONTROL, 0, 0, in rt2x00usb_disable_radio()
577 struct usb_device *usb_dev = to_usb_device_intf(queue->rt2x00dev->dev); in rt2x00usb_assign_endpoint()
594 static int rt2x00usb_find_endpoints(struct rt2x00_dev *rt2x00dev) in rt2x00usb_find_endpoints() argument
596 struct usb_interface *intf = to_usb_interface(rt2x00dev->dev); in rt2x00usb_find_endpoints()
599 struct data_queue *queue = rt2x00dev->tx; in rt2x00usb_find_endpoints()
613 rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc); in rt2x00usb_find_endpoints()
615 (queue != queue_end(rt2x00dev))) { in rt2x00usb_find_endpoints()
626 if (!rt2x00dev->rx->usb_endpoint || !rt2x00dev->tx->usb_endpoint) { in rt2x00usb_find_endpoints()
627 rt2x00_err(rt2x00dev, "Bulk-in/Bulk-out endpoints not found\n"); in rt2x00usb_find_endpoints()
636 txall_queue_for_each(rt2x00dev, queue) { in rt2x00usb_find_endpoints()
646 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2x00usb_alloc_entries() local
664 !rt2x00_has_cap_flag(rt2x00dev, REQUIRE_BEACON_GUARD)) in rt2x00usb_alloc_entries()
679 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2x00usb_free_entries() local
699 !rt2x00_has_cap_flag(rt2x00dev, REQUIRE_BEACON_GUARD)) in rt2x00usb_free_entries()
709 int rt2x00usb_initialize(struct rt2x00_dev *rt2x00dev) in rt2x00usb_initialize() argument
717 status = rt2x00usb_find_endpoints(rt2x00dev); in rt2x00usb_initialize()
724 queue_for_each(rt2x00dev, queue) { in rt2x00usb_initialize()
733 rt2x00usb_uninitialize(rt2x00dev); in rt2x00usb_initialize()
739 void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev) in rt2x00usb_uninitialize() argument
743 usb_kill_anchored_urbs(rt2x00dev->anchor); in rt2x00usb_uninitialize()
744 hrtimer_cancel(&rt2x00dev->txstatus_timer); in rt2x00usb_uninitialize()
745 cancel_work_sync(&rt2x00dev->rxdone_work); in rt2x00usb_uninitialize()
746 cancel_work_sync(&rt2x00dev->txdone_work); in rt2x00usb_uninitialize()
748 queue_for_each(rt2x00dev, queue) in rt2x00usb_uninitialize()
756 static void rt2x00usb_free_reg(struct rt2x00_dev *rt2x00dev) in rt2x00usb_free_reg() argument
758 kfree(rt2x00dev->rf); in rt2x00usb_free_reg()
759 rt2x00dev->rf = NULL; in rt2x00usb_free_reg()
761 kfree(rt2x00dev->eeprom); in rt2x00usb_free_reg()
762 rt2x00dev->eeprom = NULL; in rt2x00usb_free_reg()
764 kfree(rt2x00dev->csr.cache); in rt2x00usb_free_reg()
765 rt2x00dev->csr.cache = NULL; in rt2x00usb_free_reg()
768 static int rt2x00usb_alloc_reg(struct rt2x00_dev *rt2x00dev) in rt2x00usb_alloc_reg() argument
770 rt2x00dev->csr.cache = kzalloc(CSR_CACHE_SIZE, GFP_KERNEL); in rt2x00usb_alloc_reg()
771 if (!rt2x00dev->csr.cache) in rt2x00usb_alloc_reg()
774 rt2x00dev->eeprom = kzalloc(rt2x00dev->ops->eeprom_size, GFP_KERNEL); in rt2x00usb_alloc_reg()
775 if (!rt2x00dev->eeprom) in rt2x00usb_alloc_reg()
778 rt2x00dev->rf = kzalloc(rt2x00dev->ops->rf_size, GFP_KERNEL); in rt2x00usb_alloc_reg()
779 if (!rt2x00dev->rf) in rt2x00usb_alloc_reg()
787 rt2x00usb_free_reg(rt2x00dev); in rt2x00usb_alloc_reg()
797 struct rt2x00_dev *rt2x00dev; in rt2x00usb_probe() local
812 rt2x00dev = hw->priv; in rt2x00usb_probe()
813 rt2x00dev->dev = &usb_intf->dev; in rt2x00usb_probe()
814 rt2x00dev->ops = ops; in rt2x00usb_probe()
815 rt2x00dev->hw = hw; in rt2x00usb_probe()
817 rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_USB); in rt2x00usb_probe()
819 INIT_WORK(&rt2x00dev->rxdone_work, rt2x00usb_work_rxdone); in rt2x00usb_probe()
820 INIT_WORK(&rt2x00dev->txdone_work, rt2x00usb_work_txdone); in rt2x00usb_probe()
821 hrtimer_init(&rt2x00dev->txstatus_timer, CLOCK_MONOTONIC, in rt2x00usb_probe()
824 retval = rt2x00usb_alloc_reg(rt2x00dev); in rt2x00usb_probe()
828 rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev, in rt2x00usb_probe()
831 if (!rt2x00dev->anchor) { in rt2x00usb_probe()
835 init_usb_anchor(rt2x00dev->anchor); in rt2x00usb_probe()
837 retval = rt2x00lib_probe_dev(rt2x00dev); in rt2x00usb_probe()
844 usb_kill_anchored_urbs(rt2x00dev->anchor); in rt2x00usb_probe()
847 rt2x00usb_free_reg(rt2x00dev); in rt2x00usb_probe()
864 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2x00usb_disconnect() local
869 rt2x00lib_remove_dev(rt2x00dev); in rt2x00usb_disconnect()
870 rt2x00usb_free_reg(rt2x00dev); in rt2x00usb_disconnect()
885 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2x00usb_suspend() local
887 return rt2x00lib_suspend(rt2x00dev, state); in rt2x00usb_suspend()
894 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2x00usb_resume() local
896 return rt2x00lib_resume(rt2x00dev); in rt2x00usb_resume()