Merge " config: msmnile_au: Correct VA audiopolicy config path"
diff --git a/configs/audio_vendor_product.mk b/configs/audio_vendor_product.mk
index 7bf600b..e0f394c 100644
--- a/configs/audio_vendor_product.mk
+++ b/configs/audio_vendor_product.mk
@@ -169,7 +169,7 @@
 MM_AUDIO += libsynth
 MM_AUDIO += libicc
 
-ifneq ( ,$(filter T Tiramisu 13, $(PLATFORM_VERSION)))
+ifneq ( ,$(filter T Tiramisu 13 U UpsideDownCake 14, $(PLATFORM_VERSION)))
 MM_AUDIO += vendor.qti.hardware.automotive.audiocontrol-service
 else
 MM_AUDIO += android.hardware.automotive.audiocontrol-service.example
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index 06f5fa7..226279c 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -117,7 +117,7 @@
 AUDIO_FEATURE_ENABLED_AUTO_HAL := true
 AUDIO_FEATURE_ENABLED_EXT_HW_PLUGIN := true
 AUDIO_FEATURE_ENABLED_AUDIO_CONTROL_HAL := true
-ifneq ( ,$(filter T Tiramisu 13, $(PLATFORM_VERSION)))
+ifneq ( ,$(filter T Tiramisu 13 U UpsideDownCake 14, $(PLATFORM_VERSION)))
 AUDIO_FEATURE_ENABLED_AUDIO_CONTROL_HAL_AIDL := true
 endif
 ifneq ($(ENABLE_HYP),true)
@@ -137,7 +137,7 @@
 endif
 AUDIO_FEATURE_ENABLED_FM_TUNER_EXT := true
 AUDIO_FEATURE_ENABLED_ICC := true
-ifneq ( ,$(filter S 12 T 13, $(PLATFORM_VERSION)))
+ifneq ( ,$(filter T Tiramisu 13 U UpsideDownCake 14, $(PLATFORM_VERSION)))
 AUDIO_FEATURE_ENABLED_POWER_POLICY := true
 endif
 ifneq ( ,$(filter msmnile_gvmq msmnile_au msmnile_au_km4 msmnile_au_ar, $(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)$(TARGET_BOARD_DERIVATIVE_SUFFIX)))
@@ -150,7 +150,7 @@
 DEVICE_PACKAGE_OVERLAYS += vendor/qcom/opensource/audio-hal/primary-hal/configs/common/overlay
 endif
 
-ifneq ( ,$(filter T 13, $(PLATFORM_VERSION)))
+ifneq ( ,$(filter T Tiramisu 13 U UpsideDownCake 14, $(PLATFORM_VERSION)))
 ifneq ( ,$(filter msmnile_au msmnile_au_km4 msmnile_au_ar, $(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX))$(TARGET_BOARD_DERIVATIVE_SUFFIX))
 AUDIO_FEATURE_MMAP_AAUDIO = true
 endif
diff --git a/hal/audio_extn/sndmonitor.c b/hal/audio_extn/sndmonitor.c
index 5e39d37..a0bd6d3 100644
--- a/hal/audio_extn/sndmonitor.c
+++ b/hal/audio_extn/sndmonitor.c
@@ -55,6 +55,7 @@
 #include <log/log.h>
 #include <cutils/str_parms.h>
 #include <ctype.h>
+#include <linux/version.h>
 
 #include "audio_hw.h"
 #include "audio_extn.h"
@@ -158,17 +159,20 @@
     s->fd = fd; // dup?
 
     char *state = read_state(fd);
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
     if (!state) {
         free(s);
         return -1;
     }
     bool online = state && !strcmp(state, "ONLINE");
 
-    ALOGV("card %d initial state %s %d", card, state, online);
-
     if (state)
         free(state);
+#else
+    bool online = atoi(state);
+#endif
+
+    ALOGV("card %d initial state %s %d", card, state, online);
 
     s->status = online ? CARD_STATUS_ONLINE : CARD_STATUS_OFFLINE;
     list_add_tail(&sndmonitor.cards, &s->node);
@@ -234,8 +238,11 @@
             ALOGW("Skip over non-ADSP snd card %s", card_id);
             continue;
         }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
         snprintf(path, sizeof(path), "/proc/asound/card%s/state", ptr);
+#else
+        snprintf(path, sizeof(path), "/sys/kernel/snd_card/card_state");
+#endif
         ALOGV("Opening sound card state : %s", path);
 
         fd = open(path, O_RDONLY);
@@ -446,18 +453,26 @@
     char rd_buf[9]={0};
     card_status_t status;
 
-    if (read(s->fd, rd_buf, 8) <= 0)
+    if (read(s->fd, rd_buf, 8) < 0) {
+        ALOGE("read card state error");
         return -1;
+    }
 
     rd_buf[8] = '\0';
     lseek(s->fd, 0, SEEK_SET);
 
     ALOGV("card num %d, new state %s", s->card, rd_buf);
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
     if (strstr(rd_buf, "OFFLINE"))
         status = CARD_STATUS_OFFLINE;
     else if (strstr(rd_buf, "ONLINE"))
         status = CARD_STATUS_ONLINE;
+#else
+    if (!atoi(rd_buf))
+        status = CARD_STATUS_OFFLINE;
+    else if (atoi(rd_buf))
+        status = CARD_STATUS_ONLINE;
+#endif
     else {
         ALOGE("unknown state");
         return 0;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 3823ed0..2822751 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -8462,7 +8462,8 @@
         out->config.period_size = HDMI_MULTI_PERIOD_BYTES / (out->config.channels *
                                                          audio_bytes_per_sample(config->format));
         out->config.format = pcm_format_from_audio_format(out->format);
-    } else if (compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_BUS)) {
+    } else if ((!(out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD)) &&
+                compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_BUS)) {
             ret = audio_extn_auto_hal_open_output_stream(out);
             if (ret) {
                 ALOGE("%s: Failed to open output stream for bus device", __func__);