audio hal: report index channel masks for USB

Report only index channel masks for USB output profiles
supporting more than two channels.

Bug: 120947396
Test: play multichannel audio over USB
Change-Id: I10f6d4751a5a17674d24fb0d074f1dd6a71a06e1
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 2807bcc..517351e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1300,11 +1300,8 @@
     }
     if (is_playback) {
         // start from 2 channels as framework currently doesn't support mono.
-        // TODO: consider only supporting channel index masks beyond stereo here.
-        for (channel_count = FCC_2;
-                channel_count <= channels && num_masks < max_masks;
-                ++channel_count) {
-            supported_channel_masks[num_masks++] = audio_channel_out_mask_from_count(channel_count);
+        if (channels >= FCC_2) {
+            supported_channel_masks[num_masks++] = audio_channel_out_mask_from_count(FCC_2);
         }
         for (channel_count = FCC_2;
                 channel_count <= channels && num_masks < max_masks;
@@ -1318,9 +1315,11 @@
         // audio_channel_in_mask_from_count() does the right conversion to either positional or
         // indexed mask
         for ( ; channel_count <= channels && num_masks < max_masks; channel_count++) {
-            const audio_channel_mask_t mask =
-                    audio_channel_in_mask_from_count(channel_count);
-            supported_channel_masks[num_masks++] = mask;
+            audio_channel_mask_t mask = AUDIO_CHANNEL_NONE;
+            if (channel_count <= FCC_2) {
+                mask = audio_channel_in_mask_from_count(channel_count);
+                supported_channel_masks[num_masks++] = mask;
+            }
             const audio_channel_mask_t index_mask =
                     audio_channel_mask_for_index_assignment_from_count(channel_count);
             if (mask != index_mask && num_masks < max_masks) { // ensure index mask added.