linux/drivers/bluetooth/btrtl.h
<<
>>
Prefs
   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
 109