0001
0002
0003
0004
0005
0006
0007
0008 #define RTL_FRAG_LEN 252
0009
0010 #define rtl_dev_err(dev, fmt, ...) bt_dev_err(dev, "RTL: " fmt, ##__VA_ARGS__)
0011 #define rtl_dev_warn(dev, fmt, ...) bt_dev_warn(dev, "RTL: " fmt, ##__VA_ARGS__)
0012 #define rtl_dev_info(dev, fmt, ...) bt_dev_info(dev, "RTL: " fmt, ##__VA_ARGS__)
0013 #define rtl_dev_dbg(dev, fmt, ...) bt_dev_dbg(dev, "RTL: " fmt, ##__VA_ARGS__)
0014
0015 struct btrtl_device_info;
0016
0017 struct rtl_download_cmd {
0018 __u8 index;
0019 __u8 data[RTL_FRAG_LEN];
0020 } __packed;
0021
0022 struct rtl_download_response {
0023 __u8 status;
0024 __u8 index;
0025 } __packed;
0026
0027 struct rtl_rom_version_evt {
0028 __u8 status;
0029 __u8 version;
0030 } __packed;
0031
0032 struct rtl_epatch_header {
0033 __u8 signature[8];
0034 __le32 fw_version;
0035 __le16 num_patches;
0036 } __packed;
0037
0038 struct rtl_vendor_config_entry {
0039 __le16 offset;
0040 __u8 len;
0041 __u8 data[];
0042 } __packed;
0043
0044 struct rtl_vendor_config {
0045 __le32 signature;
0046 __le16 total_len;
0047 struct rtl_vendor_config_entry entry[];
0048 } __packed;
0049
0050 #if IS_ENABLED(CONFIG_BT_RTL)
0051
0052 struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
0053 const char *postfix);
0054 void btrtl_free(struct btrtl_device_info *btrtl_dev);
0055 int btrtl_download_firmware(struct hci_dev *hdev,
0056 struct btrtl_device_info *btrtl_dev);
0057 void btrtl_set_quirks(struct hci_dev *hdev,
0058 struct btrtl_device_info *btrtl_dev);
0059 int btrtl_setup_realtek(struct hci_dev *hdev);
0060 int btrtl_shutdown_realtek(struct hci_dev *hdev);
0061 int btrtl_get_uart_settings(struct hci_dev *hdev,
0062 struct btrtl_device_info *btrtl_dev,
0063 unsigned int *controller_baudrate,
0064 u32 *device_baudrate, bool *flow_control);
0065
0066 #else
0067
0068 static inline struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
0069 const char *postfix)
0070 {
0071 return ERR_PTR(-EOPNOTSUPP);
0072 }
0073
0074 static inline void btrtl_free(struct btrtl_device_info *btrtl_dev)
0075 {
0076 }
0077
0078 static inline int btrtl_download_firmware(struct hci_dev *hdev,
0079 struct btrtl_device_info *btrtl_dev)
0080 {
0081 return -EOPNOTSUPP;
0082 }
0083
0084 static inline void btrtl_set_quirks(struct hci_dev *hdev,
0085 struct btrtl_device_info *btrtl_dev)
0086 {
0087 }
0088
0089 static inline int btrtl_setup_realtek(struct hci_dev *hdev)
0090 {
0091 return -EOPNOTSUPP;
0092 }
0093
0094 static inline int btrtl_shutdown_realtek(struct hci_dev *hdev)
0095 {
0096 return -EOPNOTSUPP;
0097 }
0098
0099 static inline int btrtl_get_uart_settings(struct hci_dev *hdev,
0100 struct btrtl_device_info *btrtl_dev,
0101 unsigned int *controller_baudrate,
0102 u32 *device_baudrate,
0103 bool *flow_control)
0104 {
0105 return -ENOENT;
0106 }
0107
0108 #endif