Skip to content

Commit 6dc22ab

Browse files
ChrisCH-LuVudentz
authored andcommitted
Bluetooth: btmtk: move btusb_recv_acl_mtk to btmtk.c
Move btusb_recv_acl_mtk from btusb.c to btmtk.c which holds vendor specific stuff and would make btusb.c clean. Signed-off-by: Sean Wang <[email protected]> Signed-off-by: Chris Lu <[email protected]> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
1 parent 5c5e8c5 commit 6dc22ab

File tree

3 files changed

+41
-33
lines changed

3 files changed

+41
-33
lines changed

drivers/bluetooth/btmtk.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,39 @@ int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id)
930930
}
931931
EXPORT_SYMBOL_GPL(btmtk_usb_subsys_reset);
932932

933+
int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
934+
{
935+
struct btmtk_data *data = hci_get_priv(hdev);
936+
u16 handle = le16_to_cpu(hci_acl_hdr(skb)->handle);
937+
938+
switch (handle) {
939+
case 0xfc6f: /* Firmware dump from device */
940+
/* When the firmware hangs, the device can no longer
941+
* suspend and thus disable auto-suspend.
942+
*/
943+
usb_disable_autosuspend(data->udev);
944+
945+
/* We need to forward the diagnostic packet to userspace daemon
946+
* for backward compatibility, so we have to clone the packet
947+
* extraly for the in-kernel coredump support.
948+
*/
949+
if (IS_ENABLED(CONFIG_DEV_COREDUMP)) {
950+
struct sk_buff *skb_cd = skb_clone(skb, GFP_ATOMIC);
951+
952+
if (skb_cd)
953+
btmtk_process_coredump(hdev, skb_cd);
954+
}
955+
956+
fallthrough;
957+
case 0x05ff: /* Firmware debug logging 1 */
958+
case 0x05fe: /* Firmware debug logging 2 */
959+
return hci_recv_diag(hdev, skb);
960+
}
961+
962+
return hci_recv_frame(hdev, skb);
963+
}
964+
EXPORT_SYMBOL_GPL(btmtk_usb_recv_acl);
965+
933966
int btmtk_usb_setup(struct hci_dev *hdev)
934967
{
935968
struct btmtk_data *btmtk_data = hci_get_priv(hdev);

drivers/bluetooth/btmtk.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,8 @@ void btmtk_fw_get_filename(char *buf, size_t size, u32 dev_id, u32 fw_ver,
191191

192192
int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id);
193193

194+
int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb);
195+
194196
int btmtk_usb_setup(struct hci_dev *hdev);
195197

196198
int btmtk_usb_shutdown(struct hci_dev *hdev);
@@ -239,6 +241,11 @@ static int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id)
239241
return -EOPNOTSUPP;
240242
}
241243

244+
static int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
245+
{
246+
return -EOPNOTSUPP;
247+
}
248+
242249
static int btmtk_usb_setup(struct hci_dev *hdev)
243250
{
244251
return -EOPNOTSUPP;

drivers/bluetooth/btusb.c

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,38 +2694,6 @@ static int btusb_mtk_shutdown(struct hci_dev *hdev)
26942694
return btmtk_usb_shutdown(hdev);
26952695
}
26962696

2697-
static int btusb_recv_acl_mtk(struct hci_dev *hdev, struct sk_buff *skb)
2698-
{
2699-
struct btusb_data *data = hci_get_drvdata(hdev);
2700-
u16 handle = le16_to_cpu(hci_acl_hdr(skb)->handle);
2701-
2702-
switch (handle) {
2703-
case 0xfc6f: /* Firmware dump from device */
2704-
/* When the firmware hangs, the device can no longer
2705-
* suspend and thus disable auto-suspend.
2706-
*/
2707-
usb_disable_autosuspend(data->udev);
2708-
2709-
/* We need to forward the diagnostic packet to userspace daemon
2710-
* for backward compatibility, so we have to clone the packet
2711-
* extraly for the in-kernel coredump support.
2712-
*/
2713-
if (IS_ENABLED(CONFIG_DEV_COREDUMP)) {
2714-
struct sk_buff *skb_cd = skb_clone(skb, GFP_ATOMIC);
2715-
2716-
if (skb_cd)
2717-
btmtk_process_coredump(hdev, skb_cd);
2718-
}
2719-
2720-
fallthrough;
2721-
case 0x05ff: /* Firmware debug logging 1 */
2722-
case 0x05fe: /* Firmware debug logging 2 */
2723-
return hci_recv_diag(hdev, skb);
2724-
}
2725-
2726-
return hci_recv_frame(hdev, skb);
2727-
}
2728-
27292697
#ifdef CONFIG_PM
27302698
/* Configure an out-of-band gpio as wake-up pin, if specified in device tree */
27312699
static int marvell_config_oob_wake(struct hci_dev *hdev)
@@ -3831,7 +3799,7 @@ static int btusb_probe(struct usb_interface *intf,
38313799
hdev->set_bdaddr = btmtk_set_bdaddr;
38323800
set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
38333801
set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
3834-
data->recv_acl = btusb_recv_acl_mtk;
3802+
data->recv_acl = btmtk_usb_recv_acl;
38353803
}
38363804

38373805
if (id->driver_info & BTUSB_SWAVE) {

0 commit comments

Comments
 (0)