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);
  57int btrtl_setup_realtek(struct hci_dev *hdev);
  58int btrtl_shutdown_realtek(struct hci_dev *hdev);
  59int btrtl_get_uart_settings(struct hci_dev *hdev,
  60                            struct btrtl_device_info *btrtl_dev,
  61                            unsigned int *controller_baudrate,
  62                            u32 *device_baudrate, bool *flow_control);
  63
  64#else
  65
  66static inline struct btrtl_device_info *btrtl_initialize(struct hci_dev *hdev,
  67                                                         const char *postfix)
  68{
  69        return ERR_PTR(-EOPNOTSUPP);
  70}
  71
  72static inline void btrtl_free(struct btrtl_device_info *btrtl_dev)
  73{
  74}
  75
  76static inline int btrtl_download_firmware(struct hci_dev *hdev,
  77                                          struct btrtl_device_info *btrtl_dev)
  78{
  79        return -EOPNOTSUPP;
  80}
  81
  82static inline int btrtl_setup_realtek(struct hci_dev *hdev)
  83{
  84        return -EOPNOTSUPP;
  85}
  86
  87static inline int btrtl_shutdown_realtek(struct hci_dev *hdev)
  88{
  89        return -EOPNOTSUPP;
  90}
  91
  92static inline int btrtl_get_uart_settings(struct hci_dev *hdev,
  93                                          struct btrtl_device_info *btrtl_dev,
  94                                          unsigned int *controller_baudrate,
  95                                          u32 *device_baudrate,
  96                                          bool *flow_control)
  97{
  98        return -ENOENT;
  99}
 100
 101#endif
 102