Bluetooth: btrtl: Add btrealtek data struct
authorHilda Wu <hildawu@realtek.com>
Wed, 5 Oct 2022 08:43:30 +0000 (16:43 +0800)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 12 Dec 2022 22:19:23 +0000 (14:19 -0800)
This patch adds a data structure for btrealtek object, and the
definition of vendor behavior flags. It also adds macros to set/test/get
the flags.

Signed-off-by: Hilda Wu <hildawu@realtek.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btrtl.h
drivers/bluetooth/btusb.c

index 2c441bd..ebf0101 100644 (file)
@@ -47,6 +47,27 @@ struct rtl_vendor_config {
        struct rtl_vendor_config_entry entry[];
 } __packed;
 
+enum {
+       REALTEK_ALT6_CONTINUOUS_TX_CHIP,
+
+       __REALTEK_NUM_FLAGS,
+};
+
+struct btrealtek_data {
+       DECLARE_BITMAP(flags, __REALTEK_NUM_FLAGS);
+};
+
+#define btrealtek_set_flag(hdev, nr)                                   \
+       do {                                                            \
+               struct btrealtek_data *realtek = hci_get_priv((hdev));  \
+               set_bit((nr), realtek->flags);                          \
+       } while (0)
+
+#define btrealtek_get_flag(hdev)                                       \
+       (((struct btrealtek_data *)hci_get_priv(hdev))->flags)
+
+#define btrealtek_test_flag(hdev, nr)  test_bit((nr), btrealtek_get_flag(hdev))
+
 #if IS_ENABLED(CONFIG_BT_RTL)
 
 struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
index 80f3899..39a30c3 100644 (file)
@@ -3808,6 +3808,9 @@ static int btusb_probe(struct usb_interface *intf,
                /* Override the rx handlers */
                data->recv_event = btusb_recv_event_intel;
                data->recv_bulk = btusb_recv_bulk_intel;
+       } else if (id->driver_info & BTUSB_REALTEK) {
+               /* Allocate extra space for Realtek device */
+               priv_size += sizeof(struct btrealtek_data);
        }
 
        data->recv_acl = hci_recv_frame;