diff --git a/hal/audio_extn/passthru.c b/hal/audio_extn/passthru.c
index 24208ab..61575dd 100644
--- a/hal/audio_extn/passthru.c
+++ b/hal/audio_extn/passthru.c
@@ -52,7 +52,8 @@
     AUDIO_FORMAT_E_AC3_JOC,
     AUDIO_FORMAT_DTS,
     AUDIO_FORMAT_DTS_HD,
-    AUDIO_FORMAT_DOLBY_TRUEHD
+    AUDIO_FORMAT_DOLBY_TRUEHD,
+    AUDIO_FORMAT_IEC61937
 };
 
 /*
@@ -269,9 +270,12 @@
     if (audio_extn_passthru_is_passt_supported(adev, out)) {
         ALOGV("%s:PASSTHROUGH", __func__);
         out->compr_config.codec->compr_passthr = PASSTHROUGH;
-    } else if (audio_extn_passthru_is_convert_supported(adev, out)){
+    } else if (audio_extn_passthru_is_convert_supported(adev, out)) {
         ALOGV("%s:PASSTHROUGH CONVERT", __func__);
         out->compr_config.codec->compr_passthr = PASSTHROUGH_CONVERT;
+    } else if (out->format == AUDIO_FORMAT_IEC61937) {
+        ALOGV("%s:PASSTHROUGH IEC61937", __func__);
+        out->compr_config.codec->compr_passthr = PASSTHROUGH_IEC61937;
     } else {
         ALOGV("%s:NO PASSTHROUGH", __func__);
         out->compr_config.codec->compr_passthr = LEGACY_PCM;
diff --git a/hal/audio_extn/qaf.c b/hal/audio_extn/qaf.c
index d0a9a95..bf731f6 100644
--- a/hal/audio_extn/qaf.c
+++ b/hal/audio_extn/qaf.c
@@ -370,7 +370,8 @@
                 case AUDIO_FORMAT_E_AC3:
                 case AUDIO_FORMAT_DTS:
                 case AUDIO_FORMAT_DTS_HD:
-                case AUDIO_FORMAT_DOLBY_TRUEHD: {
+                case AUDIO_FORMAT_DOLBY_TRUEHD:
+                case AUDIO_FORMAT_IEC61937: {
                     is_enabled = true;
                     break;
                 }
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 38cfe35..e22cd1f 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -143,6 +143,7 @@
     STRING_TO_ENUM(AUDIO_FORMAT_DTS),
     STRING_TO_ENUM(AUDIO_FORMAT_DTS_HD),
     STRING_TO_ENUM(AUDIO_FORMAT_DOLBY_TRUEHD),
+    STRING_TO_ENUM(AUDIO_FORMAT_IEC61937),
 #ifdef AUDIO_EXTN_FORMATS_ENABLED
     STRING_TO_ENUM(AUDIO_FORMAT_E_AC3_JOC),
     STRING_TO_ENUM(AUDIO_FORMAT_WMA),
@@ -1266,6 +1267,9 @@
     case AUDIO_FORMAT_DOLBY_TRUEHD:
         id = SND_AUDIOCODEC_TRUEHD;
         break;
+    case AUDIO_FORMAT_IEC61937:
+        id = SND_AUDIOCODEC_IEC61937;
+        break;
     case AUDIO_FORMAT_DSD:
         id = SND_AUDIOCODEC_DSD;
         break;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 0b4ba95..327d328 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -302,6 +302,7 @@
     STRING_TO_ENUM(AUDIO_FORMAT_DOLBY_TRUEHD),
     STRING_TO_ENUM(AUDIO_FORMAT_DTS),
     STRING_TO_ENUM(AUDIO_FORMAT_DTS_HD),
+    STRING_TO_ENUM(AUDIO_FORMAT_IEC61937)
 };
 
 //list of all supported sample rates by HDMI specification.
@@ -528,7 +529,8 @@
         format == AUDIO_FORMAT_VORBIS ||
         format == AUDIO_FORMAT_WMA ||
         format == AUDIO_FORMAT_WMA_PRO ||
-        format == AUDIO_FORMAT_APTX)
+        format == AUDIO_FORMAT_APTX ||
+        format == AUDIO_FORMAT_IEC61937)
            return true;
 
     return false;
@@ -1336,6 +1338,11 @@
         out->supported_formats[i++] = AUDIO_FORMAT_DTS_HD;
     }
 
+    if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_IEC61937)) {
+        ALOGV(":%s HDMI supports IEC61937 format", __func__);
+        out->supported_formats[i++] = AUDIO_FORMAT_IEC61937;
+    }
+
 
     // check sample rate caps
     i = 0;
@@ -4220,6 +4227,7 @@
          */
         if (audio_extn_passthru_is_passthrough_stream(out) ||
                 (config->format == AUDIO_FORMAT_DSD) ||
+                (config->format == AUDIO_FORMAT_IEC61937) ||
                 config->offload_info.has_video ||
                 !(out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD)) {
             check_and_set_gapless_mode(adev, false);
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 39da7e4..3c3c717 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -6340,9 +6340,13 @@
         ALOGV("%s:PCM", __func__);
         format = LPCM;
         break;
+    case AUDIO_FORMAT_IEC61937:
+        ALOGV("%s:IEC61937", __func__);
+        format = 0;
+        break;
     default:
         format =  -1;
-        ALOGE("%s:invalid format:%d", __func__,format);
+        ALOGE("%s:invalid format:0x%x", __func__, audio_format);
         break;
     }
     return format;
@@ -6385,6 +6389,9 @@
     int i, ret;
     unsigned char format_id = platform_map_to_edid_format(format);
 
+    if (format == AUDIO_FORMAT_IEC61937)
+        return true;
+
     if (format_id <= 0) {
         ALOGE("%s invalid edid format mappting for :%x" ,__func__, format);
         return false;
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 76f9d78..28fe62b 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -392,7 +392,10 @@
     LEGACY_PCM = 0,
     PASSTHROUGH,
     PASSTHROUGH_CONVERT,
-    PASSTHROUGH_DSD
+    PASSTHROUGH_DSD,
+    LISTEN,
+    PASSTHROUGH_GEN,
+    PASSTHROUGH_IEC61937
 };
 /*
  * ID for setting mute and lateny on the device side
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index e354deb..0b0dd92 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -6051,9 +6051,13 @@
         ALOGV("%s:PCM", __func__);
         format = LPCM;
         break;
+    case AUDIO_FORMAT_IEC61937:
+        ALOGV("%s:IEC61937", __func__);
+        format = 0;
+        break;
     default:
         format =  -1;
-        ALOGE("%s:invalid format:%d", __func__,format);
+        ALOGE("%s:invalid format: 0x%x", __func__, audio_format);
         break;
     }
     return format;
@@ -6122,6 +6126,9 @@
     int i, ret;
     unsigned char format_id = platform_map_to_edid_format(format);
 
+    if (format == AUDIO_FORMAT_IEC61937)
+        return true;
+
     if (format_id <= 0) {
         ALOGE("%s invalid edid format mappting for :%x" ,__func__, format);
         return false;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index b4dcfe3..ae50ce7 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -494,7 +494,10 @@
     LEGACY_PCM = 0,
     PASSTHROUGH,
     PASSTHROUGH_CONVERT,
-    PASSTHROUGH_DSD
+    PASSTHROUGH_DSD,
+    LISTEN,
+    PASSTHROUGH_GEN,
+    PASSTHROUGH_IEC61937
 };
 /*
  * ID for setting mute and lateny on the device side
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index b1b238f..96f0c5f 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -85,7 +85,8 @@
     FILE_DTS,
     FILE_MP2,
     FILE_APTX,
-    FILE_TRUEHD
+    FILE_TRUEHD,
+    FILE_IEC61937
 };
 
 typedef enum {
@@ -1127,6 +1128,9 @@
         case FILE_TRUEHD:
             stream_info->config.offload_info.format = AUDIO_FORMAT_DOLBY_TRUEHD;
             break;
+        case FILE_IEC61937:
+            stream_info->config.offload_info.format = AUDIO_FORMAT_IEC61937;
+            break;
         default:
            fprintf(log_file, "Does not support given filetype\n");
            fprintf(stderr, "Does not support given filetype\n");
