forked from Minki/linux
Bluetooth: Add BT_HS config option
Move A2MP Module under BT_HS config option and allow the user have flexible option to choose the feature only they need a2mp_discover_amp() & a2mp_channel_create() are a2mp module entry point for master and slave, and this is dynamic invoked depends on the userspace or remote request, then we defined their implementation depends on BT_HS config Signed-off-by: Arron Wang <arron.wang@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
4a546ec364
commit
244bc37759
@ -53,6 +53,11 @@ source "net/bluetooth/cmtp/Kconfig"
|
|||||||
|
|
||||||
source "net/bluetooth/hidp/Kconfig"
|
source "net/bluetooth/hidp/Kconfig"
|
||||||
|
|
||||||
|
config BT_HS
|
||||||
|
bool "Bluetooth High Speed (HS) features"
|
||||||
|
depends on BT_BREDR
|
||||||
|
default y
|
||||||
|
|
||||||
config BT_LE
|
config BT_LE
|
||||||
bool "Bluetooth Low Energy (LE) features"
|
bool "Bluetooth Low Energy (LE) features"
|
||||||
depends on BT
|
depends on BT
|
||||||
|
@ -13,9 +13,10 @@ bluetooth_6lowpan-y := 6lowpan.o
|
|||||||
|
|
||||||
bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \
|
bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \
|
||||||
hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o lib.o \
|
hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o lib.o \
|
||||||
a2mp.o amp.o ecc.o hci_request.o mgmt_util.o
|
ecc.o hci_request.o mgmt_util.o
|
||||||
|
|
||||||
bluetooth-$(CONFIG_BT_BREDR) += sco.o
|
bluetooth-$(CONFIG_BT_BREDR) += sco.o
|
||||||
|
bluetooth-$(CONFIG_BT_HS) += a2mp.o amp.o
|
||||||
bluetooth-$(CONFIG_BT_DEBUGFS) += hci_debugfs.o
|
bluetooth-$(CONFIG_BT_DEBUGFS) += hci_debugfs.o
|
||||||
bluetooth-$(CONFIG_BT_SELFTEST) += selftest.o
|
bluetooth-$(CONFIG_BT_SELFTEST) += selftest.o
|
||||||
|
|
||||||
|
@ -130,10 +130,29 @@ struct a2mp_physlink_rsp {
|
|||||||
#define A2MP_STATUS_SECURITY_VIOLATION 0x06
|
#define A2MP_STATUS_SECURITY_VIOLATION 0x06
|
||||||
|
|
||||||
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr);
|
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr);
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_BT_HS)
|
||||||
int amp_mgr_put(struct amp_mgr *mgr);
|
int amp_mgr_put(struct amp_mgr *mgr);
|
||||||
struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn,
|
struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn,
|
||||||
struct sk_buff *skb);
|
struct sk_buff *skb);
|
||||||
void a2mp_discover_amp(struct l2cap_chan *chan);
|
void a2mp_discover_amp(struct l2cap_chan *chan);
|
||||||
|
#else
|
||||||
|
static inline int amp_mgr_put(struct amp_mgr *mgr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn,
|
||||||
|
struct sk_buff *skb)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void a2mp_discover_amp(struct l2cap_chan *chan)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void a2mp_send_getinfo_rsp(struct hci_dev *hdev);
|
void a2mp_send_getinfo_rsp(struct hci_dev *hdev);
|
||||||
void a2mp_send_getampassoc_rsp(struct hci_dev *hdev, u8 status);
|
void a2mp_send_getampassoc_rsp(struct hci_dev *hdev, u8 status);
|
||||||
void a2mp_send_create_phy_link_req(struct hci_dev *hdev, u8 status);
|
void a2mp_send_create_phy_link_req(struct hci_dev *hdev, u8 status);
|
||||||
|
@ -44,6 +44,20 @@ void amp_create_phylink(struct hci_dev *hdev, struct amp_mgr *mgr,
|
|||||||
struct hci_conn *hcon);
|
struct hci_conn *hcon);
|
||||||
void amp_accept_phylink(struct hci_dev *hdev, struct amp_mgr *mgr,
|
void amp_accept_phylink(struct hci_dev *hdev, struct amp_mgr *mgr,
|
||||||
struct hci_conn *hcon);
|
struct hci_conn *hcon);
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_BT_HS)
|
||||||
|
void amp_create_logical_link(struct l2cap_chan *chan);
|
||||||
|
void amp_disconnect_logical_link(struct hci_chan *hchan);
|
||||||
|
#else
|
||||||
|
static inline void amp_create_logical_link(struct l2cap_chan *chan)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void amp_disconnect_logical_link(struct hci_chan *hchan)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void amp_write_remote_assoc(struct hci_dev *hdev, u8 handle);
|
void amp_write_remote_assoc(struct hci_dev *hdev, u8 handle);
|
||||||
void amp_write_rem_assoc_continue(struct hci_dev *hdev, u8 handle);
|
void amp_write_rem_assoc_continue(struct hci_dev *hdev, u8 handle);
|
||||||
void amp_physical_cfm(struct hci_conn *bredr_hcon, struct hci_conn *hs_hcon);
|
void amp_physical_cfm(struct hci_conn *bredr_hcon, struct hci_conn *hs_hcon);
|
||||||
|
Loading…
Reference in New Issue
Block a user