hal: add new case when derive sound device

This adds a new use case which handle issue below:
  1. playback1 is active on device_1 with beckend_1
  2. playback2 comes with combo device_11(related
     device) with backend_1 and device_2 with beckend_2
  3. as device_11 and device_2 are not backend matched,
     this can lead device1 + device_11 + device_2 to be
     active at the same time
  4. later, when playback1 is disabled, then disabling
     device_1 will also disable backend_1, which makes
     playback2 on device_11 breaks

To resolve it, need to return with device_11 to make
sure device_1 is disabled and then enable device_11 for
both playback1 and playback2.

Change-Id: I963318fa2872e889286e54d765d348c313695486
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index f07a3ce..e6469f6 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1246,6 +1246,11 @@
 
   resolution: no need to switch
 
+case 8
+  uc->dev d1 (a1)                B1
+  new_uc->dev d11 (a1), d2 (a2)  B1, B2
+  resolution: compared to case 1, for this case, d1 and d11 are related
+  then need to do the same as case 2 to siwtch to new uc
 */
 static snd_device_t derive_playback_snd_device(void * platform,
                                                struct audio_usecase *uc,
@@ -1293,7 +1298,11 @@
         if (platform_check_backends_match(d3[0], d3[1])) {
             return d2; // case 5
         } else {
-            return d1; // case 1
+            // check if d1 and d3[1] are related
+            if (d1 == d3[1])
+                return d1; // case 1
+            else
+                return d3[1]; // case 8
         }
     } else {
         if (platform_check_backends_match(d1, d2)) {