60
60
{ USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 },
61
61
{ USB_DEVICE(0x157e, 0x300b), .driver_info = DEVICE_ZD1211 },
62
62
{ USB_DEVICE(0x157e, 0x3204), .driver_info = DEVICE_ZD1211 },
63
{ USB_DEVICE(0x157e, 0x3207), .driver_info = DEVICE_ZD1211 },
63
64
{ USB_DEVICE(0x1740, 0x2000), .driver_info = DEVICE_ZD1211 },
64
65
{ USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 },
501
504
spin_unlock_irq(&intr->lock);
503
/* TODO: make it a DMA buffer */
505
transfer_buffer = kmalloc(USB_MAX_EP_INT_BUFFER, GFP_KERNEL);
506
if (!transfer_buffer) {
507
intr->buffer = usb_alloc_coherent(udev, USB_MAX_EP_INT_BUFFER,
508
GFP_KERNEL, &intr->buffer_dma);
507
510
dev_dbg_f(zd_usb_dev(usb),
508
511
"couldn't allocate transfer_buffer\n");
509
512
goto error_set_urb_null;
512
udev = zd_usb_to_usbdev(usb);
513
515
usb_fill_int_urb(urb, udev, usb_rcvintpipe(udev, EP_INT_IN),
514
transfer_buffer, USB_MAX_EP_INT_BUFFER,
516
intr->buffer, USB_MAX_EP_INT_BUFFER,
515
517
int_urb_complete, usb,
519
urb->transfer_dma = intr->buffer_dma;
520
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
518
522
dev_dbg_f(zd_usb_dev(usb), "submit urb %p\n", intr->urb);
519
523
r = usb_submit_urb(urb, GFP_KERNEL);
769
804
spin_unlock_irqrestore(&rx->lock, flags);
807
void zd_usb_disable_rx(struct zd_usb *usb)
809
struct zd_usb_rx *rx = &usb->rx;
811
mutex_lock(&rx->setup_mutex);
812
__zd_usb_disable_rx(usb);
813
mutex_unlock(&rx->setup_mutex);
815
tasklet_kill(&rx->reset_timer_tasklet);
816
cancel_delayed_work_sync(&rx->idle_work);
819
static void zd_usb_reset_rx(struct zd_usb *usb)
822
struct zd_usb_rx *rx = &usb->rx;
825
mutex_lock(&rx->setup_mutex);
827
spin_lock_irqsave(&rx->lock, flags);
828
do_reset = rx->urbs != NULL;
829
spin_unlock_irqrestore(&rx->lock, flags);
832
__zd_usb_disable_rx(usb);
833
__zd_usb_enable_rx(usb);
836
mutex_unlock(&rx->setup_mutex);
839
zd_usb_reset_rx_idle_timer(usb);
773
843
* zd_usb_disable_tx - disable transmission
774
844
* @usb: the zd1211rw-private USB structure
780
850
struct zd_usb_tx *tx = &usb->tx;
781
851
unsigned long flags;
782
struct list_head *pos, *n;
853
atomic_set(&tx->enabled, 0);
855
/* kill all submitted tx-urbs */
856
usb_kill_anchored_urbs(&tx->submitted);
784
858
spin_lock_irqsave(&tx->lock, flags);
785
list_for_each_safe(pos, n, &tx->free_urb_list) {
787
usb_free_urb(list_entry(pos, struct urb, urb_list));
859
WARN_ON(!skb_queue_empty(&tx->submitted_skbs));
860
WARN_ON(tx->submitted_urbs != 0);
790
861
tx->submitted_urbs = 0;
862
spin_unlock_irqrestore(&tx->lock, flags);
791
864
/* The stopped state is ignored, relying on ieee80211_wake_queues()
792
865
* in a potentionally following zd_usb_enable_tx().
794
spin_unlock_irqrestore(&tx->lock, flags);
807
879
struct zd_usb_tx *tx = &usb->tx;
809
881
spin_lock_irqsave(&tx->lock, flags);
882
atomic_set(&tx->enabled, 1);
811
883
tx->submitted_urbs = 0;
812
884
ieee80211_wake_queues(zd_usb_to_hw(usb));
814
886
spin_unlock_irqrestore(&tx->lock, flags);
818
* alloc_tx_urb - provides an tx URB
819
* @usb: a &struct zd_usb pointer
821
* Allocates a new URB. If possible takes the urb from the free list in
824
static struct urb *alloc_tx_urb(struct zd_usb *usb)
826
struct zd_usb_tx *tx = &usb->tx;
828
struct list_head *entry;
831
spin_lock_irqsave(&tx->lock, flags);
832
if (list_empty(&tx->free_urb_list)) {
833
urb = usb_alloc_urb(0, GFP_ATOMIC);
836
entry = tx->free_urb_list.next;
838
urb = list_entry(entry, struct urb, urb_list);
840
spin_unlock_irqrestore(&tx->lock, flags);
845
* free_tx_urb - frees a used tx URB
846
* @usb: a &struct zd_usb pointer
847
* @urb: URB to be freed
849
* Frees the transmission URB, which means to put it on the free URB
852
static void free_tx_urb(struct zd_usb *usb, struct urb *urb)
854
struct zd_usb_tx *tx = &usb->tx;
857
spin_lock_irqsave(&tx->lock, flags);
862
list_add(&urb->urb_list, &tx->free_urb_list);
864
spin_unlock_irqrestore(&tx->lock, flags);
867
889
static void tx_dec_submitted_urbs(struct zd_usb *usb)
869
891
struct zd_usb_tx *tx = &usb->tx;
905
927
struct sk_buff *skb;
906
928
struct ieee80211_tx_info *info;
907
929
struct zd_usb *usb;
930
struct zd_usb_tx *tx;
909
switch (urb->status) {
918
dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
921
dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
925
932
skb = (struct sk_buff *)urb->context;
933
info = IEEE80211_SKB_CB(skb);
927
935
* grab 'usb' pointer before handing off the skb (since
928
936
* it might be freed by zd_mac_tx_to_dev or mac80211)
930
info = IEEE80211_SKB_CB(skb);
931
938
usb = &zd_hw_mac(info->rate_driver_data[0])->chip.usb;
941
switch (urb->status) {
950
dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
953
dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
957
skb_unlink(skb, &usb->tx.submitted_skbs);
932
958
zd_mac_tx_to_dev(skb, urb->status);
933
free_tx_urb(usb, urb);
934
960
tx_dec_submitted_urbs(usb);
963
usb_anchor_urb(urb, &tx->submitted);
937
964
r = usb_submit_urb(urb, GFP_ATOMIC);
966
usb_unanchor_urb(urb);
939
967
dev_dbg_f(urb_dev(urb), "error resubmit urb %p %d\n", urb, r);
968
1003
usb_fill_bulk_urb(urb, udev, usb_sndbulkpipe(udev, EP_DATA_OUT),
969
1004
skb->data, skb->len, tx_urb_complete, skb);
1006
info->rate_driver_data[1] = (void *)jiffies;
1007
skb_queue_tail(&tx->submitted_skbs, skb);
1008
usb_anchor_urb(urb, &tx->submitted);
971
1010
r = usb_submit_urb(urb, GFP_ATOMIC);
1012
dev_dbg_f(zd_usb_dev(usb), "error submit urb %p %d\n", urb, r);
1013
usb_unanchor_urb(urb);
1014
skb_unlink(skb, &tx->submitted_skbs);
974
1017
tx_inc_submitted_urbs(usb);
977
free_tx_urb(usb, urb);
1025
static bool zd_tx_timeout(struct zd_usb *usb)
1027
struct zd_usb_tx *tx = &usb->tx;
1028
struct sk_buff_head *q = &tx->submitted_skbs;
1029
struct sk_buff *skb, *skbnext;
1030
struct ieee80211_tx_info *info;
1031
unsigned long flags, trans_start;
1032
bool have_timedout = false;
1034
spin_lock_irqsave(&q->lock, flags);
1035
skb_queue_walk_safe(q, skb, skbnext) {
1036
info = IEEE80211_SKB_CB(skb);
1037
trans_start = (unsigned long)info->rate_driver_data[1];
1039
if (time_is_before_jiffies(trans_start + ZD_TX_TIMEOUT)) {
1040
have_timedout = true;
1044
spin_unlock_irqrestore(&q->lock, flags);
1046
return have_timedout;
1049
static void zd_tx_watchdog_handler(struct work_struct *work)
1051
struct zd_usb *usb =
1052
container_of(work, struct zd_usb, tx.watchdog_work.work);
1053
struct zd_usb_tx *tx = &usb->tx;
1055
if (!atomic_read(&tx->enabled) || !tx->watchdog_enabled)
1057
if (!zd_tx_timeout(usb))
1060
/* TX halted, try reset */
1061
dev_warn(zd_usb_dev(usb), "TX-stall detected, reseting device...");
1063
usb_queue_reset_device(usb->intf);
1065
/* reset will stop this worker, don't rearm */
1068
queue_delayed_work(zd_workqueue, &tx->watchdog_work,
1069
ZD_TX_WATCHDOG_INTERVAL);
1072
void zd_tx_watchdog_enable(struct zd_usb *usb)
1074
struct zd_usb_tx *tx = &usb->tx;
1076
if (!tx->watchdog_enabled) {
1077
dev_dbg_f(zd_usb_dev(usb), "\n");
1078
queue_delayed_work(zd_workqueue, &tx->watchdog_work,
1079
ZD_TX_WATCHDOG_INTERVAL);
1080
tx->watchdog_enabled = 1;
1084
void zd_tx_watchdog_disable(struct zd_usb *usb)
1086
struct zd_usb_tx *tx = &usb->tx;
1088
if (tx->watchdog_enabled) {
1089
dev_dbg_f(zd_usb_dev(usb), "\n");
1090
tx->watchdog_enabled = 0;
1091
cancel_delayed_work_sync(&tx->watchdog_work);
1095
static void zd_rx_idle_timer_handler(struct work_struct *work)
1097
struct zd_usb *usb =
1098
container_of(work, struct zd_usb, rx.idle_work.work);
1099
struct zd_mac *mac = zd_usb_to_mac(usb);
1101
if (!test_bit(ZD_DEVICE_RUNNING, &mac->flags))
1104
dev_dbg_f(zd_usb_dev(usb), "\n");
1106
/* 30 seconds since last rx, reset rx */
1107
zd_usb_reset_rx(usb);
1110
static void zd_usb_reset_rx_idle_timer_tasklet(unsigned long param)
1112
struct zd_usb *usb = (struct zd_usb *)param;
1114
zd_usb_reset_rx_idle_timer(usb);
1117
void zd_usb_reset_rx_idle_timer(struct zd_usb *usb)
1119
struct zd_usb_rx *rx = &usb->rx;
1121
cancel_delayed_work(&rx->idle_work);
1122
queue_delayed_work(zd_workqueue, &rx->idle_work, ZD_RX_IDLE_INTERVAL);
982
1125
static inline void init_usb_interrupt(struct zd_usb *usb)
984
1127
struct zd_usb_interrupt *intr = &usb->intr;
992
1135
static inline void init_usb_rx(struct zd_usb *usb)
994
1137
struct zd_usb_rx *rx = &usb->rx;
995
1139
spin_lock_init(&rx->lock);
1140
mutex_init(&rx->setup_mutex);
996
1141
if (interface_to_usbdev(usb->intf)->speed == USB_SPEED_HIGH) {
997
1142
rx->usb_packet_size = 512;
999
1144
rx->usb_packet_size = 64;
1001
1146
ZD_ASSERT(rx->fragment_length == 0);
1147
INIT_DELAYED_WORK(&rx->idle_work, zd_rx_idle_timer_handler);
1148
rx->reset_timer_tasklet.func = zd_usb_reset_rx_idle_timer_tasklet;
1149
rx->reset_timer_tasklet.data = (unsigned long)usb;
1004
1152
static inline void init_usb_tx(struct zd_usb *usb)
1006
1154
struct zd_usb_tx *tx = &usb->tx;
1007
1156
spin_lock_init(&tx->lock);
1157
atomic_set(&tx->enabled, 0);
1009
1158
tx->stopped = 0;
1010
INIT_LIST_HEAD(&tx->free_urb_list);
1159
skb_queue_head_init(&tx->submitted_skbs);
1160
init_usb_anchor(&tx->submitted);
1011
1161
tx->submitted_urbs = 0;
1162
tx->watchdog_enabled = 0;
1163
INIT_DELAYED_WORK(&tx->watchdog_work, zd_tx_watchdog_handler);
1014
1166
void zd_usb_init(struct zd_usb *usb, struct ieee80211_hw *hw,
1255
1409
dev_dbg(&intf->dev, "disconnected\n");
1412
static void zd_usb_resume(struct zd_usb *usb)
1414
struct zd_mac *mac = zd_usb_to_mac(usb);
1417
dev_dbg_f(zd_usb_dev(usb), "\n");
1419
r = zd_op_start(zd_usb_to_hw(usb));
1421
dev_warn(zd_usb_dev(usb), "Device resume failed "
1422
"with error code %d. Retrying...\n", r);
1423
if (usb->was_running)
1424
set_bit(ZD_DEVICE_RUNNING, &mac->flags);
1425
usb_queue_reset_device(usb->intf);
1429
if (mac->type != NL80211_IFTYPE_UNSPECIFIED) {
1430
r = zd_restore_settings(mac);
1432
dev_dbg(zd_usb_dev(usb),
1433
"failed to restore settings, %d\n", r);
1439
static void zd_usb_stop(struct zd_usb *usb)
1441
dev_dbg_f(zd_usb_dev(usb), "\n");
1443
zd_op_stop(zd_usb_to_hw(usb));
1445
zd_usb_disable_tx(usb);
1446
zd_usb_disable_rx(usb);
1447
zd_usb_disable_int(usb);
1449
usb->initialized = 0;
1452
static int pre_reset(struct usb_interface *intf)
1454
struct ieee80211_hw *hw = usb_get_intfdata(intf);
1458
if (!hw || intf->condition != USB_INTERFACE_BOUND)
1461
mac = zd_hw_mac(hw);
1462
usb = &mac->chip.usb;
1464
usb->was_running = test_bit(ZD_DEVICE_RUNNING, &mac->flags);
1468
mutex_lock(&mac->chip.mutex);
1472
static int post_reset(struct usb_interface *intf)
1474
struct ieee80211_hw *hw = usb_get_intfdata(intf);
1478
if (!hw || intf->condition != USB_INTERFACE_BOUND)
1481
mac = zd_hw_mac(hw);
1482
usb = &mac->chip.usb;
1484
mutex_unlock(&mac->chip.mutex);
1486
if (usb->was_running)
1258
1491
static struct usb_driver driver = {
1259
1492
.name = KBUILD_MODNAME,
1260
1493
.id_table = usb_ids,
1261
1494
.probe = probe,
1262
1495
.disconnect = disconnect,
1496
.pre_reset = pre_reset,
1497
.post_reset = post_reset,
1265
1500
struct workqueue_struct *zd_workqueue;
1298
1533
module_init(usb_init);
1299
1534
module_exit(usb_exit);
1536
static int zd_ep_regs_out_msg(struct usb_device *udev, void *data, int len,
1537
int *actual_length, int timeout)
1539
/* In USB 2.0 mode EP_REGS_OUT endpoint is interrupt type. However in
1540
* USB 1.1 mode endpoint is bulk. Select correct type URB by endpoint
1543
struct usb_host_endpoint *ep;
1546
pipe = usb_sndintpipe(udev, EP_REGS_OUT);
1547
ep = usb_pipe_endpoint(udev, pipe);
1551
if (usb_endpoint_xfer_int(&ep->desc)) {
1552
return usb_interrupt_msg(udev, pipe, data, len,
1553
actual_length, timeout);
1555
pipe = usb_sndbulkpipe(udev, EP_REGS_OUT);
1556
return usb_bulk_msg(udev, pipe, data, len, actual_length,
1301
1561
static int usb_int_regs_length(unsigned int count)
1303
1563
return sizeof(struct usb_int_regs) + count * sizeof(struct reg_data);
1393
1653
return -EWOULDBLOCK;
1395
1655
if (!usb_int_enabled(usb)) {
1396
dev_dbg_f(zd_usb_dev(usb),
1656
dev_dbg_f(zd_usb_dev(usb),
1397
1657
"error: usb interrupt not enabled\n");
1398
1658
return -EWOULDBLOCK;
1661
ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex));
1662
BUILD_BUG_ON(sizeof(struct usb_req_read_regs) + USB_MAX_IOREAD16_COUNT *
1663
sizeof(__le16) > sizeof(usb->req_buf));
1664
BUG_ON(sizeof(struct usb_req_read_regs) + count * sizeof(__le16) >
1665
sizeof(usb->req_buf));
1401
1667
req_len = sizeof(struct usb_req_read_regs) + count * sizeof(__le16);
1402
req = kmalloc(req_len, GFP_KERNEL);
1668
req = (void *)usb->req_buf;
1405
1670
req->id = cpu_to_le16(USB_REQ_READ_REGS);
1406
1671
for (i = 0; i < count; i++)
1407
1672
req->addr[i] = cpu_to_le16((u16)addresses[i]);
1409
1674
udev = zd_usb_to_usbdev(usb);
1410
1675
prepare_read_regs_int(usb);
1411
r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, EP_REGS_OUT),
1412
req, req_len, &actual_req_len, 1000 /* ms */);
1676
r = zd_ep_regs_out_msg(udev, req, req_len, &actual_req_len, 50 /*ms*/);
1414
1678
dev_dbg_f(zd_usb_dev(usb),
1415
"error in usb_bulk_msg(). Error number %d\n", r);
1679
"error in zd_ep_regs_out_msg(). Error number %d\n", r);
1418
1682
if (req_len != actual_req_len) {
1419
dev_dbg_f(zd_usb_dev(usb), "error in usb_bulk_msg()\n"
1683
dev_dbg_f(zd_usb_dev(usb), "error in zd_ep_regs_out_msg()\n"
1420
1684
" req_len %d != actual_req_len %d\n",
1421
1685
req_len, actual_req_len);
1435
1699
r = get_results(usb, values, req, count);
1441
int zd_usb_iowrite16v(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs,
1704
static void iowrite16v_urb_complete(struct urb *urb)
1706
struct zd_usb *usb = urb->context;
1708
if (urb->status && !usb->cmd_error)
1709
usb->cmd_error = urb->status;
1711
if (!usb->cmd_error &&
1712
urb->actual_length != urb->transfer_buffer_length)
1713
usb->cmd_error = -EIO;
1716
static int zd_submit_waiting_urb(struct zd_usb *usb, bool last)
1719
struct urb *urb = usb->urb_async_waiting;
1724
usb->urb_async_waiting = NULL;
1727
urb->transfer_flags |= URB_NO_INTERRUPT;
1729
usb_anchor_urb(urb, &usb->submitted_cmds);
1730
r = usb_submit_urb(urb, GFP_KERNEL);
1732
usb_unanchor_urb(urb);
1733
dev_dbg_f(zd_usb_dev(usb),
1734
"error in usb_submit_urb(). Error number %d\n", r);
1738
/* fall-through with r == 0 */
1744
void zd_usb_iowrite16v_async_start(struct zd_usb *usb)
1746
ZD_ASSERT(usb_anchor_empty(&usb->submitted_cmds));
1747
ZD_ASSERT(usb->urb_async_waiting == NULL);
1748
ZD_ASSERT(!usb->in_async);
1750
ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex));
1754
usb->urb_async_waiting = NULL;
1757
int zd_usb_iowrite16v_async_end(struct zd_usb *usb, unsigned int timeout)
1761
ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex));
1762
ZD_ASSERT(usb->in_async);
1764
/* Submit last iowrite16v URB */
1765
r = zd_submit_waiting_urb(usb, true);
1767
dev_dbg_f(zd_usb_dev(usb),
1768
"error in zd_submit_waiting_usb(). "
1769
"Error number %d\n", r);
1771
usb_kill_anchored_urbs(&usb->submitted_cmds);
1776
timeout = usb_wait_anchor_empty_timeout(&usb->submitted_cmds,
1779
usb_kill_anchored_urbs(&usb->submitted_cmds);
1780
if (usb->cmd_error == -ENOENT) {
1781
dev_dbg_f(zd_usb_dev(usb), "timed out");
1793
int zd_usb_iowrite16v_async(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs,
1445
1797
struct usb_device *udev;
1446
1798
struct usb_req_write_regs *req = NULL;
1447
int i, req_len, actual_req_len;
1801
struct usb_host_endpoint *ep;
1803
ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex));
1804
ZD_ASSERT(usb->in_async);
1449
1806
if (count == 0)
1473
1842
rw->value = cpu_to_le16(ioreqs[i].value);
1476
udev = zd_usb_to_usbdev(usb);
1477
r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, EP_REGS_OUT),
1478
req, req_len, &actual_req_len, 1000 /* ms */);
1845
/* In USB 2.0 mode endpoint is interrupt type. However in USB 1.1 mode
1846
* endpoint is bulk. Select correct type URB by endpoint descriptor.
1848
if (usb_endpoint_xfer_int(&ep->desc))
1849
usb_fill_int_urb(urb, udev, usb_sndintpipe(udev, EP_REGS_OUT),
1850
req, req_len, iowrite16v_urb_complete, usb,
1851
ep->desc.bInterval);
1853
usb_fill_bulk_urb(urb, udev, usb_sndbulkpipe(udev, EP_REGS_OUT),
1854
req, req_len, iowrite16v_urb_complete, usb);
1856
urb->transfer_flags |= URB_FREE_BUFFER;
1858
/* Submit previous URB */
1859
r = zd_submit_waiting_urb(usb, false);
1480
1861
dev_dbg_f(zd_usb_dev(usb),
1481
"error in usb_bulk_msg(). Error number %d\n", r);
1484
if (req_len != actual_req_len) {
1485
dev_dbg_f(zd_usb_dev(usb),
1486
"error in usb_bulk_msg()"
1487
" req_len %d != actual_req_len %d\n",
1488
req_len, actual_req_len);
1862
"error in zd_submit_waiting_usb(). "
1863
"Error number %d\n", r);
1493
/* FALL-THROUGH with r == 0 */
1867
/* Delay submit so that URB_NO_INTERRUPT flag can be set for all URBs
1868
* of currect batch except for very last.
1870
usb->urb_async_waiting = urb;
1877
int zd_usb_iowrite16v(struct zd_usb *usb, const struct zd_ioreq16 *ioreqs,
1882
zd_usb_iowrite16v_async_start(usb);
1883
r = zd_usb_iowrite16v_async(usb, ioreqs, count);
1885
zd_usb_iowrite16v_async_end(usb, 0);
1888
return zd_usb_iowrite16v_async_end(usb, 50 /* ms */);
1499
1891
int zd_usb_rfwrite(struct zd_usb *usb, u32 value, u8 bits)
1534
1926
dev_dbg_f(zd_usb_dev(usb), "value %#09x bits %d\n", value, bits);
1536
r = zd_usb_ioread16(usb, &bit_value_template, CR203);
1928
r = zd_usb_ioread16(usb, &bit_value_template, ZD_CR203);
1538
1930
dev_dbg_f(zd_usb_dev(usb),
1539
"error %d: Couldn't read CR203\n", r);
1931
"error %d: Couldn't read ZD_CR203\n", r);
1542
1934
bit_value_template &= ~(RF_IF_LE|RF_CLK|RF_DATA);
1936
ZD_ASSERT(mutex_is_locked(&zd_usb_to_chip(usb)->mutex));
1937
BUILD_BUG_ON(sizeof(struct usb_req_rfwrite) +
1938
USB_MAX_RFWRITE_BIT_COUNT * sizeof(__le16) >
1939
sizeof(usb->req_buf));
1940
BUG_ON(sizeof(struct usb_req_rfwrite) + bits * sizeof(__le16) >
1941
sizeof(usb->req_buf));
1544
1943
req_len = sizeof(struct usb_req_rfwrite) + bits * sizeof(__le16);
1545
req = kmalloc(req_len, GFP_KERNEL);
1944
req = (void *)usb->req_buf;
1549
1946
req->id = cpu_to_le16(USB_REQ_WRITE_RF);
1550
1947
/* 1: 3683a, but not used in ZYDAS driver */
1561
1958
udev = zd_usb_to_usbdev(usb);
1562
r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, EP_REGS_OUT),
1563
req, req_len, &actual_req_len, 1000 /* ms */);
1959
r = zd_ep_regs_out_msg(udev, req, req_len, &actual_req_len, 50 /*ms*/);
1565
1961
dev_dbg_f(zd_usb_dev(usb),
1566
"error in usb_bulk_msg(). Error number %d\n", r);
1962
"error in zd_ep_regs_out_msg(). Error number %d\n", r);
1569
1965
if (req_len != actual_req_len) {
1570
dev_dbg_f(zd_usb_dev(usb), "error in usb_bulk_msg()"
1966
dev_dbg_f(zd_usb_dev(usb), "error in zd_ep_regs_out_msg()"
1571
1967
" req_len %d != actual_req_len %d\n",
1572
1968
req_len, actual_req_len);