audio: 8916 & 8974 platform convergence

Platform convergence specific to msm8937,
and msm8953

Change-Id: Iad9e3b53b7b2f78d3bf8b0ff9d937f3d053b8f62
(cherry picked from commit e6e19e6e26562f14fb97fb0b8ddc05483ad59b21)
diff --git a/hal/Android.mk b/hal/Android.mk
index 553d558..d9d500c 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -8,7 +8,7 @@
 
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter msm8974 msm8226 msm8084 msm8610 apq8084 msm8994 msm8992 msm8996 msm8998 apq8098_latv sdm845 sdm710 qcs605 sdmshrike msmnile kona lahaina sdm660 msm8937 $(MSMSTEPPE) $(TRINKET) lito atoll bengal,$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter msm8974 msm8226 msm8084 msm8610 apq8084 msm8994 msm8992 msm8996 msm8998 apq8098_latv sdm845 sdm710 qcs605 sdmshrike msmnile kona lahaina sdm660 msm8937 msm8953 $(MSMSTEPPE) $(TRINKET) lito atoll bengal,$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM = msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -106,6 +106,10 @@
   LOCAL_CFLAGS := -DPLATFORM_MSM8937
   LOCAL_CFLAGS += -DMAX_TARGET_SPECIFIC_CHANNEL_CNT="8"
 endif
+ifneq ($(filter msm8953,$(TARGET_BOARD_PLATFORM)),)
+  LOCAL_CFLAGS := -DPLATFORM_MSM8953
+  LOCAL_CFLAGS += -DMAX_TARGET_SPECIFIC_CHANNEL_CNT="8"
+endif
 endif
 
 ifeq ($(TARGET_BOARD_AUTO),true)
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 9384136..36eb6e9 100644
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -67,7 +67,7 @@
 
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 qcs605 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 qcs605 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -130,7 +130,7 @@
 
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -197,7 +197,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
 endif
@@ -253,7 +253,7 @@
 #--------------------------------------------
 include $(CLEAR_VARS)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
 endif
@@ -312,7 +312,7 @@
 
 include $(CLEAR_VARS)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
 endif
@@ -377,7 +377,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -442,7 +442,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -505,7 +505,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -573,7 +573,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -645,7 +645,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -718,7 +718,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito bengal atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -781,7 +781,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina sdm660 msm8937 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina sdm660 msm8937 msm8953 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM = msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -843,7 +843,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina sdm660 msm8937 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina sdm660 msm8937 msm8953 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM = msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -908,7 +908,7 @@
 PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
 AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
 
-ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lahaina lito atoll sdm660 msm8937 msm8953 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
   # B-family platform uses msm8974 code base
   AUDIO_PLATFORM := msm8974
   MULTIPLE_HW_VARIANTS_ENABLED := true
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 2be4113..21b36f0 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -1397,20 +1397,27 @@
 {
     int err;
 
-    err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_1,
-                            value, len);
-    if (err >= 0) {
-        tz_names.spkr_1_name = strdup(value);
-        str_parms_del(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_1);
-    }
+    if (property_get_bool("vendor.audio.read.wsatz.type", false)) {
+        if ((!tz_names.spkr_2_name) && (strstr(value, "wsa")))
+            tz_names.spkr_2_name = strdup(value);
+        else if ((!tz_names.spkr_1_name) && (strstr(value, "wsa")))
+            tz_names.spkr_1_name = strdup(value);
+    } else {
 
-    err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_2,
+        err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_1,
                             value, len);
-    if (err >= 0) {
-        tz_names.spkr_2_name = strdup(value);
-        str_parms_del(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_2);
-    }
+        if (err >= 0) {
+            tz_names.spkr_1_name = strdup(value);
+            str_parms_del(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_1);
+        }
 
+        err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_2,
+                            value, len);
+        if (err >= 0) {
+            tz_names.spkr_2_name = strdup(value);
+            str_parms_del(parms, AUDIO_PARAMETER_KEY_SPKR_TZ_2);
+        }
+    }
     ALOGV("%s: tz1: %s, tz2: %s", __func__,
           tz_names.spkr_1_name, tz_names.spkr_2_name);
 }
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index bcc5a58..72b8103 100644
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -763,6 +763,33 @@
     }
 }
 
+static void update_hardware_info_msm8937(struct hardware_info *hw_info, const char *snd_card_name)
+{
+    if (!strcmp(snd_card_name, "msm8937-snd-card-mtp")) {
+        strlcpy(hw_info->name, "msm8937", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8937-tasha-snd-card")) {
+        strlcpy(hw_info->name, "msm8937", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8937-tashalite-snd-card")) {
+        strlcpy(hw_info->name, "msm8937", sizeof(hw_info->name));
+    }
+}
+
+static void update_hardware_info_msm8953(struct hardware_info *hw_info, const char *snd_card_name)
+{
+    if (!strcmp(snd_card_name, "msm8953-snd-card-mtp")) {
+        strlcpy(hw_info->name, "msm8953", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8953-sku3-tasha-snd-card")) {
+        strlcpy(hw_info->name, "msm8953", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8953-tasha-snd-card")) {
+        strlcpy(hw_info->name, "msm8953", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8953-tashalite-snd-card")) {
+        strlcpy(hw_info->name, "msm8953", sizeof(hw_info->name));
+    } else if (!strcmp(snd_card_name, "msm8953-sku4-snd-card")) {
+        hw_info->is_stereo_spkr = false;
+        strlcpy(hw_info->name, "msm8953", sizeof(hw_info->name));
+    }
+}
+
 void *hw_info_init(const char *snd_card_name)
 {
     struct hardware_info *hw_info;
@@ -832,6 +859,12 @@
     } else if(strstr(snd_card_name, "sdm439")) {
         ALOGV("SDM439 - variant soundcard");
         update_hardware_info_sdm439(hw_info, snd_card_name);
+    } else if (strstr(snd_card_name, "msm8937")) {
+        ALOGV("MSM8937 - variant soundcard");
+        update_hardware_info_msm8937(hw_info, snd_card_name);
+    } else if (strstr(snd_card_name, "msm8953")) {
+        ALOGV("MSM8953 - variant soundcard");
+        update_hardware_info_msm8953(hw_info, snd_card_name);
     } else {
         ALOGE("%s: Unsupported target %s:",__func__, snd_card_name);
         free(hw_info);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index c7e62ce..d27e5af 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1444,7 +1444,8 @@
        {AUDIO_DEVICE_NONE                               ,      -1},
        {AUDIO_DEVICE_OUT_DEFAULT                        ,      -1},
 };
-#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
+#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+      defined (PLATFORM_MSM8953)
 static int (*msm_device_to_be_id)[];
 #else
 static int msm_device_to_be_id [][NO_COLS] = {
@@ -1452,7 +1453,8 @@
 };
 #endif
 
-#if defined (PLATFORM_MSMFALCON)  || defined (PLATFORM_MSM8937)
+#if defined (PLATFORM_MSMFALCON)  || defined (PLATFORM_MSM8937) || \
+    defined (PLATFORM_MSM8953)
 static int msm_device_to_be_id_internal_codec [][NO_COLS] = {
        {AUDIO_DEVICE_OUT_EARPIECE                       ,       34},
        {AUDIO_DEVICE_OUT_SPEAKER                        ,       34},
@@ -1506,7 +1508,8 @@
 };
 #endif
 
-#if defined (PLATFORM_MSMFALCON)  || defined (PLATFORM_MSM8937)
+#if defined (PLATFORM_MSMFALCON)  || defined (PLATFORM_MSM8937) || \
+    defined (PLATFORM_MSM8953)
 static int msm_be_id_array_len;
 #else
 static int msm_be_id_array_len  =
@@ -1717,7 +1720,13 @@
          !strncmp(snd_card_name, "bengal-idp-snd-card",
                    sizeof("bengal-idp-snd-card")) ||
          !strncmp(snd_card_name, "bengal-qrd-snd-card",
-                   sizeof("bengal-qrd-snd-card"))) {
+                   sizeof("bengal-qrd-snd-card")) ||
+         !strncmp(snd_card_name, "msm8937-snd-card-mtp",
+                   sizeof("msm8937-snd-card-mtp")) ||
+         !strncmp(snd_card_name, "msm8953-snd-card-mtp",
+                   sizeof("msm8953-snd-card-mtp")) ||
+         !strncmp(snd_card_name, "msm8953-sku4-snd-card",
+                   sizeof("msm8953-sku4-snd-card"))) {
          ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
          my_data->is_internal_codec = true;
          my_data->is_slimbus_interface = false;
@@ -2761,6 +2770,11 @@
             ALOGD("Opening %s\n", name);
             read_line_from_file(name, buf, sizeof(buf));
             if (strstr(buf, file)) {
+                if (property_get_bool("vendor.audio.read.wsatz.type", false)) {
+                    struct str_parms *parms = NULL;
+                    buf[strlen(buf) - 1] = '\0';
+                    audio_extn_spkr_prot_set_parameters(parms, buf, 0);
+                }
                 wsa_count++;
                 /*We support max only two WSA speakers*/
                 if (wsa_count == 2)
@@ -2783,7 +2797,11 @@
                 if (((!strncmp(snd_card_name, "sdm439-sku1-snd-card",
                     sizeof("sdm439-sku1-snd-card"))) ||
                 (!strncmp(snd_card_name, "sdm439-snd-card-mtp",
-                    sizeof("sdm439-snd-card-mtp"))))) {
+                    sizeof("sdm439-snd-card-mtp"))) ||
+                (!strncmp(snd_card_name, "msm8953-snd-card-mtp",
+                    sizeof("msm8953-snd-card-mtp"))) ||
+                (!strncmp(snd_card_name, "msm8953-sku4-snd-card",
+                    sizeof("msm8953-sku4-snd-card"))))) {
                 *is_wsa_combo_supported = true;
             }
         }
@@ -3062,7 +3080,8 @@
         }
     }
 
-#if defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
+#if defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+    defined (PLATFORM_MSM8953)
          if (my_data->is_internal_codec == true) {
             msm_device_to_be_id = msm_device_to_be_id_internal_codec;
             msm_be_id_array_len  =
@@ -7434,7 +7453,9 @@
     cal.app_type = DEFAULT_APP_TYPE_TX_PATH;
     cal.topo_id = fluence_mmsecns_config.topology_id;
     cal.module_id = fluence_mmsecns_config.module_id;
+#ifdef INSTANCE_ID_ENABLED
     cal.instance_id = fluence_mmsecns_config.instance_id;
+#endif
     cal.param_id = fluence_mmsecns_config.param_id;
 
     if (my_data->acdb_set_audio_cal) {
@@ -7492,7 +7513,9 @@
     cal.app_type = DEFAULT_APP_TYPE_TX_PATH;
     cal.topo_id = fluence_mmsecns_config.topology_id;
     cal.module_id = fluence_mmsecns_config.module_id;
+#ifdef INSTANCE_ID_ENABLED
     cal.instance_id = fluence_mmsecns_config.instance_id;
+#endif
     cal.param_id = fluence_mmsecns_config.param_id;
 
     dptr = (uint8_t*)calloc(param_len, sizeof(uint8_t));
@@ -11006,7 +11029,20 @@
 
 int platform_spkr_prot_is_wsa_analog_mode(void *adev __unused)
 {
-    return 0;
+   struct audio_device *adev_h = adev;
+   const char *snd_card_name;
+
+   /*
+    * wsa analog mode is decided based on the sound card name
+    */
+   snd_card_name = mixer_get_name(adev_h->mixer);
+   if ((!strcmp(snd_card_name, "msm8953-snd-card-mtp")) ||
+       (!strcmp(snd_card_name, "msm8953-sku4-snd-card")) ||
+       (!strcmp(snd_card_name, "sdm439-sku1-snd-card")) ||
+       (!strcmp(snd_card_name, "sdm439-snd-card-mtp")))
+       return 1;
+   else
+       return 0;
 }
 
 /*
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 7bb699c..be138c0 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -394,7 +394,8 @@
 #define HIFI_BUFFER_OUTPUT_PERIOD_COUNT 2
 
 /* Used in calculating fragment size for pcm offload */
-#ifdef PLATFORM_MSMFALCON
+#if defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+    defined (PLATFORM_MSM8953)
 #define PCM_OFFLOAD_BUFFER_DURATION 40 /* 40 millisecs */
 #else
 #define PCM_OFFLOAD_BUFFER_DURATION 80 /* 80 millisecs */
@@ -478,7 +479,8 @@
     defined (PLATFORM_TRINKET) || defined (PLATFORM_LITO) || \
     defined (PLATFORM_ATOLL) || defined (PLATFORM_BENGAL)
 #define PLAYBACK_OFFLOAD_DEVICE2 17
-#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
+#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+      defined (PLATFORM_MSM8953)
 #define PLAYBACK_OFFLOAD_DEVICE2 24
 #endif
 
@@ -490,7 +492,7 @@
     defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || \
     defined (PLATFORM_LITO) || defined (PLATFORM_MSMFALCON) || \
     defined (PLATFORM_MSM8937) || defined (PLATFORM_ATOLL) || \
-    defined (PLATFORM_BENGAL)
+    defined (PLATFORM_BENGAL) || defined (PLATFORM_MSM8953)
 #define PLAYBACK_OFFLOAD_DEVICE3 18
 #define PLAYBACK_OFFLOAD_DEVICE4 34
 #define PLAYBACK_OFFLOAD_DEVICE5 35
@@ -520,7 +522,8 @@
 #ifdef PLATFORM_MSM8610
 #define LOWLATENCY_PCM_DEVICE 12
 #define EC_REF_RX "SEC_I2S_RX"
-#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
+#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+      defined (PLATFORM_MSM8953)
 #define LOWLATENCY_PCM_DEVICE 12
 #define EC_REF_RX "I2S_RX"
 #define MMAP_PLAYBACK_PCM_DEVICE 2
@@ -576,7 +579,8 @@
 #define VOLTE_CALL_PCM_DEVICE 15
 #define QCHAT_CALL_PCM_DEVICE 37
 #define VOWLAN_CALL_PCM_DEVICE 16
-#elif PLATFORM_MSMFALCON
+#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+      defined (PLATFORM_MSM8953)
 #define VOICE_CALL_PCM_DEVICE 2
 #define VOICE2_CALL_PCM_DEVICE 13
 #define VOLTE_CALL_PCM_DEVICE 15
@@ -623,7 +627,8 @@
 #define HFP_SCO_RX 29
 #define HFP_ASM_RX_TX 36
 #define HFP_EXT_EC_REF_TX 1
-#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
+#elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937) || \
+      defined (PLATFORM_MSM8953)
 #define HFP_SCO_RX 17
 #define HFP_ASM_RX_TX 18
 #else