Bluetooth: btmtk: move btusb_recv_acl_mtk to btmtk.c
authorChris Lu <chris.lu@mediatek.com>
Thu, 4 Jul 2024 06:01:15 +0000 (14:01 +0800)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 15 Jul 2024 14:11:50 +0000 (10:11 -0400)
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 <sean.wang@mediatek.com>
Signed-off-by: Chris Lu <chris.lu@mediatek.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btmtk.c
drivers/bluetooth/btmtk.h
drivers/bluetooth/btusb.c

index f5ecb8227d3b468314eec7df0c1307e1257ac079..fe3b892f6c6ebcbef4b30fe2795305e1e913f39d 100644 (file)
@@ -930,6 +930,39 @@ int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id)
 }
 EXPORT_SYMBOL_GPL(btmtk_usb_subsys_reset);
 
+int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
+{
+       struct btmtk_data *data = hci_get_priv(hdev);
+       u16 handle = le16_to_cpu(hci_acl_hdr(skb)->handle);
+
+       switch (handle) {
+       case 0xfc6f:            /* Firmware dump from device */
+               /* When the firmware hangs, the device can no longer
+                * suspend and thus disable auto-suspend.
+                */
+               usb_disable_autosuspend(data->udev);
+
+               /* We need to forward the diagnostic packet to userspace daemon
+                * for backward compatibility, so we have to clone the packet
+                * extraly for the in-kernel coredump support.
+                */
+               if (IS_ENABLED(CONFIG_DEV_COREDUMP)) {
+                       struct sk_buff *skb_cd = skb_clone(skb, GFP_ATOMIC);
+
+                       if (skb_cd)
+                               btmtk_process_coredump(hdev, skb_cd);
+               }
+
+               fallthrough;
+       case 0x05ff:            /* Firmware debug logging 1 */
+       case 0x05fe:            /* Firmware debug logging 2 */
+               return hci_recv_diag(hdev, skb);
+       }
+
+       return hci_recv_frame(hdev, skb);
+}
+EXPORT_SYMBOL_GPL(btmtk_usb_recv_acl);
+
 int btmtk_usb_setup(struct hci_dev *hdev)
 {
        struct btmtk_data *btmtk_data = hci_get_priv(hdev);
index fe41528ae509bfc22077a265426b2c5bacfba335..47193b867b9fd97ac2d29af550eb39efcfa97f88 100644 (file)
@@ -191,6 +191,8 @@ void btmtk_fw_get_filename(char *buf, size_t size, u32 dev_id, u32 fw_ver,
 
 int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id);
 
+int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb);
+
 int btmtk_usb_setup(struct hci_dev *hdev);
 
 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)
        return -EOPNOTSUPP;
 }
 
+static int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
+{
+       return -EOPNOTSUPP;
+}
+
 static int btmtk_usb_setup(struct hci_dev *hdev)
 {
        return -EOPNOTSUPP;
index 9fca3eb6ae45425080122ba501fd64524bb38b5e..034256c399dd433d344c63b5c7830341fa8284ae 100644 (file)
@@ -2694,38 +2694,6 @@ static int btusb_mtk_shutdown(struct hci_dev *hdev)
        return btmtk_usb_shutdown(hdev);
 }
 
-static int btusb_recv_acl_mtk(struct hci_dev *hdev, struct sk_buff *skb)
-{
-       struct btusb_data *data = hci_get_drvdata(hdev);
-       u16 handle = le16_to_cpu(hci_acl_hdr(skb)->handle);
-
-       switch (handle) {
-       case 0xfc6f:            /* Firmware dump from device */
-               /* When the firmware hangs, the device can no longer
-                * suspend and thus disable auto-suspend.
-                */
-               usb_disable_autosuspend(data->udev);
-
-               /* We need to forward the diagnostic packet to userspace daemon
-                * for backward compatibility, so we have to clone the packet
-                * extraly for the in-kernel coredump support.
-                */
-               if (IS_ENABLED(CONFIG_DEV_COREDUMP)) {
-                       struct sk_buff *skb_cd = skb_clone(skb, GFP_ATOMIC);
-
-                       if (skb_cd)
-                               btmtk_process_coredump(hdev, skb_cd);
-               }
-
-               fallthrough;
-       case 0x05ff:            /* Firmware debug logging 1 */
-       case 0x05fe:            /* Firmware debug logging 2 */
-               return hci_recv_diag(hdev, skb);
-       }
-
-       return hci_recv_frame(hdev, skb);
-}
-
 #ifdef CONFIG_PM
 /* Configure an out-of-band gpio as wake-up pin, if specified in device tree */
 static int marvell_config_oob_wake(struct hci_dev *hdev)
@@ -3831,7 +3799,7 @@ static int btusb_probe(struct usb_interface *intf,
                hdev->set_bdaddr = btmtk_set_bdaddr;
                set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
                set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
-               data->recv_acl = btusb_recv_acl_mtk;
+               data->recv_acl = btmtk_usb_recv_acl;
        }
 
        if (id->driver_info & BTUSB_SWAVE) {