drivers/net/ieee802154/atusb.c
1012
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
104
static int atusb_read_subreg(struct atusb *lp,
drivers/net/ieee802154/atusb.c
1040
atusb_write_subreg(atusb, SR_RX_SAFE_MODE, 1);
drivers/net/ieee802154/atusb.c
1042
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
1045
ret = atusb_get_and_clear_error(atusb);
drivers/net/ieee802154/atusb.c
1049
dev_err(&atusb->usb_dev->dev,
drivers/net/ieee802154/atusb.c
1055
atusb_free_urbs(atusb);
drivers/net/ieee802154/atusb.c
1056
usb_kill_urb(atusb->tx_urb);
drivers/net/ieee802154/atusb.c
1057
usb_free_urb(atusb->tx_urb);
drivers/net/ieee802154/atusb.c
1065
struct atusb *atusb = usb_get_intfdata(interface);
drivers/net/ieee802154/atusb.c
1067
dev_dbg(&atusb->usb_dev->dev, "%s\n", __func__);
drivers/net/ieee802154/atusb.c
1069
atusb->shutdown = 1;
drivers/net/ieee802154/atusb.c
1070
cancel_delayed_work_sync(&atusb->work);
drivers/net/ieee802154/atusb.c
1072
usb_kill_anchored_urbs(&atusb->rx_urbs);
drivers/net/ieee802154/atusb.c
1073
atusb_free_urbs(atusb);
drivers/net/ieee802154/atusb.c
1074
usb_kill_urb(atusb->tx_urb);
drivers/net/ieee802154/atusb.c
1075
usb_free_urb(atusb->tx_urb);
drivers/net/ieee802154/atusb.c
1077
ieee802154_unregister_hw(atusb->hw);
drivers/net/ieee802154/atusb.c
1079
usb_put_dev(atusb->usb_dev);
drivers/net/ieee802154/atusb.c
1081
ieee802154_free_hw(atusb->hw);
drivers/net/ieee802154/atusb.c
120
static int atusb_get_and_clear_error(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
122
int err = atusb->err;
drivers/net/ieee802154/atusb.c
124
atusb->err = 0;
drivers/net/ieee802154/atusb.c
133
#define SKB_ATUSB(skb) (*(struct atusb **)(skb)->cb)
drivers/net/ieee802154/atusb.c
137
static int atusb_submit_rx_urb(struct atusb *atusb, struct urb *urb)
drivers/net/ieee802154/atusb.c
139
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
151
SKB_ATUSB(skb) = atusb;
drivers/net/ieee802154/atusb.c
156
usb_anchor_urb(urb, &atusb->rx_urbs);
drivers/net/ieee802154/atusb.c
169
struct atusb *atusb =
drivers/net/ieee802154/atusb.c
170
container_of(to_delayed_work(work), struct atusb, work);
drivers/net/ieee802154/atusb.c
171
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
175
if (atusb->shutdown)
drivers/net/ieee802154/atusb.c
179
urb = usb_get_from_anchor(&atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
182
ret = atusb_submit_rx_urb(atusb, urb);
drivers/net/ieee802154/atusb.c
185
usb_anchor_urb(urb, &atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
188
schedule_delayed_work(&atusb->work,
drivers/net/ieee802154/atusb.c
194
static void atusb_tx_done(struct atusb *atusb, u8 seq, int reason)
drivers/net/ieee802154/atusb.c
196
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
197
u8 expect = atusb->tx_ack_seq;
drivers/net/ieee802154/atusb.c
203
ieee802154_xmit_complete(atusb->hw, atusb->tx_skb, false);
drivers/net/ieee802154/atusb.c
205
ieee802154_xmit_error(atusb->hw, atusb->tx_skb, reason);
drivers/net/ieee802154/atusb.c
212
ieee802154_xmit_hw_error(atusb->hw, atusb->tx_skb);
drivers/net/ieee802154/atusb.c
220
struct atusb *atusb = SKB_ATUSB(skb);
drivers/net/ieee802154/atusb.c
251
atusb_tx_done(atusb, len, result);
drivers/net/ieee802154/atusb.c
270
ieee802154_rx_irqsafe(atusb->hw, skb, lqi);
drivers/net/ieee802154/atusb.c
278
struct atusb *atusb = SKB_ATUSB(skb);
drivers/net/ieee802154/atusb.c
293
usb_anchor_urb(urb, &atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
294
if (!atusb->shutdown)
drivers/net/ieee802154/atusb.c
295
schedule_delayed_work(&atusb->work, 0);
drivers/net/ieee802154/atusb.c
300
static void atusb_free_urbs(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
305
urb = usb_get_from_anchor(&atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
313
static int atusb_alloc_urbs(struct atusb *atusb, int n)
drivers/net/ieee802154/atusb.c
320
atusb_free_urbs(atusb);
drivers/net/ieee802154/atusb.c
323
usb_anchor_urb(urb, &atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
339
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
340
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
344
atusb->tx_skb = skb;
drivers/net/ieee802154/atusb.c
345
atusb->tx_ack_seq++;
drivers/net/ieee802154/atusb.c
346
atusb->tx_dr.wIndex = cpu_to_le16(atusb->tx_ack_seq);
drivers/net/ieee802154/atusb.c
347
atusb->tx_dr.wLength = cpu_to_le16(skb->len);
drivers/net/ieee802154/atusb.c
349
usb_fill_control_urb(atusb->tx_urb, usb_dev,
drivers/net/ieee802154/atusb.c
351
(unsigned char *)&atusb->tx_dr, skb->data,
drivers/net/ieee802154/atusb.c
353
ret = usb_submit_urb(atusb->tx_urb, GFP_ATOMIC);
drivers/net/ieee802154/atusb.c
369
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
370
struct device *dev = &atusb->usb_dev->dev;
drivers/net/ieee802154/atusb.c
376
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
379
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
387
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
390
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
400
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_REG_WRITE, ATUSB_REQ_TO_DEV,
drivers/net/ieee802154/atusb.c
408
atusb_write_subreg(atusb, SR_AACK_I_AM_COORD, 1);
drivers/net/ieee802154/atusb.c
410
atusb_write_subreg(atusb, SR_AACK_I_AM_COORD, 0);
drivers/net/ieee802154/atusb.c
413
return atusb_get_and_clear_error(atusb);
drivers/net/ieee802154/atusb.c
418
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
419
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
423
schedule_delayed_work(&atusb->work, 0);
drivers/net/ieee802154/atusb.c
424
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_RX_MODE, ATUSB_REQ_TO_DEV, 1, 0,
drivers/net/ieee802154/atusb.c
426
ret = atusb_get_and_clear_error(atusb);
drivers/net/ieee802154/atusb.c
428
usb_kill_anchored_urbs(&atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
434
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
435
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
438
usb_kill_anchored_urbs(&atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
439
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_RX_MODE, ATUSB_REQ_TO_DEV, 0, 0,
drivers/net/ieee802154/atusb.c
441
atusb_get_and_clear_error(atusb);
drivers/net/ieee802154/atusb.c
453
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
455
if (atusb->data)
drivers/net/ieee802154/atusb.c
456
return atusb->data->set_txpower(hw, mbm);
drivers/net/ieee802154/atusb.c
464
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
469
return atusb_write_subreg(atusb, SR_TX_PWR_23X, i);
drivers/net/ieee802154/atusb.c
515
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
542
return atusb_write_subreg(atusb, SR_CCA_MODE, val);
drivers/net/ieee802154/atusb.c
545
static int hulusb_set_cca_ed_level(struct atusb *lp, int rssi_base_val)
drivers/net/ieee802154/atusb.c
574
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
579
return atusb_write_subreg(atusb, SR_CCA_ED_THRES, i);
drivers/net/ieee802154/atusb.c
587
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
590
if (atusb->data) {
drivers/net/ieee802154/atusb.c
591
ret = atusb->data->set_channel(hw, page, channel);
drivers/net/ieee802154/atusb.c
593
msleep(atusb->data->t_channel_switch);
drivers/net/ieee802154/atusb.c
601
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
604
ret = atusb_write_subreg(atusb, SR_CHANNEL, channel);
drivers/net/ieee802154/atusb.c
615
struct atusb *lp = hw->priv;
drivers/net/ieee802154/atusb.c
644
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
647
ret = atusb_write_subreg(atusb, SR_MIN_BE, min_be);
drivers/net/ieee802154/atusb.c
651
ret = atusb_write_subreg(atusb, SR_MAX_BE, max_be);
drivers/net/ieee802154/atusb.c
655
return atusb_write_subreg(atusb, SR_MAX_CSMA_RETRIES, retries);
drivers/net/ieee802154/atusb.c
661
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
663
return atusb_write_subreg(atusb, SR_CSMA_LBT_MODE, on);
drivers/net/ieee802154/atusb.c
669
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
671
return atusb_write_subreg(atusb, SR_MAX_FRAME_RETRIES, retries);
drivers/net/ieee802154/atusb.c
677
struct atusb *atusb = hw->priv;
drivers/net/ieee802154/atusb.c
681
ret = atusb_write_subreg(atusb, SR_AACK_DIS_ACK, 1);
drivers/net/ieee802154/atusb.c
685
ret = atusb_write_subreg(atusb, SR_AACK_PROM_MODE, 1);
drivers/net/ieee802154/atusb.c
689
ret = atusb_write_subreg(atusb, SR_AACK_PROM_MODE, 0);
drivers/net/ieee802154/atusb.c
693
ret = atusb_write_subreg(atusb, SR_AACK_DIS_ACK, 0);
drivers/net/ieee802154/atusb.c
734
static int atusb_get_and_show_revision(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
736
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
742
ret = usb_control_msg_recv(atusb->usb_dev, 0, ATUSB_ID, ATUSB_REQ_FROM_DEV, 0, 0,
drivers/net/ieee802154/atusb.c
745
atusb->fw_ver_maj = buffer[0];
drivers/net/ieee802154/atusb.c
746
atusb->fw_ver_min = buffer[1];
drivers/net/ieee802154/atusb.c
747
atusb->fw_hw_type = buffer[2];
drivers/net/ieee802154/atusb.c
749
switch (atusb->fw_hw_type) {
drivers/net/ieee802154/atusb.c
754
atusb->data = &atusb_chip_data;
drivers/net/ieee802154/atusb.c
758
atusb->data = &atusb_chip_data;
drivers/net/ieee802154/atusb.c
762
atusb->data = &hulusb_chip_data;
drivers/net/ieee802154/atusb.c
766
atusb->err = -ENOTSUPP;
drivers/net/ieee802154/atusb.c
77
static int atusb_write_subreg(struct atusb *atusb, u8 reg, u8 mask,
drivers/net/ieee802154/atusb.c
773
atusb->fw_ver_maj, atusb->fw_ver_min, hw_name,
drivers/net/ieee802154/atusb.c
774
atusb->fw_hw_type);
drivers/net/ieee802154/atusb.c
776
if (atusb->fw_ver_maj == 0 && atusb->fw_ver_min < 2) {
drivers/net/ieee802154/atusb.c
779
atusb->fw_ver_maj, atusb->fw_ver_min);
drivers/net/ieee802154/atusb.c
786
static int atusb_get_and_show_build(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
788
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
796
ret = usb_control_msg(atusb->usb_dev, usb_rcvctrlpipe(usb_dev, 0), ATUSB_BUILD,
drivers/net/ieee802154/atusb.c
80
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
807
static int atusb_get_and_conf_chip(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
809
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
812
struct ieee802154_hw *hw = atusb->hw;
drivers/net/ieee802154/atusb.c
861
atusb->hw->phy->supported.channels[0] = 0x7FFF800;
drivers/net/ieee802154/atusb.c
862
atusb->hw->phy->current_channel = 11; /* reset default */
drivers/net/ieee802154/atusb.c
863
atusb->hw->phy->supported.tx_powers = atusb_powers;
drivers/net/ieee802154/atusb.c
864
atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
drivers/net/ieee802154/atusb.c
870
atusb->hw->phy->supported.channels[0] = 0x7FFF800;
drivers/net/ieee802154/atusb.c
871
atusb->hw->phy->current_channel = 11; /* reset default */
drivers/net/ieee802154/atusb.c
872
atusb->hw->phy->supported.tx_powers = atusb_powers;
drivers/net/ieee802154/atusb.c
873
atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
drivers/net/ieee802154/atusb.c
879
atusb->hw->flags |= IEEE802154_HW_LBT;
drivers/net/ieee802154/atusb.c
880
atusb->hw->phy->supported.channels[0] = 0x00007FF;
drivers/net/ieee802154/atusb.c
881
atusb->hw->phy->supported.channels[2] = 0x00007FF;
drivers/net/ieee802154/atusb.c
882
atusb->hw->phy->current_channel = 5;
drivers/net/ieee802154/atusb.c
883
atusb->hw->phy->supported.lbt = NL802154_SUPPORTED_BOOL_BOTH;
drivers/net/ieee802154/atusb.c
884
atusb->hw->phy->supported.tx_powers = at86rf212_powers;
drivers/net/ieee802154/atusb.c
885
atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf212_powers);
drivers/net/ieee802154/atusb.c
886
atusb->hw->phy->supported.cca_ed_levels = at86rf212_ed_levels_100;
drivers/net/ieee802154/atusb.c
887
atusb->hw->phy->supported.cca_ed_levels_size = ARRAY_SIZE(at86rf212_ed_levels_100);
drivers/net/ieee802154/atusb.c
904
atusb->err = -ENODEV;
drivers/net/ieee802154/atusb.c
908
static int atusb_set_extended_addr(struct atusb *atusb)
drivers/net/ieee802154/atusb.c
910
struct usb_device *usb_dev = atusb->usb_dev;
drivers/net/ieee802154/atusb.c
919
if (atusb->fw_ver_maj == 0 && atusb->fw_ver_min < 3) {
drivers/net/ieee802154/atusb.c
920
ieee802154_random_extended_addr(&atusb->hw->phy->perm_extended_addr);
drivers/net/ieee802154/atusb.c
925
ret = usb_control_msg_recv(atusb->usb_dev, 0, ATUSB_EUI64_READ, ATUSB_REQ_FROM_DEV, 0, 0,
drivers/net/ieee802154/atusb.c
929
ieee802154_random_extended_addr(&atusb->hw->phy->perm_extended_addr);
drivers/net/ieee802154/atusb.c
937
ieee802154_random_extended_addr(&atusb->hw->phy->perm_extended_addr);
drivers/net/ieee802154/atusb.c
939
atusb->hw->phy->perm_extended_addr = extended_addr;
drivers/net/ieee802154/atusb.c
940
addr = swab64((__force u64)atusb->hw->phy->perm_extended_addr);
drivers/net/ieee802154/atusb.c
955
struct atusb *atusb = NULL;
drivers/net/ieee802154/atusb.c
958
hw = ieee802154_alloc_hw(sizeof(struct atusb), &atusb_ops);
drivers/net/ieee802154/atusb.c
962
atusb = hw->priv;
drivers/net/ieee802154/atusb.c
963
atusb->hw = hw;
drivers/net/ieee802154/atusb.c
964
atusb->usb_dev = usb_get_dev(usb_dev);
drivers/net/ieee802154/atusb.c
965
usb_set_intfdata(interface, atusb);
drivers/net/ieee802154/atusb.c
967
atusb->shutdown = 0;
drivers/net/ieee802154/atusb.c
968
atusb->err = 0;
drivers/net/ieee802154/atusb.c
969
INIT_DELAYED_WORK(&atusb->work, atusb_work_urbs);
drivers/net/ieee802154/atusb.c
970
init_usb_anchor(&atusb->idle_urbs);
drivers/net/ieee802154/atusb.c
971
init_usb_anchor(&atusb->rx_urbs);
drivers/net/ieee802154/atusb.c
973
if (atusb_alloc_urbs(atusb, ATUSB_NUM_RX_URBS))
drivers/net/ieee802154/atusb.c
976
atusb->tx_dr.bRequestType = ATUSB_REQ_TO_DEV;
drivers/net/ieee802154/atusb.c
977
atusb->tx_dr.bRequest = ATUSB_TX;
drivers/net/ieee802154/atusb.c
978
atusb->tx_dr.wValue = cpu_to_le16(0);
drivers/net/ieee802154/atusb.c
980
atusb->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/net/ieee802154/atusb.c
981
if (!atusb->tx_urb)
drivers/net/ieee802154/atusb.c
986
usb_control_msg_send(atusb->usb_dev, 0, ATUSB_RF_RESET, ATUSB_REQ_TO_DEV, 0, 0,
drivers/net/ieee802154/atusb.c
988
atusb_get_and_conf_chip(atusb);
drivers/net/ieee802154/atusb.c
989
atusb_get_and_show_revision(atusb);
drivers/net/ieee802154/atusb.c
990
atusb_get_and_show_build(atusb);
drivers/net/ieee802154/atusb.c
991
atusb_set_extended_addr(atusb);
drivers/net/ieee802154/atusb.c
993
if ((atusb->fw_ver_maj == 0 && atusb->fw_ver_min >= 3) || atusb->fw_ver_maj > 0)
drivers/net/ieee802154/atusb.c
996
ret = atusb_get_and_clear_error(atusb);
drivers/net/ieee802154/atusb.c
998
dev_err(&atusb->usb_dev->dev,