diff options
author | Thierry Strudel <tstrudel@google.com> | 2016-12-08 07:50:59 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-12-08 07:50:59 +0000 |
commit | de54cf30c5541b485b7e95aaf6d6fa1585bff17d (patch) | |
tree | a736762b48a339b2bd171e8e07d0199aaf17afd3 | |
parent | 0df6d6cfae2ea2810aa2e2e02d4707cd571af286 (diff) | |
parent | 982277f15f552f072d705971a1f6c480fb1ba6a2 (diff) | |
download | bt-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.mk | 1 | ||||
-rw-r--r-- | msmcobalt/libbt-vendor/include/bt_vendor_qcom.h | 3 | ||||
-rw-r--r-- | msmcobalt/libbt-vendor/src/bt_vendor_qcom.c | 45 | ||||
-rw-r--r-- | msmcobalt/libbt-vendor/src/hw_rome.c | 2 |
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) { |