summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDheeraj CVR <cvr.dheeraj@gmail.com>2015-06-07 03:50:41 +0400
committerDheeraj CVR <cvr.dheeraj@gmail.com>2015-06-08 00:20:27 +0400
commit962fb7b20cea55d3ece966f36afbfa88a4108ce6 (patch)
tree0a30c2fb694280786a9156b6ecfd4a08c5d9ec17
parente572ee5bf656cf0d560735e1a2fd00159da8dd1a (diff)
downloadandroid_hardware_broadcom_libbt-stable/cm-12.1-YOG4P.tar.gz
android_hardware_broadcom_libbt-stable/cm-12.1-YOG4P.tar.bz2
android_hardware_broadcom_libbt-stable/cm-12.1-YOG4P.zip
libbt-vendor: add support for samsung bluetoothstable/cm-12.1-YOG4P
Based on codeworkx's patches for brcm_patchram. Change-Id: Ifefa4f2b98b9186695677dc6f02fcbb63b32e3b7
-rw-r--r--Android.mk4
-rwxr-xr-xsrc/hardware.c60
2 files changed, 64 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk
index c7d714a..560f60d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -27,6 +27,10 @@ LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_OWNER := broadcom
LOCAL_PROPRIETARY_MODULE := true
+ifeq ($(BOARD_HAVE_SAMSUNG_BLUETOOTH),true)
+ LOCAL_CFLAGS += -DSAMSUNG_BLUETOOTH
+endif
+
include $(LOCAL_PATH)/vnd_buildcfg.mk
include $(BUILD_SHARED_LIBRARY)
diff --git a/src/hardware.c b/src/hardware.c
index 5a92935..f95daab 100755
--- a/src/hardware.c
+++ b/src/hardware.c
@@ -112,6 +112,9 @@ struct btlock {
int cookie;
};
#endif
+#ifdef SAMSUNG_BLUETOOTH
+#define CID_PATH "/data/.cid.info"
+#endif
/******************************************************************************
** Local type definitions
@@ -425,6 +428,46 @@ static int hw_strncmp (const char *p_str1, const char *p_str2, const int len)
return 0;
}
+#ifdef SAMSUNG_BLUETOOTH
+/*******************************************************************************
+**
+** Function hw_samsung_bluetooth_type
+**
+** Description Returns the type of bluetooth chip present in samsung
+** device.
+**
+** Returns Returns char* (bluetooth type)
+**
+*******************************************************************************/
+static char *hw_samsung_bluetooth_type()
+{
+ char buf[10];
+ int fd = open(CID_PATH, O_RDONLY);
+ if (fd < 0) {
+ ALOGE("Couldn't open file %s for reading", CID_PATH);
+ return NULL;
+ }
+
+ if (read(fd, buf, sizeof(buf)) < 0) {
+ close(fd);
+ return NULL;
+ }
+
+ close(fd);
+
+ if (strncmp(buf, "murata", 6) == 0)
+ return "_murata";
+
+ if (strncmp(buf, "semcove", 7) == 0)
+ return "_semcove";
+
+ if (strncmp(buf, "semcosh", 7) == 0)
+ return "_semcosh";
+
+ return NULL;
+}
+#endif
+
/*******************************************************************************
**
** Function hw_config_findpatch
@@ -470,9 +513,26 @@ static uint8_t hw_config_findpatch(char *p_chip_id_str)
while ((dp = readdir(dirp)) != NULL)
{
/* Check if filename starts with chip-id name */
+#ifdef SAMSUNG_BLUETOOTH
+ char *type = hw_samsung_bluetooth_type();
+ char samsung_patchfile_name[FW_PATCHFILE_PATH_MAXLEN] = { 0 };
+ memset(samsung_patchfile_name, 0, FW_PATCHFILE_PATH_MAXLEN);
+ strcpy(samsung_patchfile_name, p_chip_id_str);
+ if (type != NULL)
+ {
+ strcat(samsung_patchfile_name, type);
+ }
+
+ if ((hw_strncmp(dp->d_name, samsung_patchfile_name,
+ strlen(samsung_patchfile_name))) == 0)
+ {
+ memset(p_chip_id_str, 0, FW_PATCHFILE_PATH_MAXLEN);
+ strcpy(p_chip_id_str, samsung_patchfile_name);
+#else
if ((hw_strncmp(dp->d_name, p_chip_id_str, strlen(p_chip_id_str)) \
) == 0)
{
+#endif
/* Check if it has .hcd extenstion */
filenamelen = strlen(dp->d_name);
if ((filenamelen >= FW_PATCHFILE_EXTENSION_LEN) &&