2024-06-06 11:43:51

by Chris Lu

[permalink] [raw]
Subject: [PATCH v4 3/4] Bluetooth: btmtk: add macro to get/set/clear MediaTek defined flags

Define a enumeration to store MediaTek specific flags and
macro function to set/test/clear the flags in data structure.

Signed-off-by: Chris Lu <[email protected]>
Signed-off-by: Sean Wang <[email protected]>
---
drivers/bluetooth/btmtk.h | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

diff --git a/drivers/bluetooth/btmtk.h b/drivers/bluetooth/btmtk.h
index e76b8a358be8..6a0697a22b16 100644
--- a/drivers/bluetooth/btmtk.h
+++ b/drivers/bluetooth/btmtk.h
@@ -128,6 +128,10 @@ struct btmtk_hci_wmt_params {

typedef int (*btmtk_reset_sync_func_t)(struct hci_dev *, void *);

+enum {
+ __BTMTK_NUM_FLAGS,
+};
+
struct btmtk_coredump_info {
const char *driver_name;
u32 fw_version;
@@ -136,11 +140,30 @@ struct btmtk_coredump_info {
};

struct btmediatek_data {
+ DECLARE_BITMAP(flags, __BTMTK_NUM_FLAGS);
+
u32 dev_id;
btmtk_reset_sync_func_t reset_sync;
struct btmtk_coredump_info cd_info;
};

+#define btmtk_set_flag(hdev, nr) \
+ do { \
+ struct btmediatek_data *mediatek = hci_get_priv((hdev)); \
+ set_bit((nr), mediatek->flags); \
+ } while (0)
+
+#define btmtk_clear_flag(hdev, nr) \
+ do { \
+ struct btmediatek_data *mediatek = hci_get_priv((hdev)); \
+ clear_bit((nr), mediatek->flags); \
+ } while (0)
+
+#define btmtk_get_flag(hdev) \
+ (((struct btmediatek_data *)hci_get_priv(hdev))->flags)
+
+#define btmtk_test_flag(hdev, nr) test_bit((nr), btmtk_get_flag(hdev))
+
typedef int (*wmt_cmd_sync_func_t)(struct hci_dev *,
struct btmtk_hci_wmt_params *);

--
2.18.0