diff options
| author | Dheeraj CVR <cvr.dheeraj@gmail.com> | 2015-06-07 03:50:41 +0400 |
|---|---|---|
| committer | Rashed Abdel-Tawab <rashed@linux.com> | 2015-10-17 23:53:00 -0400 |
| commit | 35a4b4e01be72c5ef1a64ca7c716128ad8127f37 (patch) | |
| tree | de6aa031ddb746436a6c6666d7c4fb644d107cc6 | |
| parent | 40dbe817386c90c2ad1bd22f48fdb4416e3f3314 (diff) | |
| download | android_hardware_broadcom_libbt-35a4b4e01be72c5ef1a64ca7c716128ad8127f37.tar.gz android_hardware_broadcom_libbt-35a4b4e01be72c5ef1a64ca7c716128ad8127f37.tar.bz2 android_hardware_broadcom_libbt-35a4b4e01be72c5ef1a64ca7c716128ad8127f37.zip | |
libbt-vendor: add support for samsung bluetooth
Based on codeworkx's patches for brcm_patchram.
Change-Id: Ifefa4f2b98b9186695677dc6f02fcbb63b32e3b7
| -rw-r--r-- | Android.mk | 4 | ||||
| -rwxr-xr-x | src/hardware.c | 60 |
2 files changed, 64 insertions, 0 deletions
@@ -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 bcb4809..4ded806 100755 --- a/src/hardware.c +++ b/src/hardware.c @@ -114,6 +114,9 @@ struct btlock { int cookie; }; #endif +#ifdef SAMSUNG_BLUETOOTH +#define CID_PATH "/data/.cid.info" +#endif /****************************************************************************** ** Local type definitions @@ -427,6 +430,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 @@ -472,9 +515,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) && |
