btrtl.h (2569B)
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