diff options
author | David S. Miller <davem@davemloft.net> | 2015-01-02 15:58:21 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-01-02 15:58:21 -0500 |
commit | 6c032edc8a338f7a5d7bbd3dd8a08ac80d37dd86 (patch) | |
tree | c07d1788b0c6f3973a4afc8c61c05712cb6fa100 /drivers | |
parent | a4c9ea5e8fec680134d22aa99b54d1cd8c226ebd (diff) | |
parent | e64b4fb66cc428cef0a62ea899b671c1aad05f3a (diff) |
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
Johan Hedberg say:
====================
pull request: bluetooth-next 2014-12-31
Here's the first batch of bluetooth patches for 3.20.
- Cleanups & fixes to ieee802154 drivers
- Fix synchronization of mgmt commands with respective HCI commands
- Add self-tests for LE pairing crypto functionality
- Remove 'BlueFritz!' specific handling from core using a new quirk flag
- Public address configuration support for ath3012
- Refactor debugfs support into a dedicated file
- Initial support for LE Data Length Extension feature from Bluetooth 4.2
Please let me know if there are any issues pulling. Thanks.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/bluetooth/bfusb.c | 2 | ||||
-rw-r--r-- | drivers/bluetooth/btusb.c | 34 | ||||
-rw-r--r-- | drivers/net/ieee802154/at86rf230.c | 80 | ||||
-rw-r--r-- | drivers/net/ieee802154/cc2520.c | 27 | ||||
-rw-r--r-- | drivers/net/ieee802154/mrf24j40.c | 6 |
5 files changed, 92 insertions, 57 deletions
diff --git a/drivers/bluetooth/bfusb.c b/drivers/bluetooth/bfusb.c index b2e7e94a6771..fcfb72e9e0ee 100644 --- a/drivers/bluetooth/bfusb.c +++ b/drivers/bluetooth/bfusb.c | |||
@@ -696,6 +696,8 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i | |||
696 | hdev->flush = bfusb_flush; | 696 | hdev->flush = bfusb_flush; |
697 | hdev->send = bfusb_send_frame; | 697 | hdev->send = bfusb_send_frame; |
698 | 698 | ||
699 | set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks); | ||
700 | |||
699 | if (hci_register_dev(hdev) < 0) { | 701 | if (hci_register_dev(hdev) < 0) { |
700 | BT_ERR("Can't register HCI device"); | 702 | BT_ERR("Can't register HCI device"); |
701 | hci_free_dev(hdev); | 703 | hci_free_dev(hdev); |
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 19cf2cf22e87..f051a93c6cad 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
@@ -49,6 +49,7 @@ static struct usb_driver btusb_driver; | |||
49 | #define BTUSB_INTEL_BOOT 0x200 | 49 | #define BTUSB_INTEL_BOOT 0x200 |
50 | #define BTUSB_BCM_PATCHRAM 0x400 | 50 | #define BTUSB_BCM_PATCHRAM 0x400 |
51 | #define BTUSB_MARVELL 0x800 | 51 | #define BTUSB_MARVELL 0x800 |
52 | #define BTUSB_AVM 0x1000 | ||
52 | 53 | ||
53 | static const struct usb_device_id btusb_table[] = { | 54 | static const struct usb_device_id btusb_table[] = { |
54 | /* Generic Bluetooth USB device */ | 55 | /* Generic Bluetooth USB device */ |
@@ -85,7 +86,7 @@ static const struct usb_device_id btusb_table[] = { | |||
85 | { USB_DEVICE(0x05ac, 0x8281) }, | 86 | { USB_DEVICE(0x05ac, 0x8281) }, |
86 | 87 | ||
87 | /* AVM BlueFRITZ! USB v2.0 */ | 88 | /* AVM BlueFRITZ! USB v2.0 */ |
88 | { USB_DEVICE(0x057c, 0x3800) }, | 89 | { USB_DEVICE(0x057c, 0x3800), .driver_info = BTUSB_AVM }, |
89 | 90 | ||
90 | /* Bluetooth Ultraport Module from IBM */ | 91 | /* Bluetooth Ultraport Module from IBM */ |
91 | { USB_DEVICE(0x04bf, 0x030a) }, | 92 | { USB_DEVICE(0x04bf, 0x030a) }, |
@@ -1943,6 +1944,31 @@ static int btusb_set_bdaddr_bcm(struct hci_dev *hdev, const bdaddr_t *bdaddr) | |||
1943 | return 0; | 1944 | return 0; |
1944 | } | 1945 | } |
1945 | 1946 | ||
1947 | static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev, | ||
1948 | const bdaddr_t *bdaddr) | ||
1949 | { | ||
1950 | struct sk_buff *skb; | ||
1951 | u8 buf[10]; | ||
1952 | long ret; | ||
1953 | |||
1954 | buf[0] = 0x01; | ||
1955 | buf[1] = 0x01; | ||
1956 | buf[2] = 0x00; | ||
1957 | buf[3] = sizeof(bdaddr_t); | ||
1958 | memcpy(buf + 4, bdaddr, sizeof(bdaddr_t)); | ||
1959 | |||
1960 | skb = __hci_cmd_sync(hdev, 0xfc0b, sizeof(buf), buf, HCI_INIT_TIMEOUT); | ||
1961 | if (IS_ERR(skb)) { | ||
1962 | ret = PTR_ERR(skb); | ||
1963 | BT_ERR("%s: Change address command failed (%ld)", | ||
1964 | hdev->name, ret); | ||
1965 | return ret; | ||
1966 | } | ||
1967 | kfree_skb(skb); | ||
1968 | |||
1969 | return 0; | ||
1970 | } | ||
1971 | |||
1946 | static int btusb_probe(struct usb_interface *intf, | 1972 | static int btusb_probe(struct usb_interface *intf, |
1947 | const struct usb_device_id *id) | 1973 | const struct usb_device_id *id) |
1948 | { | 1974 | { |
@@ -2055,9 +2081,15 @@ static int btusb_probe(struct usb_interface *intf, | |||
2055 | if (id->driver_info & BTUSB_MARVELL) | 2081 | if (id->driver_info & BTUSB_MARVELL) |
2056 | hdev->set_bdaddr = btusb_set_bdaddr_marvell; | 2082 | hdev->set_bdaddr = btusb_set_bdaddr_marvell; |
2057 | 2083 | ||
2084 | if (id->driver_info & BTUSB_AVM) | ||
2085 | set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks); | ||
2086 | |||
2058 | if (id->driver_info & BTUSB_INTEL_BOOT) | 2087 | if (id->driver_info & BTUSB_INTEL_BOOT) |
2059 | set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); | 2088 | set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); |
2060 | 2089 | ||
2090 | if (id->driver_info & BTUSB_ATH3012) | ||
2091 | hdev->set_bdaddr = btusb_set_bdaddr_ath3012; | ||
2092 | |||
2061 | /* Interface numbers are hardcoded in the specification */ | 2093 | /* Interface numbers are hardcoded in the specification */ |
2062 | data->isoc = usb_ifnum_to_if(data->udev, 1); | 2094 | data->isoc = usb_ifnum_to_if(data->udev, 1); |
2063 | 2095 | ||
diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index 1c0135620c62..80632fc59756 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c | |||
@@ -450,7 +450,7 @@ at86rf230_async_error_recover(void *context) | |||
450 | ieee802154_wake_queue(lp->hw); | 450 | ieee802154_wake_queue(lp->hw); |
451 | } | 451 | } |
452 | 452 | ||
453 | static void | 453 | static inline void |
454 | at86rf230_async_error(struct at86rf230_local *lp, | 454 | at86rf230_async_error(struct at86rf230_local *lp, |
455 | struct at86rf230_state_change *ctx, int rc) | 455 | struct at86rf230_state_change *ctx, int rc) |
456 | { | 456 | { |
@@ -524,7 +524,6 @@ at86rf230_async_state_assert(void *context) | |||
524 | } | 524 | } |
525 | } | 525 | } |
526 | 526 | ||
527 | |||
528 | dev_warn(&lp->spi->dev, "unexcept state change from 0x%02x to 0x%02x. Actual state: 0x%02x\n", | 527 | dev_warn(&lp->spi->dev, "unexcept state change from 0x%02x to 0x%02x. Actual state: 0x%02x\n", |
529 | ctx->from_state, ctx->to_state, trx_state); | 528 | ctx->from_state, ctx->to_state, trx_state); |
530 | } | 529 | } |
@@ -655,7 +654,7 @@ at86rf230_async_state_change_start(void *context) | |||
655 | if (ctx->irq_enable) | 654 | if (ctx->irq_enable) |
656 | enable_irq(lp->spi->irq); | 655 | enable_irq(lp->spi->irq); |
657 | 656 | ||
658 | at86rf230_async_error(lp, &lp->state, rc); | 657 | at86rf230_async_error(lp, ctx, rc); |
659 | } | 658 | } |
660 | } | 659 | } |
661 | 660 | ||
@@ -715,10 +714,7 @@ at86rf230_tx_complete(void *context) | |||
715 | 714 | ||
716 | enable_irq(lp->spi->irq); | 715 | enable_irq(lp->spi->irq); |
717 | 716 | ||
718 | if (lp->max_frame_retries <= 0) | 717 | ieee802154_xmit_complete(lp->hw, skb, !lp->tx_aret); |
719 | ieee802154_xmit_complete(lp->hw, skb, true); | ||
720 | else | ||
721 | ieee802154_xmit_complete(lp->hw, skb, false); | ||
722 | } | 718 | } |
723 | 719 | ||
724 | static void | 720 | static void |
@@ -753,16 +749,13 @@ at86rf230_tx_trac_check(void *context) | |||
753 | * to STATE_FORCE_TRX_OFF then STATE_TX_ON to recover the transceiver | 749 | * to STATE_FORCE_TRX_OFF then STATE_TX_ON to recover the transceiver |
754 | * state to TX_ON. | 750 | * state to TX_ON. |
755 | */ | 751 | */ |
756 | if (trac) { | 752 | if (trac) |
757 | at86rf230_async_state_change(lp, ctx, STATE_FORCE_TRX_OFF, | 753 | at86rf230_async_state_change(lp, ctx, STATE_FORCE_TRX_OFF, |
758 | at86rf230_tx_trac_error, true); | 754 | at86rf230_tx_trac_error, true); |
759 | return; | 755 | else |
760 | } | 756 | at86rf230_tx_on(context); |
761 | |||
762 | at86rf230_tx_on(context); | ||
763 | } | 757 | } |
764 | 758 | ||
765 | |||
766 | static void | 759 | static void |
767 | at86rf230_tx_trac_status(void *context) | 760 | at86rf230_tx_trac_status(void *context) |
768 | { | 761 | { |
@@ -1082,7 +1075,7 @@ at86rf230_set_hw_addr_filt(struct ieee802154_hw *hw, | |||
1082 | u16 addr = le16_to_cpu(filt->short_addr); | 1075 | u16 addr = le16_to_cpu(filt->short_addr); |
1083 | 1076 | ||
1084 | dev_vdbg(&lp->spi->dev, | 1077 | dev_vdbg(&lp->spi->dev, |
1085 | "at86rf230_set_hw_addr_filt called for saddr\n"); | 1078 | "at86rf230_set_hw_addr_filt called for saddr\n"); |
1086 | __at86rf230_write(lp, RG_SHORT_ADDR_0, addr); | 1079 | __at86rf230_write(lp, RG_SHORT_ADDR_0, addr); |
1087 | __at86rf230_write(lp, RG_SHORT_ADDR_1, addr >> 8); | 1080 | __at86rf230_write(lp, RG_SHORT_ADDR_1, addr >> 8); |
1088 | } | 1081 | } |
@@ -1091,7 +1084,7 @@ at86rf230_set_hw_addr_filt(struct ieee802154_hw *hw, | |||
1091 | u16 pan = le16_to_cpu(filt->pan_id); | 1084 | u16 pan = le16_to_cpu(filt->pan_id); |
1092 | 1085 | ||
1093 | dev_vdbg(&lp->spi->dev, | 1086 | dev_vdbg(&lp->spi->dev, |
1094 | "at86rf230_set_hw_addr_filt called for pan id\n"); | 1087 | "at86rf230_set_hw_addr_filt called for pan id\n"); |
1095 | __at86rf230_write(lp, RG_PAN_ID_0, pan); | 1088 | __at86rf230_write(lp, RG_PAN_ID_0, pan); |
1096 | __at86rf230_write(lp, RG_PAN_ID_1, pan >> 8); | 1089 | __at86rf230_write(lp, RG_PAN_ID_1, pan >> 8); |
1097 | } | 1090 | } |
@@ -1101,14 +1094,14 @@ at86rf230_set_hw_addr_filt(struct ieee802154_hw *hw, | |||
1101 | 1094 | ||
1102 | memcpy(addr, &filt->ieee_addr, 8); | 1095 | memcpy(addr, &filt->ieee_addr, 8); |
1103 | dev_vdbg(&lp->spi->dev, | 1096 | dev_vdbg(&lp->spi->dev, |
1104 | "at86rf230_set_hw_addr_filt called for IEEE addr\n"); | 1097 | "at86rf230_set_hw_addr_filt called for IEEE addr\n"); |
1105 | for (i = 0; i < 8; i++) | 1098 | for (i = 0; i < 8; i++) |
1106 | __at86rf230_write(lp, RG_IEEE_ADDR_0 + i, addr[i]); | 1099 | __at86rf230_write(lp, RG_IEEE_ADDR_0 + i, addr[i]); |
1107 | } | 1100 | } |
1108 | 1101 | ||
1109 | if (changed & IEEE802154_AFILT_PANC_CHANGED) { | 1102 | if (changed & IEEE802154_AFILT_PANC_CHANGED) { |
1110 | dev_vdbg(&lp->spi->dev, | 1103 | dev_vdbg(&lp->spi->dev, |
1111 | "at86rf230_set_hw_addr_filt called for panc change\n"); | 1104 | "at86rf230_set_hw_addr_filt called for panc change\n"); |
1112 | if (filt->pan_coord) | 1105 | if (filt->pan_coord) |
1113 | at86rf230_write_subreg(lp, SR_AACK_I_AM_COORD, 1); | 1106 | at86rf230_write_subreg(lp, SR_AACK_I_AM_COORD, 1); |
1114 | else | 1107 | else |
@@ -1146,11 +1139,37 @@ at86rf230_set_lbt(struct ieee802154_hw *hw, bool on) | |||
1146 | } | 1139 | } |
1147 | 1140 | ||
1148 | static int | 1141 | static int |
1149 | at86rf230_set_cca_mode(struct ieee802154_hw *hw, u8 mode) | 1142 | at86rf230_set_cca_mode(struct ieee802154_hw *hw, |
1143 | const struct wpan_phy_cca *cca) | ||
1150 | { | 1144 | { |
1151 | struct at86rf230_local *lp = hw->priv; | 1145 | struct at86rf230_local *lp = hw->priv; |
1146 | u8 val; | ||
1147 | |||
1148 | /* mapping 802.15.4 to driver spec */ | ||
1149 | switch (cca->mode) { | ||
1150 | case NL802154_CCA_ENERGY: | ||
1151 | val = 1; | ||
1152 | break; | ||
1153 | case NL802154_CCA_CARRIER: | ||
1154 | val = 2; | ||
1155 | break; | ||
1156 | case NL802154_CCA_ENERGY_CARRIER: | ||
1157 | switch (cca->opt) { | ||
1158 | case NL802154_CCA_OPT_ENERGY_CARRIER_AND: | ||
1159 | val = 3; | ||
1160 | break; | ||
1161 | case NL802154_CCA_OPT_ENERGY_CARRIER_OR: | ||
1162 | val = 0; | ||
1163 | break; | ||
1164 | default: | ||
1165 | return -EINVAL; | ||
1166 | } | ||
1167 | break; | ||
1168 | default: | ||
1169 | return -EINVAL; | ||
1170 | } | ||
1152 | 1171 | ||
1153 | return at86rf230_write_subreg(lp, SR_CCA_MODE, mode); | 1172 | return at86rf230_write_subreg(lp, SR_CCA_MODE, val); |
1154 | } | 1173 | } |
1155 | 1174 | ||
1156 | static int | 1175 | static int |
@@ -1400,7 +1419,7 @@ at86rf230_detect_device(struct at86rf230_local *lp) | |||
1400 | if (rc) | 1419 | if (rc) |
1401 | return rc; | 1420 | return rc; |
1402 | 1421 | ||
1403 | rc = __at86rf230_read(lp, RG_PART_NUM, &version); | 1422 | rc = __at86rf230_read(lp, RG_VERSION_NUM, &version); |
1404 | if (rc) | 1423 | if (rc) |
1405 | return rc; | 1424 | return rc; |
1406 | 1425 | ||
@@ -1410,11 +1429,12 @@ at86rf230_detect_device(struct at86rf230_local *lp) | |||
1410 | return -EINVAL; | 1429 | return -EINVAL; |
1411 | } | 1430 | } |
1412 | 1431 | ||
1413 | lp->hw->extra_tx_headroom = 0; | ||
1414 | lp->hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AACK | | 1432 | lp->hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AACK | |
1415 | IEEE802154_HW_TXPOWER | IEEE802154_HW_ARET | | 1433 | IEEE802154_HW_TXPOWER | IEEE802154_HW_ARET | |
1416 | IEEE802154_HW_AFILT | IEEE802154_HW_PROMISCUOUS; | 1434 | IEEE802154_HW_AFILT | IEEE802154_HW_PROMISCUOUS; |
1417 | 1435 | ||
1436 | lp->hw->phy->cca.mode = NL802154_CCA_ENERGY; | ||
1437 | |||
1418 | switch (part) { | 1438 | switch (part) { |
1419 | case 2: | 1439 | case 2: |
1420 | chip = "at86rf230"; | 1440 | chip = "at86rf230"; |
@@ -1429,16 +1449,12 @@ at86rf230_detect_device(struct at86rf230_local *lp) | |||
1429 | break; | 1449 | break; |
1430 | case 7: | 1450 | case 7: |
1431 | chip = "at86rf212"; | 1451 | chip = "at86rf212"; |
1432 | if (version == 1) { | 1452 | lp->data = &at86rf212_data; |
1433 | lp->data = &at86rf212_data; | 1453 | lp->hw->flags |= IEEE802154_HW_LBT; |
1434 | lp->hw->flags |= IEEE802154_HW_LBT; | 1454 | lp->hw->phy->channels_supported[0] = 0x00007FF; |
1435 | lp->hw->phy->channels_supported[0] = 0x00007FF; | 1455 | lp->hw->phy->channels_supported[2] = 0x00007FF; |
1436 | lp->hw->phy->channels_supported[2] = 0x00007FF; | 1456 | lp->hw->phy->current_channel = 5; |
1437 | lp->hw->phy->current_channel = 5; | 1457 | lp->hw->phy->symbol_duration = 25; |
1438 | lp->hw->phy->symbol_duration = 25; | ||
1439 | } else { | ||
1440 | rc = -ENOTSUPP; | ||
1441 | } | ||
1442 | break; | 1458 | break; |
1443 | case 11: | 1459 | case 11: |
1444 | chip = "at86rf233"; | 1460 | chip = "at86rf233"; |
@@ -1448,7 +1464,7 @@ at86rf230_detect_device(struct at86rf230_local *lp) | |||
1448 | lp->hw->phy->symbol_duration = 16; | 1464 | lp->hw->phy->symbol_duration = 16; |
1449 | break; | 1465 | break; |
1450 | default: | 1466 | default: |
1451 | chip = "unkown"; | 1467 | chip = "unknown"; |
1452 | rc = -ENOTSUPP; | 1468 | rc = -ENOTSUPP; |
1453 | break; | 1469 | break; |
1454 | } | 1470 | } |
diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c index f9df9fa86d5f..a43c8acb7268 100644 --- a/drivers/net/ieee802154/cc2520.c +++ b/drivers/net/ieee802154/cc2520.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/workqueue.h> | 19 | #include <linux/workqueue.h> |
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/skbuff.h> | 21 | #include <linux/skbuff.h> |
22 | #include <linux/pinctrl/consumer.h> | ||
23 | #include <linux/of_gpio.h> | 22 | #include <linux/of_gpio.h> |
24 | #include <linux/ieee802154.h> | 23 | #include <linux/ieee802154.h> |
25 | 24 | ||
@@ -513,7 +512,6 @@ err_tx: | |||
513 | return rc; | 512 | return rc; |
514 | } | 513 | } |
515 | 514 | ||
516 | |||
517 | static int cc2520_rx(struct cc2520_private *priv) | 515 | static int cc2520_rx(struct cc2520_private *priv) |
518 | { | 516 | { |
519 | u8 len = 0, lqi = 0, bytes = 1; | 517 | u8 len = 0, lqi = 0, bytes = 1; |
@@ -652,6 +650,7 @@ static int cc2520_register(struct cc2520_private *priv) | |||
652 | priv->hw->parent = &priv->spi->dev; | 650 | priv->hw->parent = &priv->spi->dev; |
653 | priv->hw->extra_tx_headroom = 0; | 651 | priv->hw->extra_tx_headroom = 0; |
654 | priv->hw->vif_data_size = sizeof(*priv); | 652 | priv->hw->vif_data_size = sizeof(*priv); |
653 | ieee802154_random_extended_addr(&priv->hw->phy->perm_extended_addr); | ||
655 | 654 | ||
656 | /* We do support only 2.4 Ghz */ | 655 | /* We do support only 2.4 Ghz */ |
657 | priv->hw->phy->channels_supported[0] = 0x7FFF800; | 656 | priv->hw->phy->channels_supported[0] = 0x7FFF800; |
@@ -842,24 +841,15 @@ done: | |||
842 | static int cc2520_probe(struct spi_device *spi) | 841 | static int cc2520_probe(struct spi_device *spi) |
843 | { | 842 | { |
844 | struct cc2520_private *priv; | 843 | struct cc2520_private *priv; |
845 | struct pinctrl *pinctrl; | ||
846 | struct cc2520_platform_data *pdata; | 844 | struct cc2520_platform_data *pdata; |
847 | int ret; | 845 | int ret; |
848 | 846 | ||
849 | priv = devm_kzalloc(&spi->dev, | 847 | priv = devm_kzalloc(&spi->dev, sizeof(*priv), GFP_KERNEL); |
850 | sizeof(struct cc2520_private), GFP_KERNEL); | 848 | if (!priv) |
851 | if (!priv) { | 849 | return -ENOMEM; |
852 | ret = -ENOMEM; | ||
853 | goto err_ret; | ||
854 | } | ||
855 | 850 | ||
856 | spi_set_drvdata(spi, priv); | 851 | spi_set_drvdata(spi, priv); |
857 | 852 | ||
858 | pinctrl = devm_pinctrl_get_select_default(&spi->dev); | ||
859 | if (IS_ERR(pinctrl)) | ||
860 | dev_warn(&spi->dev, | ||
861 | "pinctrl pins are not configured\n"); | ||
862 | |||
863 | pdata = cc2520_get_platform_data(spi); | 853 | pdata = cc2520_get_platform_data(spi); |
864 | if (!pdata) { | 854 | if (!pdata) { |
865 | dev_err(&spi->dev, "no platform data\n"); | 855 | dev_err(&spi->dev, "no platform data\n"); |
@@ -870,10 +860,8 @@ static int cc2520_probe(struct spi_device *spi) | |||
870 | 860 | ||
871 | priv->buf = devm_kzalloc(&spi->dev, | 861 | priv->buf = devm_kzalloc(&spi->dev, |
872 | SPI_COMMAND_BUFFER, GFP_KERNEL); | 862 | SPI_COMMAND_BUFFER, GFP_KERNEL); |
873 | if (!priv->buf) { | 863 | if (!priv->buf) |
874 | ret = -ENOMEM; | 864 | return -ENOMEM; |
875 | goto err_ret; | ||
876 | } | ||
877 | 865 | ||
878 | mutex_init(&priv->buffer_mutex); | 866 | mutex_init(&priv->buffer_mutex); |
879 | INIT_WORK(&priv->fifop_irqwork, cc2520_fifop_irqwork); | 867 | INIT_WORK(&priv->fifop_irqwork, cc2520_fifop_irqwork); |
@@ -947,7 +935,6 @@ static int cc2520_probe(struct spi_device *spi) | |||
947 | if (ret) | 935 | if (ret) |
948 | goto err_hw_init; | 936 | goto err_hw_init; |
949 | 937 | ||
950 | |||
951 | gpio_set_value(pdata->vreg, HIGH); | 938 | gpio_set_value(pdata->vreg, HIGH); |
952 | usleep_range(100, 150); | 939 | usleep_range(100, 150); |
953 | 940 | ||
@@ -991,8 +978,6 @@ static int cc2520_probe(struct spi_device *spi) | |||
991 | err_hw_init: | 978 | err_hw_init: |
992 | mutex_destroy(&priv->buffer_mutex); | 979 | mutex_destroy(&priv->buffer_mutex); |
993 | flush_work(&priv->fifop_irqwork); | 980 | flush_work(&priv->fifop_irqwork); |
994 | |||
995 | err_ret: | ||
996 | return ret; | 981 | return ret; |
997 | } | 982 | } |
998 | 983 | ||
diff --git a/drivers/net/ieee802154/mrf24j40.c b/drivers/net/ieee802154/mrf24j40.c index a200fa16beae..fba2dfd910f7 100644 --- a/drivers/net/ieee802154/mrf24j40.c +++ b/drivers/net/ieee802154/mrf24j40.c | |||
@@ -289,7 +289,7 @@ static int mrf24j40_read_rx_buf(struct mrf24j40 *devrec, | |||
289 | goto out; | 289 | goto out; |
290 | 290 | ||
291 | /* Range check the RX FIFO length, accounting for the one-byte | 291 | /* Range check the RX FIFO length, accounting for the one-byte |
292 | * length field at the begining. */ | 292 | * length field at the beginning. */ |
293 | if (rx_len > RX_FIFO_SIZE-1) { | 293 | if (rx_len > RX_FIFO_SIZE-1) { |
294 | dev_err(printdev(devrec), "Invalid length read from device. Performing short read.\n"); | 294 | dev_err(printdev(devrec), "Invalid length read from device. Performing short read.\n"); |
295 | rx_len = RX_FIFO_SIZE-1; | 295 | rx_len = RX_FIFO_SIZE-1; |
@@ -323,7 +323,7 @@ static int mrf24j40_read_rx_buf(struct mrf24j40 *devrec, | |||
323 | 323 | ||
324 | #ifdef DEBUG | 324 | #ifdef DEBUG |
325 | print_hex_dump(KERN_DEBUG, "mrf24j40 rx: ", | 325 | print_hex_dump(KERN_DEBUG, "mrf24j40 rx: ", |
326 | DUMP_PREFIX_OFFSET, 16, 1, data, *len, 0); | 326 | DUMP_PREFIX_OFFSET, 16, 1, data, *len, 0); |
327 | pr_debug("mrf24j40 rx: lqi: %02hhx rssi: %02hhx\n", | 327 | pr_debug("mrf24j40 rx: lqi: %02hhx rssi: %02hhx\n", |
328 | lqi_rssi[0], lqi_rssi[1]); | 328 | lqi_rssi[0], lqi_rssi[1]); |
329 | #endif | 329 | #endif |
@@ -521,7 +521,7 @@ static int mrf24j40_filter(struct ieee802154_hw *hw, | |||
521 | */ | 521 | */ |
522 | 522 | ||
523 | dev_dbg(printdev(devrec), "Set Pan Coord to %s\n", | 523 | dev_dbg(printdev(devrec), "Set Pan Coord to %s\n", |
524 | filt->pan_coord ? "on" : "off"); | 524 | filt->pan_coord ? "on" : "off"); |
525 | } | 525 | } |
526 | 526 | ||
527 | return 0; | 527 | return 0; |