2015-05-14 11:49:09 +03:00
/*
* Bluetooth support for Realtek devices
*
* Copyright ( C ) 2015 Endless Mobile , Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
*/
# define RTL_FRAG_LEN 252
2018-08-02 17:57:13 +03:00
# define rtl_dev_err(dev, fmt, ...) bt_dev_err(dev, "RTL: " fmt, ##__VA_ARGS__)
# define rtl_dev_warn(dev, fmt, ...) bt_dev_warn(dev, "RTL: " fmt, ##__VA_ARGS__)
# define rtl_dev_info(dev, fmt, ...) bt_dev_info(dev, "RTL: " fmt, ##__VA_ARGS__)
# define rtl_dev_dbg(dev, fmt, ...) bt_dev_dbg(dev, "RTL: " fmt, ##__VA_ARGS__)
struct btrtl_device_info ;
2015-05-14 11:49:09 +03:00
struct rtl_download_cmd {
__u8 index ;
__u8 data [ RTL_FRAG_LEN ] ;
} __packed ;
struct rtl_download_response {
__u8 status ;
__u8 index ;
} __packed ;
struct rtl_rom_version_evt {
__u8 status ;
__u8 version ;
} __packed ;
struct rtl_epatch_header {
__u8 signature [ 8 ] ;
__le32 fw_version ;
__le16 num_patches ;
} __packed ;
2018-08-02 17:57:15 +03:00
struct rtl_vendor_config_entry {
__le16 offset ;
__u8 len ;
__u8 data [ 0 ] ;
} __packed ;
struct rtl_vendor_config {
__le32 signature ;
__le16 total_len ;
struct rtl_vendor_config_entry entry [ 0 ] ;
} __packed ;
2015-05-14 11:49:09 +03:00
# if IS_ENABLED(CONFIG_BT_RTL)
2018-08-02 17:57:13 +03:00
struct btrtl_device_info * btrtl_initialize ( struct hci_dev * hdev ) ;
void btrtl_free ( struct btrtl_device_info * btrtl_dev ) ;
int btrtl_download_firmware ( struct hci_dev * hdev ,
struct btrtl_device_info * btrtl_dev ) ;
2015-05-14 11:49:09 +03:00
int btrtl_setup_realtek ( struct hci_dev * hdev ) ;
2018-08-02 17:57:15 +03:00
int btrtl_get_uart_settings ( struct hci_dev * hdev ,
struct btrtl_device_info * btrtl_dev ,
unsigned int * controller_baudrate ,
u32 * device_baudrate , bool * flow_control ) ;
2015-05-14 11:49:09 +03:00
# else
2018-08-02 17:57:13 +03:00
static inline struct btrtl_device_info * btrtl_initialize ( struct hci_dev * hdev )
{
return ERR_PTR ( - EOPNOTSUPP ) ;
}
static inline void btrtl_free ( struct btrtl_device_info * btrtl_dev )
{
}
static inline int btrtl_download_firmware ( struct hci_dev * hdev ,
struct btrtl_device_info * btrtl_dev )
{
return - EOPNOTSUPP ;
}
2015-05-14 11:49:09 +03:00
static inline int btrtl_setup_realtek ( struct hci_dev * hdev )
{
return - EOPNOTSUPP ;
}
2018-08-02 17:57:15 +03:00
static inline int btrtl_get_uart_settings ( struct hci_dev * hdev ,
struct btrtl_device_info * btrtl_dev ,
unsigned int * controller_baudrate ,
u32 * device_baudrate ,
bool * flow_control )
{
return - ENOENT ;
}
2015-05-14 11:49:09 +03:00
# endif