summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Strudel <tstrudel@google.com>2016-12-08 07:50:59 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-12-08 07:50:59 +0000
commitde54cf30c5541b485b7e95aaf6d6fa1585bff17d (patch)
treea736762b48a339b2bd171e8e07d0199aaf17afd3
parent0df6d6cfae2ea2810aa2e2e02d4707cd571af286 (diff)
parent982277f15f552f072d705971a1f6c480fb1ba6a2 (diff)
downloadbt-de54cf30c5541b485b7e95aaf6d6fa1585bff17d.tar.gz
msmcobalt: Update to LA.UM.5.7_RB1.07.00.00.251.006 am: bc37ff26d0
am: 982277f15f Change-Id: I8b45ff42d0edd2264ddb85505649a88f62359989
-rw-r--r--msmcobalt/libbt-vendor/Android.mk1
-rw-r--r--msmcobalt/libbt-vendor/include/bt_vendor_qcom.h3
-rw-r--r--msmcobalt/libbt-vendor/src/bt_vendor_qcom.c45
-rw-r--r--msmcobalt/libbt-vendor/src/hw_rome.c2
4 files changed, 36 insertions, 15 deletions
diff --git a/msmcobalt/libbt-vendor/Android.mk b/msmcobalt/libbt-vendor/Android.mk
index 27f8c4d..671a58e 100644
--- a/msmcobalt/libbt-vendor/Android.mk
+++ b/msmcobalt/libbt-vendor/Android.mk
@@ -37,6 +37,7 @@ endif
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
LOCAL_CFLAGS += -DPANIC_ON_SOC_CRASH
+LOCAL_CFLAGS += -DENABLE_DBG_FLAGS
endif
LOCAL_C_INCLUDES += \
diff --git a/msmcobalt/libbt-vendor/include/bt_vendor_qcom.h b/msmcobalt/libbt-vendor/include/bt_vendor_qcom.h
index ac8d2fd..c71ce8a 100644
--- a/msmcobalt/libbt-vendor/include/bt_vendor_qcom.h
+++ b/msmcobalt/libbt-vendor/include/bt_vendor_qcom.h
@@ -63,6 +63,7 @@ typedef enum {
#define HCI_CMD_PREAMBLE_SIZE 3
#define HCI_EVT_CMD_CMPL_STATUS_RET_BYTE 5
#define HCI_EVT_CMD_CMPL_OPCODE 3
+#define BT_PWR_CNTRL_DEVICE "/dev/btpower"
enum {
BT_STATUS_SUCCESS = 0,
@@ -71,7 +72,7 @@ enum {
BT_STATUS_NOMEM,
BT_STATUS_PROP_FAILURE,
};
-
+#define BT_CMD_PWR_CTRL 0xbfad
struct bt_qcom_struct {
int fd[2];
int ant_fd;
diff --git a/msmcobalt/libbt-vendor/src/bt_vendor_qcom.c b/msmcobalt/libbt-vendor/src/bt_vendor_qcom.c
index 278e897..2d4d689 100644
--- a/msmcobalt/libbt-vendor/src/bt_vendor_qcom.c
+++ b/msmcobalt/libbt-vendor/src/bt_vendor_qcom.c
@@ -33,6 +33,7 @@
#include "bt_vendor_qcom.h"
#include "hci_uart.h"
#include "hci_smd.h"
+#include <sys/ioctl.h>
#include <sys/socket.h>
#include <cutils/sockets.h>
#include <linux/un.h>
@@ -380,7 +381,7 @@ static int bt_powerup(int en )
{
char rfkill_type[64], *enable_ldo_path = NULL;
char type[16], enable_ldo[6];
- int fd = 0, size, i, ret, fd_ldo;
+ int fd = 0, size, i, ret, fd_ldo, fd_btpower;
char disable[PROPERTY_VALUE_MAX];
char state;
@@ -489,20 +490,36 @@ static int bt_powerup(int en )
property_set("wc_transport.soc_initialized", "0");
}
- ALOGI("Write %c to rfkill\n", on);
-
- /* Write value to control rfkill */
- if(fd >= 0) {
- if ((size = write(fd, &on, 1)) < 0) {
- ALOGE("write(%s) failed: %s (%d)", q->rfkill_state, strerror(errno), errno);
+ if (q->soc_type >= BT_SOC_CHEROKEE && q->soc_type < BT_SOC_RESERVED) {
+ ALOGI("open bt power devnode,send ioctl power op :%d ",en);
+ fd_btpower = open(BT_PWR_CNTRL_DEVICE, O_RDWR, O_NONBLOCK);
+ if (fd_btpower < 0) {
+ ALOGE("\nfailed to open bt device error = (%s)\n",strerror(errno));
#ifdef WIFI_BT_STATUS_SYNC
- bt_semaphore_release(lock_fd);
- bt_semaphore_destroy(lock_fd);
+ bt_semaphore_release(lock_fd);
+ bt_semaphore_destroy(lock_fd);
#endif
- return -1;
+ return -1;
+ }
+ ret = ioctl(fd_btpower, BT_CMD_PWR_CTRL, (unsigned long)en);
+ if (ret < 0) {
+ ALOGE(" ioctl failed to power control:%d error =(%s)",ret,strerror(errno));
}
- }
-
+ close(fd_btpower);
+ } else {
+ ALOGI("Write %c to rfkill\n", on);
+ /* Write value to control rfkill */
+ if(fd >= 0) {
+ if ((size = write(fd, &on, 1)) < 0) {
+ ALOGE("write(%s) failed: %s (%d)", q->rfkill_state, strerror(errno), errno);
+#ifdef WIFI_BT_STATUS_SYNC
+ bt_semaphore_release(lock_fd);
+ bt_semaphore_destroy(lock_fd);
+#endif
+ return -1;
+ }
+ }
+ }
#ifdef WIFI_BT_STATUS_SYNC
/* query wifi status */
property_get(WIFI_PROP_NAME, wifi_status, "");
@@ -545,7 +562,6 @@ static int bt_powerup(int en )
done:
if (fd >= 0)
close(fd);
-
return 0;
}
@@ -1422,6 +1438,9 @@ static bool is_debug_force_special_bytes() {
int ret = 0;
char value[PROPERTY_VALUE_MAX] = {'\0'};
bool enabled = false;
+#ifdef ENABLE_DBG_FLAGS
+ enabled = true;
+#endif
ret = property_get("wc_transport.force_special_byte", value, NULL);
diff --git a/msmcobalt/libbt-vendor/src/hw_rome.c b/msmcobalt/libbt-vendor/src/hw_rome.c
index 56c3b9a..ccfb137 100644
--- a/msmcobalt/libbt-vendor/src/hw_rome.c
+++ b/msmcobalt/libbt-vendor/src/hw_rome.c
@@ -1456,7 +1456,7 @@ int rome_set_baudrate_req(int fd)
/* Total length of the packet to be sent to the Controller */
size = (HCI_CMD_IND + HCI_COMMAND_HDR_SIZE + VSC_SET_BAUDRATE_REQ_LEN);
- tcflush(fd,TCIOFLUSH);
+
/* Flow off during baudrate change */
if ((err = userial_vendor_ioctl(USERIAL_OP_FLOW_OFF , &flags)) < 0)
{