summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSudha Bheemanna <b.sudha@samsung.com>2016-09-06 16:38:36 +0530
committerSeung-Woo Kim <sw0312.kim@samsung.com>2016-12-14 13:53:14 +0900
commit9eedcb2b6671f73072428184f496af2e8963f425 (patch)
tree41083645a51ed7755c0ab5cb7e13cded24241e5a /include
parentf886fd6851474d9cfc5f0bdf679d2463bc87111f (diff)
Bluetooth: Add MGMT command to set SCO settings
Added code to set sco settings. Change-Id: I37aa572436241b06e00d1e9e75964aac747eeba5 Signed-off-by: Sudha Bheemanna <b.sudha@samsung.com> [remove sco link policy part] Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Diffstat (limited to 'include')
-rw-r--r--include/net/bluetooth/hci.h23
-rw-r--r--include/net/bluetooth/hci_core.h19
-rw-r--r--include/net/bluetooth/mgmt_tizen.h10
-rw-r--r--include/net/bluetooth/sco.h7
4 files changed, 59 insertions, 0 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 9bc429e45749..37b4539b99b3 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -1518,6 +1518,29 @@ struct hci_cc_rp_get_raw_rssi {
__le16 conn_handle;
__s8 rssi_dbm;
} __packed;
+
+#define HCI_BCM_ENABLE_WBS_REQ 0xfc7e
+struct hci_cp_bcm_wbs_req {
+ __u8 role;
+ __le16 pkt_type;
+} __packed;
+
+#define HCI_BCM_I2C_PCM_REQ 0xfc6d
+struct hci_cp_i2c_pcm_req {
+ __u8 i2c_enable;
+ __u8 is_master;
+ __u8 pcm_rate;
+ __u8 clock_rate;
+} __packed;
+
+#define HCI_BCM_SCO_PCM_REQ 0xfc1c
+struct hci_cp_sco_pcm_req {
+ __u8 sco_routing;
+ __u8 pcm_rate;
+ __u8 frame_type;
+ __u8 sync_mode;
+ __u8 clock_mode;
+} __packed;
#endif
/* ---- HCI Events ---- */
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index dfb2d913b522..e1aa78458d0e 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -484,6 +484,8 @@ struct hci_conn {
#ifdef TIZEN_BT
bool rssi_monitored;
+ __u8 sco_role;
+ __u16 voice_setting;
#endif
struct hci_conn *link;
@@ -873,6 +875,23 @@ static inline int hci_conn_hash_lookup_rssi_count(struct hci_dev *hdev)
bool hci_le_discovery_active(struct hci_dev *hdev);
void hci_le_discovery_set_state(struct hci_dev *hdev, int state);
+
+static inline struct hci_conn *hci_conn_hash_lookup_sco(struct hci_dev *hdev)
+{
+ struct hci_conn_hash *h = &hdev->conn_hash;
+ struct hci_conn *c;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(c, &h->list, list) {
+ if (c->type == SCO_LINK || c->type == ESCO_LINK) {
+ rcu_read_unlock();
+ return c;
+ }
+ }
+ rcu_read_unlock();
+
+ return NULL;
+}
#endif
int hci_disconnect(struct hci_conn *conn, __u8 reason);
diff --git a/include/net/bluetooth/mgmt_tizen.h b/include/net/bluetooth/mgmt_tizen.h
index e1eb50fc948a..1f861a0ae62f 100644
--- a/include/net/bluetooth/mgmt_tizen.h
+++ b/include/net/bluetooth/mgmt_tizen.h
@@ -151,6 +151,16 @@ struct mgmt_cp_le_set_scan_params {
} __packed;
#define MGMT_LE_SET_SCAN_PARAMS_SIZE 5
+#define MGMT_SCO_ROLE_HANDSFREE 0x00
+#define MGMT_SCO_ROLE_AUDIO_GATEWAY 0x01
+#define MGMT_OP_SET_VOICE_SETTING (TIZEN_OP_CODE_BASE + 0x10)
+struct mgmt_cp_set_voice_setting {
+ bdaddr_t bdaddr;
+ uint8_t sco_role;
+ uint16_t voice_setting;
+} __packed;
+#define MGMT_SET_VOICE_SETTING_SIZE 9
+
/* EVENTS */
/* For device name update changes */
diff --git a/include/net/bluetooth/sco.h b/include/net/bluetooth/sco.h
index f40ddb4264fc..bca05bf7bc31 100644
--- a/include/net/bluetooth/sco.h
+++ b/include/net/bluetooth/sco.h
@@ -46,4 +46,11 @@ struct sco_conninfo {
__u8 dev_class[3];
};
+#ifdef TIZEN_BT
+void sco_connect_set_gw_nbc(struct hci_dev *hdev);
+void sco_connect_set_gw_wbc(struct hci_dev *hdev);
+void sco_connect_set_nbc(struct hci_dev *hdev);
+void sco_connect_set_wbc(struct hci_dev *hdev);
+#endif
+
#endif /* __SCO_H */