Lines Matching refs:usb

109 MODULE_DEVICE_TABLE(usb, usb_ids);
114 static bool check_read_regs(struct zd_usb *usb, struct usb_req_read_regs *req,
227 static char *get_fw_name(struct zd_usb *usb, char *buffer, size_t size, in get_fw_name() argument
231 usb->is_zd1211b ? in get_fw_name()
237 static int handle_version_mismatch(struct zd_usb *usb, in handle_version_mismatch() argument
240 struct usb_device *udev = zd_usb_to_usbdev(usb); in handle_version_mismatch()
247 get_fw_name(usb, fw_name, sizeof(fw_name), "ur"), in handle_version_mismatch()
270 static int upload_firmware(struct zd_usb *usb) in upload_firmware() argument
275 struct usb_device *udev = zd_usb_to_usbdev(usb); in upload_firmware()
283 get_fw_name(usb, fw_name, sizeof(fw_name), "ub"), in upload_firmware()
298 r = handle_version_mismatch(usb, ub_fw); in upload_firmware()
309 get_fw_name(usb, fw_name, sizeof(fw_name), "uphr"), in upload_firmware()
337 int zd_usb_read_fw(struct zd_usb *usb, zd_addr_t addr, u8 *data, u16 len) in zd_usb_read_fw() argument
340 struct usb_device *udev = zd_usb_to_usbdev(usb); in zd_usb_read_fw()
372 struct zd_usb *usb = urb->context; in handle_regs_int_override() local
373 struct zd_usb_interrupt *intr = &usb->intr; in handle_regs_int_override()
386 struct zd_usb *usb = urb->context; in handle_regs_int() local
387 struct zd_usb_interrupt *intr = &usb->intr; in handle_regs_int()
416 if (!check_read_regs(usb, intr->read_regs.req, in handle_regs_int()
439 struct zd_usb *usb; in int_urb_complete() local
472 usb = urb->context; in int_urb_complete()
473 intr = &usb->intr; in int_urb_complete()
513 static inline int usb_int_enabled(struct zd_usb *usb) in usb_int_enabled() argument
516 struct zd_usb_interrupt *intr = &usb->intr; in usb_int_enabled()
525 int zd_usb_enable_int(struct zd_usb *usb) in zd_usb_enable_int() argument
528 struct usb_device *udev = zd_usb_to_usbdev(usb); in zd_usb_enable_int()
529 struct zd_usb_interrupt *intr = &usb->intr; in zd_usb_enable_int()
532 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_usb_enable_int()
554 dev_dbg_f(zd_usb_dev(usb), in zd_usb_enable_int()
561 int_urb_complete, usb, in zd_usb_enable_int()
566 dev_dbg_f(zd_usb_dev(usb), "submit urb %p\n", intr->urb); in zd_usb_enable_int()
569 dev_dbg_f(zd_usb_dev(usb), in zd_usb_enable_int()
588 void zd_usb_disable_int(struct zd_usb *usb) in zd_usb_disable_int() argument
591 struct usb_device *udev = zd_usb_to_usbdev(usb); in zd_usb_disable_int()
592 struct zd_usb_interrupt *intr = &usb->intr; in zd_usb_disable_int()
610 dev_dbg_f(zd_usb_dev(usb), "urb %p killed\n", urb); in zd_usb_disable_int()
618 static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer, in handle_rx_packet() argument
626 dev_dbg_f(zd_usb_dev(usb), "invalid, small RX packet : %d\n", in handle_rx_packet()
651 zd_mac_rx(zd_usb_to_hw(usb), buffer+l, k); in handle_rx_packet()
657 zd_mac_rx(zd_usb_to_hw(usb), buffer, length); in handle_rx_packet()
664 struct zd_usb *usb; in rx_urb_complete() local
687 usb = urb->context; in rx_urb_complete()
688 rx = &usb->rx; in rx_urb_complete()
710 handle_rx_packet(usb, rx->fragment, in rx_urb_complete()
716 handle_rx_packet(usb, buffer, length); in rx_urb_complete()
725 static struct urb *alloc_rx_urb(struct zd_usb *usb) in alloc_rx_urb() argument
727 struct usb_device *udev = zd_usb_to_usbdev(usb); in alloc_rx_urb()
743 rx_urb_complete, usb); in alloc_rx_urb()
758 static int __zd_usb_enable_rx(struct zd_usb *usb) in __zd_usb_enable_rx() argument
761 struct zd_usb_rx *rx = &usb->rx; in __zd_usb_enable_rx()
764 dev_dbg_f(zd_usb_dev(usb), "\n"); in __zd_usb_enable_rx()
771 urbs[i] = alloc_rx_urb(usb); in __zd_usb_enable_rx()
810 int zd_usb_enable_rx(struct zd_usb *usb) in zd_usb_enable_rx() argument
813 struct zd_usb_rx *rx = &usb->rx; in zd_usb_enable_rx()
816 r = __zd_usb_enable_rx(usb); in zd_usb_enable_rx()
819 zd_usb_reset_rx_idle_timer(usb); in zd_usb_enable_rx()
824 static void __zd_usb_disable_rx(struct zd_usb *usb) in __zd_usb_disable_rx() argument
830 struct zd_usb_rx *rx = &usb->rx; in __zd_usb_disable_rx()
851 void zd_usb_disable_rx(struct zd_usb *usb) in zd_usb_disable_rx() argument
853 struct zd_usb_rx *rx = &usb->rx; in zd_usb_disable_rx()
856 __zd_usb_disable_rx(usb); in zd_usb_disable_rx()
863 static void zd_usb_reset_rx(struct zd_usb *usb) in zd_usb_reset_rx() argument
866 struct zd_usb_rx *rx = &usb->rx; in zd_usb_reset_rx()
876 __zd_usb_disable_rx(usb); in zd_usb_reset_rx()
877 __zd_usb_enable_rx(usb); in zd_usb_reset_rx()
883 zd_usb_reset_rx_idle_timer(usb); in zd_usb_reset_rx()
892 void zd_usb_disable_tx(struct zd_usb *usb) in zd_usb_disable_tx() argument
894 struct zd_usb_tx *tx = &usb->tx; in zd_usb_disable_tx()
920 void zd_usb_enable_tx(struct zd_usb *usb) in zd_usb_enable_tx() argument
923 struct zd_usb_tx *tx = &usb->tx; in zd_usb_enable_tx()
928 ieee80211_wake_queues(zd_usb_to_hw(usb)); in zd_usb_enable_tx()
933 static void tx_dec_submitted_urbs(struct zd_usb *usb) in tx_dec_submitted_urbs() argument
935 struct zd_usb_tx *tx = &usb->tx; in tx_dec_submitted_urbs()
941 ieee80211_wake_queues(zd_usb_to_hw(usb)); in tx_dec_submitted_urbs()
947 static void tx_inc_submitted_urbs(struct zd_usb *usb) in tx_inc_submitted_urbs() argument
949 struct zd_usb_tx *tx = &usb->tx; in tx_inc_submitted_urbs()
955 ieee80211_stop_queues(zd_usb_to_hw(usb)); in tx_inc_submitted_urbs()
973 struct zd_usb *usb; in tx_urb_complete() local
982 usb = &zd_hw_mac(info->rate_driver_data[0])->chip.usb; in tx_urb_complete()
983 tx = &usb->tx; in tx_urb_complete()
1001 skb_unlink(skb, &usb->tx.submitted_skbs); in tx_urb_complete()
1004 tx_dec_submitted_urbs(usb); in tx_urb_complete()
1028 int zd_usb_tx(struct zd_usb *usb, struct sk_buff *skb) in zd_usb_tx() argument
1032 struct usb_device *udev = zd_usb_to_usbdev(usb); in zd_usb_tx()
1034 struct zd_usb_tx *tx = &usb->tx; in zd_usb_tx()
1056 dev_dbg_f(zd_usb_dev(usb), "error submit urb %p %d\n", urb, r); in zd_usb_tx()
1061 tx_inc_submitted_urbs(usb); in zd_usb_tx()
1069 static bool zd_tx_timeout(struct zd_usb *usb) in zd_tx_timeout() argument
1071 struct zd_usb_tx *tx = &usb->tx; in zd_tx_timeout()
1095 struct zd_usb *usb = in zd_tx_watchdog_handler() local
1097 struct zd_usb_tx *tx = &usb->tx; in zd_tx_watchdog_handler()
1101 if (!zd_tx_timeout(usb)) in zd_tx_watchdog_handler()
1105 dev_warn(zd_usb_dev(usb), "TX-stall detected, resetting device..."); in zd_tx_watchdog_handler()
1107 usb_queue_reset_device(usb->intf); in zd_tx_watchdog_handler()
1116 void zd_tx_watchdog_enable(struct zd_usb *usb) in zd_tx_watchdog_enable() argument
1118 struct zd_usb_tx *tx = &usb->tx; in zd_tx_watchdog_enable()
1121 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_tx_watchdog_enable()
1128 void zd_tx_watchdog_disable(struct zd_usb *usb) in zd_tx_watchdog_disable() argument
1130 struct zd_usb_tx *tx = &usb->tx; in zd_tx_watchdog_disable()
1133 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_tx_watchdog_disable()
1141 struct zd_usb *usb = in zd_rx_idle_timer_handler() local
1143 struct zd_mac *mac = zd_usb_to_mac(usb); in zd_rx_idle_timer_handler()
1148 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_rx_idle_timer_handler()
1151 zd_usb_reset_rx(usb); in zd_rx_idle_timer_handler()
1156 struct zd_usb *usb = (struct zd_usb *)param; in zd_usb_reset_rx_idle_timer_tasklet() local
1158 zd_usb_reset_rx_idle_timer(usb); in zd_usb_reset_rx_idle_timer_tasklet()
1161 void zd_usb_reset_rx_idle_timer(struct zd_usb *usb) in zd_usb_reset_rx_idle_timer() argument
1163 struct zd_usb_rx *rx = &usb->rx; in zd_usb_reset_rx_idle_timer()
1168 static inline void init_usb_interrupt(struct zd_usb *usb) in init_usb_interrupt() argument
1170 struct zd_usb_interrupt *intr = &usb->intr; in init_usb_interrupt()
1173 intr->interval = int_urb_interval(zd_usb_to_usbdev(usb)); in init_usb_interrupt()
1179 static inline void init_usb_rx(struct zd_usb *usb) in init_usb_rx() argument
1181 struct zd_usb_rx *rx = &usb->rx; in init_usb_rx()
1185 if (interface_to_usbdev(usb->intf)->speed == USB_SPEED_HIGH) { in init_usb_rx()
1193 rx->reset_timer_tasklet.data = (unsigned long)usb; in init_usb_rx()
1196 static inline void init_usb_tx(struct zd_usb *usb) in init_usb_tx() argument
1198 struct zd_usb_tx *tx = &usb->tx; in init_usb_tx()
1210 void zd_usb_init(struct zd_usb *usb, struct ieee80211_hw *hw, in zd_usb_init() argument
1213 memset(usb, 0, sizeof(*usb)); in zd_usb_init()
1214 usb->intf = usb_get_intf(intf); in zd_usb_init()
1215 usb_set_intfdata(usb->intf, hw); in zd_usb_init()
1216 init_usb_anchor(&usb->submitted_cmds); in zd_usb_init()
1217 init_usb_interrupt(usb); in zd_usb_init()
1218 init_usb_tx(usb); in zd_usb_init()
1219 init_usb_rx(usb); in zd_usb_init()
1222 void zd_usb_clear(struct zd_usb *usb) in zd_usb_clear() argument
1224 usb_set_intfdata(usb->intf, NULL); in zd_usb_clear()
1225 usb_put_intf(usb->intf); in zd_usb_clear()
1226 ZD_MEMCLEAR(usb, sizeof(*usb)); in zd_usb_clear()
1253 int zd_usb_scnprint_id(struct zd_usb *usb, char *buffer, size_t size) in zd_usb_scnprint_id() argument
1255 struct usb_device *udev = interface_to_usbdev(usb->intf); in zd_usb_scnprint_id()
1324 int zd_usb_init_hw(struct zd_usb *usb) in zd_usb_init_hw() argument
1327 struct zd_mac *mac = zd_usb_to_mac(usb); in zd_usb_init_hw()
1329 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_usb_init_hw()
1331 r = upload_firmware(usb); in zd_usb_init_hw()
1333 dev_err(zd_usb_dev(usb), in zd_usb_init_hw()
1338 r = usb_reset_configuration(zd_usb_to_usbdev(usb)); in zd_usb_init_hw()
1340 dev_dbg_f(zd_usb_dev(usb), in zd_usb_init_hw()
1347 dev_dbg_f(zd_usb_dev(usb), in zd_usb_init_hw()
1352 usb->initialized = 1; in zd_usb_init_hw()
1360 struct zd_usb *usb; in probe() local
1392 usb = &zd_hw_mac(hw)->chip.usb; in probe()
1393 usb->is_zd1211b = (id->driver_info == DEVICE_ZD1211B) != 0; in probe()
1425 struct zd_usb *usb; in disconnect() local
1433 usb = &mac->chip.usb; in disconnect()
1435 dev_dbg_f(zd_usb_dev(usb), "\n"); in disconnect()
1440 zd_usb_disable_tx(usb); in disconnect()
1441 zd_usb_disable_rx(usb); in disconnect()
1442 zd_usb_disable_int(usb); in disconnect()
1456 static void zd_usb_resume(struct zd_usb *usb) in zd_usb_resume() argument
1458 struct zd_mac *mac = zd_usb_to_mac(usb); in zd_usb_resume()
1461 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_usb_resume()
1463 r = zd_op_start(zd_usb_to_hw(usb)); in zd_usb_resume()
1465 dev_warn(zd_usb_dev(usb), "Device resume failed " in zd_usb_resume()
1467 if (usb->was_running) in zd_usb_resume()
1469 usb_queue_reset_device(usb->intf); in zd_usb_resume()
1476 dev_dbg(zd_usb_dev(usb), in zd_usb_resume()
1483 static void zd_usb_stop(struct zd_usb *usb) in zd_usb_stop() argument
1485 dev_dbg_f(zd_usb_dev(usb), "\n"); in zd_usb_stop()
1487 zd_op_stop(zd_usb_to_hw(usb)); in zd_usb_stop()
1489 zd_usb_disable_tx(usb); in zd_usb_stop()
1490 zd_usb_disable_rx(usb); in zd_usb_stop()
1491 zd_usb_disable_int(usb); in zd_usb_stop()
1493 usb->initialized = 0; in zd_usb_stop()
1500 struct zd_usb *usb; in pre_reset() local
1506 usb = &mac->chip.usb; in pre_reset()
1508 usb->was_running = test_bit(ZD_DEVICE_RUNNING, &mac->flags); in pre_reset()
1510 zd_usb_stop(usb); in pre_reset()
1520 struct zd_usb *usb; in post_reset() local
1526 usb = &mac->chip.usb; in post_reset()
1530 if (usb->was_running) in post_reset()
1531 zd_usb_resume(usb); in post_reset()
1611 static void prepare_read_regs_int(struct zd_usb *usb, in prepare_read_regs_int() argument
1615 struct zd_usb_interrupt *intr = &usb->intr; in prepare_read_regs_int()
1625 static void disable_read_regs_int(struct zd_usb *usb) in disable_read_regs_int() argument
1627 struct zd_usb_interrupt *intr = &usb->intr; in disable_read_regs_int()
1634 static bool check_read_regs(struct zd_usb *usb, struct usb_req_read_regs *req, in check_read_regs() argument
1638 struct zd_usb_interrupt *intr = &usb->intr; in check_read_regs()
1646 dev_dbg_f(zd_usb_dev(usb), in check_read_regs()
1653 dev_dbg_f(zd_usb_dev(usb), in check_read_regs()
1662 dev_dbg_f(zd_usb_dev(usb), in check_read_regs()
1673 static int get_results(struct zd_usb *usb, u16 *values, in get_results() argument
1679 struct zd_usb_interrupt *intr = &usb->intr; in get_results()
1692 if (!check_read_regs(usb, req, count)) { in get_results()
1693 dev_dbg_f(zd_usb_dev(usb), "error: invalid read regs\n"); in get_results()
1708 int zd_usb_ioread16v(struct zd_usb *usb, u16 *values, in zd_usb_ioread16v() argument
1718 dev_dbg_f(zd_usb_dev(usb), "error: count is zero\n"); in zd_usb_ioread16v()
1722 dev_dbg_f(zd_usb_dev(usb), in zd_usb_ioread16v()
1728 dev_dbg_f(zd_usb_dev(usb), in zd_usb_ioread16v()
1732 if (!usb_int_enabled(usb)) { in zd_usb_ioread16v()
1733 dev_dbg_f(zd_usb_dev(usb), in zd_usb_ioread16v()
1738 ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex)); in zd_usb_ioread16v()
1740 sizeof(__le16) > sizeof(usb->req_buf)); in zd_usb_ioread16v()
1742 sizeof(usb->req_buf)); in zd_usb_ioread16v()
1745 req = (void *)usb->req_buf; in zd_usb_ioread16v()
1753 udev = zd_usb_to_usbdev(usb); in zd_usb_ioread16v()
1754 prepare_read_regs_int(usb, req, count); in zd_usb_ioread16v()
1757 dev_dbg_f(zd_usb_dev(usb), in zd_usb_ioread16v()
1762 dev_dbg_f(zd_usb_dev(usb), "error in zd_ep_regs_out_msg()\n" in zd_usb_ioread16v()
1769 timeout = wait_for_completion_timeout(&usb->intr.read_regs.completion, in zd_usb_ioread16v()
1772 disable_read_regs_int(usb); in zd_usb_ioread16v()
1773 dev_dbg_f(zd_usb_dev(usb), "read timed out\n"); in zd_usb_ioread16v()
1778 r = get_results(usb, values, req, count, &retry); in zd_usb_ioread16v()
1780 dev_dbg_f(zd_usb_dev(usb), "read retry, tries so far: %d\n", in zd_usb_ioread16v()
1790 struct zd_usb *usb = urb->context; in iowrite16v_urb_complete() local
1792 if (urb->status && !usb->cmd_error) in iowrite16v_urb_complete()
1793 usb->cmd_error = urb->status; in iowrite16v_urb_complete()
1795 if (!usb->cmd_error && in iowrite16v_urb_complete()
1797 usb->cmd_error = -EIO; in iowrite16v_urb_complete()
1800 static int zd_submit_waiting_urb(struct zd_usb *usb, bool last) in zd_submit_waiting_urb() argument
1803 struct urb *urb = usb->urb_async_waiting; in zd_submit_waiting_urb()
1808 usb->urb_async_waiting = NULL; in zd_submit_waiting_urb()
1813 usb_anchor_urb(urb, &usb->submitted_cmds); in zd_submit_waiting_urb()
1817 dev_dbg_f(zd_usb_dev(usb), in zd_submit_waiting_urb()
1828 void zd_usb_iowrite16v_async_start(struct zd_usb *usb) in zd_usb_iowrite16v_async_start() argument
1830 ZD_ASSERT(usb_anchor_empty(&usb->submitted_cmds)); in zd_usb_iowrite16v_async_start()
1831 ZD_ASSERT(usb->urb_async_waiting == NULL); in zd_usb_iowrite16v_async_start()
1832 ZD_ASSERT(!usb->in_async); in zd_usb_iowrite16v_async_start()
1834 ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex)); in zd_usb_iowrite16v_async_start()
1836 usb->in_async = 1; in zd_usb_iowrite16v_async_start()
1837 usb->cmd_error = 0; in zd_usb_iowrite16v_async_start()
1838 usb->urb_async_waiting = NULL; in zd_usb_iowrite16v_async_start()
1841 int zd_usb_iowrite16v_async_end(struct zd_usb *usb, unsigned int timeout) in zd_usb_iowrite16v_async_end() argument
1845 ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex)); in zd_usb_iowrite16v_async_end()
1846 ZD_ASSERT(usb->in_async); in zd_usb_iowrite16v_async_end()
1849 r = zd_submit_waiting_urb(usb, true); in zd_usb_iowrite16v_async_end()
1851 dev_dbg_f(zd_usb_dev(usb), in zd_usb_iowrite16v_async_end()
1855 usb_kill_anchored_urbs(&usb->submitted_cmds); in zd_usb_iowrite16v_async_end()
1860 timeout = usb_wait_anchor_empty_timeout(&usb->submitted_cmds, in zd_usb_iowrite16v_async_end()
1863 usb_kill_anchored_urbs(&usb->submitted_cmds); in zd_usb_iowrite16v_async_end()
1864 if (usb->cmd_error == -ENOENT) { in zd_usb_iowrite16v_async_end()
1865 dev_dbg_f(zd_usb_dev(usb), "timed out"); in zd_usb_iowrite16v_async_end()
1871 r = usb->cmd_error; in zd_usb_iowrite16v_async_end()
1873 usb->in_async = 0; in zd_usb_iowrite16v_async_end()
1877 int zd_usb_iowrite16v_async(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs, in zd_usb_iowrite16v_async() argument
1887 ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex)); in zd_usb_iowrite16v_async()
1888 ZD_ASSERT(usb->in_async); in zd_usb_iowrite16v_async()
1893 dev_dbg_f(zd_usb_dev(usb), in zd_usb_iowrite16v_async()
1899 dev_dbg_f(zd_usb_dev(usb), in zd_usb_iowrite16v_async()
1904 udev = zd_usb_to_usbdev(usb); in zd_usb_iowrite16v_async()
1934 req, req_len, iowrite16v_urb_complete, usb, in zd_usb_iowrite16v_async()
1938 req, req_len, iowrite16v_urb_complete, usb); in zd_usb_iowrite16v_async()
1943 r = zd_submit_waiting_urb(usb, false); in zd_usb_iowrite16v_async()
1945 dev_dbg_f(zd_usb_dev(usb), in zd_usb_iowrite16v_async()
1954 usb->urb_async_waiting = urb; in zd_usb_iowrite16v_async()
1961 int zd_usb_iowrite16v(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs, in zd_usb_iowrite16v() argument
1966 zd_usb_iowrite16v_async_start(usb); in zd_usb_iowrite16v()
1967 r = zd_usb_iowrite16v_async(usb, ioreqs, count); in zd_usb_iowrite16v()
1969 zd_usb_iowrite16v_async_end(usb, 0); in zd_usb_iowrite16v()
1972 return zd_usb_iowrite16v_async_end(usb, 50 /* ms */); in zd_usb_iowrite16v()
1975 int zd_usb_rfwrite(struct zd_usb *usb, u32 value, u8 bits) in zd_usb_rfwrite() argument
1984 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
1989 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
1996 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
2003 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
2010 dev_dbg_f(zd_usb_dev(usb), "value %#09x bits %d\n", value, bits); in zd_usb_rfwrite()
2012 r = zd_usb_ioread16(usb, &bit_value_template, ZD_CR203); in zd_usb_rfwrite()
2014 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
2020 ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex)); in zd_usb_rfwrite()
2023 sizeof(usb->req_buf)); in zd_usb_rfwrite()
2025 sizeof(usb->req_buf)); in zd_usb_rfwrite()
2028 req = (void *)usb->req_buf; in zd_usb_rfwrite()
2042 udev = zd_usb_to_usbdev(usb); in zd_usb_rfwrite()
2045 dev_dbg_f(zd_usb_dev(usb), in zd_usb_rfwrite()
2050 dev_dbg_f(zd_usb_dev(usb), "error in zd_ep_regs_out_msg()" in zd_usb_rfwrite()