diff --git a/drivers/misc/samsung/scsc_bt/scsc_shm.c b/drivers/misc/samsung/scsc_bt/scsc_shm.c index b682c71a7..ca7fa1644 100755 --- a/drivers/misc/samsung/scsc_bt/scsc_shm.c +++ b/drivers/misc/samsung/scsc_bt/scsc_shm.c @@ -243,14 +243,15 @@ bool scsc_bt_shm_h4_avdtp_detect_write(uint32_t flags, uint16_t l2cap_cid, uint1 return true; } +#define HCI_GRP_LINK_CONTROL_CMDS (0x01 << 10) /* 0x0400 */ +#define HCI_ENH_SETUP_ESCO_CONNECTION (0x003D | HCI_GRP_LINK_CONTROL_CMDS) + static ssize_t scsc_bt_shm_h4_hci_cmd_write(const unsigned char *data, size_t count) { /* Store the read/write pointer on the stack since both are placed in unbuffered/uncached memory */ uint32_t tr_read = bt_service.bsmhcp_protocol->header.mailbox_hci_cmd_read; uint32_t tr_write = bt_service.bsmhcp_protocol->header.mailbox_hci_cmd_write; -#ifdef CONFIG_SCSC_PRINTK uint16_t op_code = *(uint16_t *)data; -#endif /* Temp vars */ struct BSMHCP_TD_CONTROL *td = &bt_service.bsmhcp_protocol->hci_cmd_transfer_ring[tr_write]; @@ -275,6 +276,13 @@ static ssize_t scsc_bt_shm_h4_hci_cmd_write(const unsigned char *data, size_t co memcpy(td->data, data, count); td->length = (u16)count; + if (op_code == HCI_ENH_SETUP_ESCO_CONNECTION) { + // input_transport_unit_size + td->data[55] = 16; + // output_transport_unit_size + td->data[56] = 16; + } + /* Ensure the wake lock is acquired */ if (!wake_lock_active(&bt_service.write_wake_lock)) { bt_service.write_wake_lock_count++;