diff --git a/configs/audio/audio_io_policy.conf b/configs/audio/audio_io_policy.conf
new file mode 100644
index 0000000..b1169dd
--- /dev/null
+++ b/configs/audio/audio_io_policy.conf
@@ -0,0 +1,156 @@
+# List of profiles for the output device session where stream is routed.
+# A stream opened with the inputs attributes which match the "flags" and
+# "formats" as specified in the profile is routed to a device at
+# sample rate specified under "sampling_rates" and bit width under
+# "bit_width" and the topology extracted from the acdb data against
+# the "app_type".
+#
+# the flags and formats are specified using the strings corresponding to
+# enums in audio.h and audio_policy.h. They are concatenated with "|"
+# without space or "\n".
+# the flags and formats should match the ones in "audio_policy.conf"
+
+outputs {
+ default {
+ flags AUDIO_OUTPUT_FLAG_PRIMARY
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 48000
+ bit_width 16
+ app_type 69937
+ }
+#Vincent.chen@MULTIMEDIA.AUDIODRIVER.HAL, 2022/03/09, Add for support 24bit playback
+ default_24bit {
+ flags AUDIO_OUTPUT_FLAG_PRIMARY
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED
+ sampling_rates 48000
+ bit_width 24
+ app_type 69937
+ }
+ proaudio {
+ flags AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_RAW
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 48000
+ bit_width 16
+ app_type 69943
+ }
+ voip_rx {
+ flags AUDIO_OUTPUT_FLAG_VOIP_RX|AUDIO_OUTPUT_FLAG_DIRECT
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|32000|48000
+ bit_width 16
+ app_type 69946
+ }
+ deep_buffer {
+ flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 48000
+ bit_width 16
+ app_type 69936
+ }
+#Vincent.chen@MULTIMEDIA.AUDIODRIVER.HAL, 2022/03/09, Add for support 24bit playback
+ deep_buffer_24bit {
+ flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED
+ sampling_rates 48000
+ bit_width 24
+ app_type 69936
+ }
+ direct_pcm_16 {
+ flags AUDIO_OUTPUT_FLAG_DIRECT
+ formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 16
+ app_type 69936
+ }
+ direct_pcm_24 {
+ flags AUDIO_OUTPUT_FLAG_DIRECT
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
+ sampling_rates 44100|48000|88200|96000|176400|192000|352800|384000
+ bit_width 24
+ app_type 69940
+ }
+ direct_pcm_32 {
+ flags AUDIO_OUTPUT_FLAG_DIRECT
+ formats AUDIO_FORMAT_PCM_32_BIT
+ sampling_rates 44100|48000|88200|96000|176400|192000|352800|384000
+ bit_width 32
+ app_type 69942
+ }
+ compress_passthrough {
+ flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING|AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH
+ formats AUDIO_FORMAT_DTS|AUDIO_FORMAT_DTS_HD|AUDIO_FORMAT_DSD
+ sampling_rates 32000|44100|48000|88200|96000|176400|192000|352800
+ bit_width 16
+ app_type 69941
+ }
+ compress_offload_16 {
+ flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
+ formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_16_BIT_OFFLOAD|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2|AUDIO_FORMAT_AAC_LATM_LC|AUDIO_FORMAT_AAC_LATM_HE_V1|AUDIO_FORMAT_AAC_LATM_HE_V2
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 16
+ app_type 69936
+ }
+ compress_offload_24 {
+ flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
+ formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2|AUDIO_FORMAT_AAC_LATM_LC|AUDIO_FORMAT_AAC_LATM_HE_V1|AUDIO_FORMAT_AAC_LATM_HE_V2
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 24
+ app_type 69940
+ }
+}
+
+inputs {
+ record_16bit {
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|32000|44100|48000|88200|96000|176400|192000
+ bit_width 16
+ app_type 69938
+ }
+ record_24bit {
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_24_BIT
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 24
+ app_type 69948
+ }
+ record_32bit {
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_FLOAT
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 32
+ app_type 69949
+ }
+ record_compress_16 {
+ flags AUDIO_INPUT_FLAG_COMPRESS
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|32000|44100|48000|88200|96000|176400|192000
+ bit_width 16
+ app_type 69938
+ }
+ record_compress_24 {
+ flags AUDIO_INPUT_FLAG_COMPRESS
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_24_BIT
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 24
+ app_type 69948
+ }
+ record_compress_32 {
+ flags AUDIO_INPUT_FLAG_COMPRESS
+ formats AUDIO_FORMAT_PCM_32_BIT|AUDIO_FORMAT_PCM_FLOAT
+ sampling_rates 44100|48000|88200|96000|176400|192000
+ bit_width 32
+ app_type 69949
+ }
+ voip_tx {
+ flags AUDIO_INPUT_FLAG_VOIP_TX
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 8000|16000|32000|48000
+ bit_width 16
+ app_type 69946
+ }
+ low_latency_voip_tx {
+ flags AUDIO_INPUT_FLAG_FAST|AUDIO_INPUT_FLAG_VOIP_TX
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 48000
+ bit_width 16
+ app_type
+ }
+}
diff --git a/configs/audio/audio_platform_info.xml b/configs/audio/audio_platform_info.xml
index ea1c845..9bfd743 100644
--- a/configs/audio/audio_platform_info.xml
+++ b/configs/audio/audio_platform_info.xml
@@ -116,7 +116,7 @@
-
+
@@ -143,6 +143,7 @@
+
diff --git a/device.mk b/device.mk
index 88beb77..14ee1c3 100644
--- a/device.mk
+++ b/device.mk
@@ -67,13 +67,13 @@ PRODUCT_PACKAGES += \
AUDIO_HAL_DIR := hardware/qcom-caf/sm8350/audio
PRODUCT_COPY_FILES += \
- $(AUDIO_HAL_DIR)/configs/common/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
$(AUDIO_HAL_DIR)/configs/holi/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
- $(AUDIO_HAL_DIR)/configs/holi/audio_io_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_io_policy.conf \
$(AUDIO_HAL_DIR)/configs/holi/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec.xml \
$(AUDIO_HAL_DIR)/configs/holi/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
$(AUDIO_HAL_DIR)/configs/holi/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
+ $(LOCAL_PATH)/configs/audio/audio_io_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_io_policy.conf \
$(LOCAL_PATH)/configs/audio/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
+ $(LOCAL_PATH)/configs/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
$(LOCAL_PATH)/configs/audio/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_policy_configuration.xml \
$(LOCAL_PATH)/configs/audio/bluetooth_hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_hearing_aid_audio_policy_configuration.xml \
$(LOCAL_PATH)/configs/audio/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \