audio: fix app type's acdb transfer to kernel driver

Bug: 80403838
Test: manual audio test

Change-Id: I7da41f866651026c3153cde5b9f93b5969227adc
Signed-off-by: juyuchen <juyuchen@google.com>
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 1751a30..73de0ab 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -345,6 +345,8 @@
     int sample_rate;
     int app_type;
     int acdb_dev_id;
+    int new_snd_device[2] = {0};
+    int i = 0, num_devices = 1;
     size_t app_type_cfg[MAX_LENGTH_MIXER_CONTROL_IN_INT] = {0};
     char mixer_ctl_name[MAX_LENGTH_MIXER_CONTROL_IN_INT] = {0};
     int pcm_device_id;
@@ -379,18 +381,33 @@
         return -1;
     }
 
-    acdb_dev_id = derive_acdb_dev_id(adev, usecase);
-    if (acdb_dev_id <= 0) {
-        ALOGE("%s: Couldn't get the acdb dev id", __func__);
-        return -1;
-    }
+    if (usecase->type == PCM_PLAYBACK) {
+        if (platform_can_split_snd_device(usecase->out_snd_device,
+                                          &num_devices, new_snd_device) < 0)
+            new_snd_device[0] = usecase->out_snd_device;
+
+    } else if (usecase->type == PCM_CAPTURE)
+        new_snd_device[0] = usecase->in_snd_device;
 
     pcm_device_id = platform_get_pcm_device_id(usecase->id, usecase->type);
-    set_stream_app_type_mixer_ctrl(adev, pcm_device_id, app_type, acdb_dev_id,
-                                   sample_rate,
-                                   usecase->type,
-                                   usecase->type == PCM_PLAYBACK ? usecase->out_snd_device :
-                                                                   usecase->in_snd_device);
+
+    for (i = 0; i < num_devices; i++) {
+        acdb_dev_id = platform_get_snd_device_acdb_id(new_snd_device[i]);
+
+        if (acdb_dev_id < 0) {
+            ALOGE("%s: Could not find acdb id for device(%d)",
+                  __func__, new_snd_device[i]);
+            return -EINVAL;
+        }
+        ALOGV("%s: sending app type for snd_device(%d) acdb_id(%d) i %d",
+              __func__, new_snd_device[i], acdb_dev_id, i);
+
+        set_stream_app_type_mixer_ctrl(adev, pcm_device_id, app_type, acdb_dev_id,
+                                       sample_rate,
+                                       usecase->type,
+                                       new_snd_device[i]);
+    }
+
     return 0;
 }