Linux Audio

Check our new training course

Loading...
v6.2
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 *  Bluetooth support for Realtek devices
  4 *
  5 *  Copyright (C) 2015 Endless Mobile, Inc.
  6 */
  7
  8#define RTL_FRAG_LEN 252
  9
 10#define rtl_dev_err(dev, fmt, ...) bt_dev_err(dev, "RTL: " fmt, ##__VA_ARGS__)
 11#define rtl_dev_warn(dev, fmt, ...) bt_dev_warn(dev, "RTL: " fmt, ##__VA_ARGS__)
 12#define rtl_dev_info(dev, fmt, ...) bt_dev_info(dev, "RTL: " fmt, ##__VA_ARGS__)
 13#define rtl_dev_dbg(dev, fmt, ...) bt_dev_dbg(dev, "RTL: " fmt, ##__VA_ARGS__)
 14
 15struct btrtl_device_info;
 16
 17struct rtl_download_cmd {
 18	__u8 index;
 19	__u8 data[RTL_FRAG_LEN];
 20} __packed;
 21
 22struct rtl_download_response {
 23	__u8 status;
 24	__u8 index;
 25} __packed;
 26
 27struct rtl_rom_version_evt {
 28	__u8 status;
 29	__u8 version;
 30} __packed;
 31
 32struct rtl_epatch_header {
 33	__u8 signature[8];
 34	__le32 fw_version;
 35	__le16 num_patches;
 36} __packed;
 37
 38struct rtl_vendor_config_entry {
 39	__le16 offset;
 40	__u8 len;
 41	__u8 data[];
 42} __packed;
 43
 44struct rtl_vendor_config {
 45	__le32 signature;
 46	__le16 total_len;
 47	struct rtl_vendor_config_entry entry[];
 48} __packed;
 49
 50enum {
 51	REALTEK_ALT6_CONTINUOUS_TX_CHIP,
 52
 53	__REALTEK_NUM_FLAGS,
 54};
 55
 56struct btrealtek_data {
 57	DECLARE_BITMAP(flags, __REALTEK_NUM_FLAGS);
 58};
 59
 60#define btrealtek_set_flag(hdev, nr)					\
 61	do {								\
 62		struct btrealtek_data *realtek = hci_get_priv((hdev));	\
 63		set_bit((nr), realtek->flags);				\
 64	} while (0)
 65
 66#define btrealtek_get_flag(hdev)					\
 67	(((struct btrealtek_data *)hci_get_priv(hdev))->flags)
 68
 69#define btrealtek_test_flag(hdev, nr)	test_bit((nr), btrealtek_get_flag(hdev))
 70
 71#if IS_ENABLED(CONFIG_BT_RTL)
 72
 73struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
 74					   const char *postfix);
 75void btrtl_free(struct btrtl_device_info *btrtl_dev);
 76int btrtl_download_firmware(struct hci_dev *hdev,
 77			    struct btrtl_device_info *btrtl_dev);
 78void btrtl_set_quirks(struct hci_dev *hdev,
 79		      struct btrtl_device_info *btrtl_dev);
 80int btrtl_setup_realtek(struct hci_dev *hdev);
 81int btrtl_shutdown_realtek(struct hci_dev *hdev);
 82int btrtl_get_uart_settings(struct hci_dev *hdev,
 83			    struct btrtl_device_info *btrtl_dev,
 84			    unsigned int *controller_baudrate,
 85			    u32 *device_baudrate, bool *flow_control);
 86
 87#else
 88
 89static inline struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
 90							 const char *postfix)
 91{
 92	return ERR_PTR(-EOPNOTSUPP);
 93}
 94
 95static inline void btrtl_free(struct btrtl_device_info *btrtl_dev)
 96{
 97}
 98
 99static inline int btrtl_download_firmware(struct hci_dev *hdev,
100					  struct btrtl_device_info *btrtl_dev)
101{
102	return -EOPNOTSUPP;
103}
104
105static inline void btrtl_set_quirks(struct hci_dev *hdev,
106				    struct btrtl_device_info *btrtl_dev)
107{
108}
109
110static inline int btrtl_setup_realtek(struct hci_dev *hdev)
111{
112	return -EOPNOTSUPP;
113}
114
115static inline int btrtl_shutdown_realtek(struct hci_dev *hdev)
116{
117	return -EOPNOTSUPP;
118}
119
120static inline int btrtl_get_uart_settings(struct hci_dev *hdev,
121					  struct btrtl_device_info *btrtl_dev,
122					  unsigned int *controller_baudrate,
123					  u32 *device_baudrate,
124					  bool *flow_control)
125{
126	return -ENOENT;
127}
128
129#endif
v5.14.15
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 *  Bluetooth support for Realtek devices
  4 *
  5 *  Copyright (C) 2015 Endless Mobile, Inc.
  6 */
  7
  8#define RTL_FRAG_LEN 252
  9
 10#define rtl_dev_err(dev, fmt, ...) bt_dev_err(dev, "RTL: " fmt, ##__VA_ARGS__)
 11#define rtl_dev_warn(dev, fmt, ...) bt_dev_warn(dev, "RTL: " fmt, ##__VA_ARGS__)
 12#define rtl_dev_info(dev, fmt, ...) bt_dev_info(dev, "RTL: " fmt, ##__VA_ARGS__)
 13#define rtl_dev_dbg(dev, fmt, ...) bt_dev_dbg(dev, "RTL: " fmt, ##__VA_ARGS__)
 14
 15struct btrtl_device_info;
 16
 17struct rtl_download_cmd {
 18	__u8 index;
 19	__u8 data[RTL_FRAG_LEN];
 20} __packed;
 21
 22struct rtl_download_response {
 23	__u8 status;
 24	__u8 index;
 25} __packed;
 26
 27struct rtl_rom_version_evt {
 28	__u8 status;
 29	__u8 version;
 30} __packed;
 31
 32struct rtl_epatch_header {
 33	__u8 signature[8];
 34	__le32 fw_version;
 35	__le16 num_patches;
 36} __packed;
 37
 38struct rtl_vendor_config_entry {
 39	__le16 offset;
 40	__u8 len;
 41	__u8 data[];
 42} __packed;
 43
 44struct rtl_vendor_config {
 45	__le32 signature;
 46	__le16 total_len;
 47	struct rtl_vendor_config_entry entry[];
 48} __packed;
 49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 50#if IS_ENABLED(CONFIG_BT_RTL)
 51
 52struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
 53					   const char *postfix);
 54void btrtl_free(struct btrtl_device_info *btrtl_dev);
 55int btrtl_download_firmware(struct hci_dev *hdev,
 56			    struct btrtl_device_info *btrtl_dev);
 57void btrtl_set_quirks(struct hci_dev *hdev,
 58		      struct btrtl_device_info *btrtl_dev);
 59int btrtl_setup_realtek(struct hci_dev *hdev);
 60int btrtl_shutdown_realtek(struct hci_dev *hdev);
 61int btrtl_get_uart_settings(struct hci_dev *hdev,
 62			    struct btrtl_device_info *btrtl_dev,
 63			    unsigned int *controller_baudrate,
 64			    u32 *device_baudrate, bool *flow_control);
 65
 66#else
 67
 68static inline struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
 69							 const char *postfix)
 70{
 71	return ERR_PTR(-EOPNOTSUPP);
 72}
 73
 74static inline void btrtl_free(struct btrtl_device_info *btrtl_dev)
 75{
 76}
 77
 78static inline int btrtl_download_firmware(struct hci_dev *hdev,
 79					  struct btrtl_device_info *btrtl_dev)
 80{
 81	return -EOPNOTSUPP;
 82}
 83
 84static inline void btrtl_set_quirks(struct hci_dev *hdev,
 85				    struct btrtl_device_info *btrtl_dev)
 86{
 87}
 88
 89static inline int btrtl_setup_realtek(struct hci_dev *hdev)
 90{
 91	return -EOPNOTSUPP;
 92}
 93
 94static inline int btrtl_shutdown_realtek(struct hci_dev *hdev)
 95{
 96	return -EOPNOTSUPP;
 97}
 98
 99static inline int btrtl_get_uart_settings(struct hci_dev *hdev,
100					  struct btrtl_device_info *btrtl_dev,
101					  unsigned int *controller_baudrate,
102					  u32 *device_baudrate,
103					  bool *flow_control)
104{
105	return -ENOENT;
106}
107
108#endif