Merge "hal: Add hdmi-arc support in transcode loopback usecase"
diff --git a/hal/audio_extn/hw_loopback.c b/hal/audio_extn/hw_loopback.c
index 77e5ab2..3d6525a 100644
--- a/hal/audio_extn/hw_loopback.c
+++ b/hal/audio_extn/hw_loopback.c
@@ -186,6 +186,8 @@
     audio_devices_t source_device = loopback_patch->loopback_source.ext.device.type;
     audio_devices_t sink_device = loopback_patch->loopback_sink.ext.device.type;
 
+    source_device &= ~AUDIO_DEVICE_BIT_IN;
+
     if (loopback_patch->patch_handle_id != PATCH_HANDLE_INVALID) {
         ALOGE("%s, Patch handle already exists", __func__);
         return loopback_patch->patch_handle_id;
@@ -195,9 +197,10 @@
         switch (loopback_patch->loopback_source.type) {
             case AUDIO_PORT_TYPE_DEVICE :
                 if ((loopback_patch->loopback_source.config_mask & AUDIO_PORT_CONFIG_FORMAT)) {
-                    if ((loopback_patch->loopback_source.ext.device.type & AUDIO_DEVICE_IN_HDMI) ||
-                        (loopback_patch->loopback_source.ext.device.type & AUDIO_DEVICE_IN_SPDIF) ||
-                        (loopback_patch->loopback_source.ext.device.type & AUDIO_DEVICE_IN_BLUETOOTH_A2DP)) {
+                    if ((source_device & AUDIO_DEVICE_IN_HDMI) ||
+                        (source_device & AUDIO_DEVICE_IN_SPDIF) ||
+                        (source_device & AUDIO_DEVICE_IN_BLUETOOTH_A2DP) ||
+                        (source_device & AUDIO_DEVICE_IN_HDMI_ARC)) {
 
                        switch (loopback_patch->loopback_source.format) {
                            case AUDIO_FORMAT_PCM:
@@ -214,7 +217,7 @@
                               is_source_supported = true;
                            break;
                        }
-                    } else if (loopback_patch->loopback_source.ext.device.type & AUDIO_DEVICE_IN_LINE) {
+                    } else if (source_device & AUDIO_DEVICE_IN_LINE) {
                        is_source_supported = true;
                     }
                 }
@@ -252,7 +255,7 @@
         }
     }
     if (is_source_supported && is_sink_supported) {
-        return source_device | sink_device;
+        return AUDIO_DEVICE_BIT_IN | source_device | sink_device;
     }
     ALOGE("%s, Unsupported source or sink port config", __func__);
     return loopback_patch->patch_handle_id;