Merge "config: enable AHAL extension feature"
diff --git a/Android.mk b/Android.mk
index 29fc8c6..6aa0e8d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,5 +1,5 @@
ifneq ($(AUDIO_USE_STUB_HAL), true)
-ifneq ($(filter mpq8092 msm8960 msm8226 msm8x26 msm8610 msm8974 msm8x74 apq8084 msm8916 msm8994 msm8992 msm8909 msm8996 msm8952 msm8937 thorium msm8953 msmgold msm8998 sdm660 sdm845 sdm710 apq8098_latv qcs605 msmnile $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter mpq8092 msm8960 msm8226 msm8x26 msm8610 msm8974 msm8x74 apq8084 msm8916 msm8994 msm8992 msm8909 msm8996 msm8952 msm8937 thorium msm8953 msmgold msm8998 sdm660 sdm845 sdm710 apq8098_latv qcs605 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
MY_LOCAL_PATH := $(call my-dir)
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index bc1782e..3bd3f30 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -39,6 +39,7 @@
USE_XML_AUDIO_POLICY_CONF := 1
AUDIO_FEATURE_ENABLED_DLKM := true
BOARD_SUPPORTS_SOUND_TRIGGER := true
+BOARD_SUPPORTS_GCS := false
AUDIO_FEATURE_ENABLED_INSTANCE_ID := true
AUDIO_USE_DEEP_AS_PRIMARY_OUTPUT := false
AUDIO_FEATURE_ENABLED_VBAT_MONITOR := true
diff --git a/configs/msmnile/audio_io_policy.conf b/configs/msmnile/audio_io_policy.conf
index bac3ec1..f0ec913 100644
--- a/configs/msmnile/audio_io_policy.conf
+++ b/configs/msmnile/audio_io_policy.conf
@@ -84,16 +84,29 @@
}
inputs {
+ primary {
+ 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 69938
+ 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 69938
+ app_type 69949
}
-}
+ record_unprocessed {
+ profile record_unprocessed
+ formats AUDIO_FORMAT_PCM_24_BIT_PACKED
+ sampling_rates 16000|48000
+ bit_width 24
+ app_type 69942
+ }
+}
\ No newline at end of file
diff --git a/configs/msmnile/audio_platform_info.xml b/configs/msmnile/audio_platform_info.xml
index ac2aa50..df2f46d 100644
--- a/configs/msmnile/audio_platform_info.xml
+++ b/configs/msmnile/audio_platform_info.xml
@@ -101,6 +101,7 @@
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="33" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="40" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="27" />
+ <usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="41" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsatz.13"/>
@@ -144,6 +145,12 @@
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="SLIMBUS_0_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index 381264c..a684cc0 100644
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -59,9 +59,11 @@
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_4_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="MultiMedia5 Mixer SLIM_0_TX" value="0" />
<ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
<ctl name="MultiMedia5 Mixer SLIM_8_TX" value="0" />
@@ -75,6 +77,9 @@
<ctl name="MultiMedia10 Mixer SLIM_0_TX" value="0" />
<ctl name="MultiMedia10 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_0_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_4_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia1" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia2" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia3" value="0" />
@@ -91,6 +96,7 @@
<ctl name="DISPLAY_PORT Mixer MultiMedia14" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia15" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia16" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia17" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
@@ -139,6 +145,8 @@
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_2_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia17" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia3" value="0" />
@@ -153,11 +161,13 @@
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia5 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="SLIM_2_RX Format" value="UNPACKED" />
<ctl name="SLIM_2_RX SampleRate" value="KHZ_48" />
@@ -205,7 +215,9 @@
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="MultiMedia1 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer AFE_PCM_TX" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="0" />
<!-- usb headset end -->
<!-- fm -->
@@ -216,6 +228,7 @@
<ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<ctl name="MultiMedia1 Mixer SLIM_8_TX" value="0" />
<ctl name="MultiMedia2 Mixer SLIM_8_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_8_TX" value="0" />
<!-- fm end -->
<!-- Multimode Voice1 -->
@@ -266,6 +279,8 @@
<ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia17 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia17 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
<!-- Incall Music -->
@@ -290,7 +305,9 @@
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia6" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia17" value="0" />
<ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="0" />
<!-- audio record compress-->
<ctl name="MultiMedia8 Mixer SLIM_0_TX" value="0" />
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
@@ -1366,6 +1383,10 @@
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="audio-record headset-mic">
+ <ctl name="MultiMedia1 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="audio-record usb-headset-mic">
<ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -1400,6 +1421,45 @@
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="audio-record-compress2">
+ <ctl name="MultiMedia17 Mixer SLIM_0_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 headset-mic">
+ <ctl name="MultiMedia17 Mixer SLIM_1_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 usb-headset-mic">
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco">
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-compress2 bt-sco" />
+ </path>
+
+ <path name="audio-record-compress2">
+ <ctl name="MultiMedia17 Mixer SLIM_0_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 usb-headset-mic">
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco">
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-compress2 bt-sco" />
+ </path>
+
+
<path name="low-latency-record">
<ctl name="MultiMedia8 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1782,12 +1842,12 @@
</path>
<path name="amic2">
- <ctl name="AIF1_CAP Mixer SLIM TX0" value="1"/>
- <ctl name="SLIM_0_TX Channels" value="One" />
- <ctl name="CDC_IF TX0 MUX" value="DEC0" />
- <ctl name="ADC MUX0" value="AMIC" />
- <ctl name="AMIC MUX0" value="ADC2" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="AIF3_CAP Mixer SLIM TX1" value="1"/>
+ <ctl name="SLIM_1_TX Channels" value="One" />
+ <ctl name="CDC_IF TX1 MUX" value="DEC1" />
+ <ctl name="ADC MUX1" value="AMIC" />
+ <ctl name="AMIC MUX1" value="ADC2" />
+ <ctl name="IIR0 INP0 MUX" value="DEC1" />
</path>
<!-- For Tavil, DMIC numbered from 0 to 5 -->
diff --git a/configs/msmnile/msmnile.mk b/configs/msmnile/msmnile.mk
index 10fa876..2a0e69c 100644
--- a/configs/msmnile/msmnile.mk
+++ b/configs/msmnile/msmnile.mk
@@ -14,6 +14,8 @@
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
USE_CUSTOM_AUDIO_POLICY := 1
AUDIO_FEATURE_ENABLED_COMPRESS_CAPTURE := false
+AUDIO_FEATURE_ENABLED_COMPRESS_INPUT := true
+AUDIO_FEATURE_ENABLED_CONCURRENT_CAPTURE := true
AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := false
AUDIO_FEATURE_ENABLED_DYNAMIC_ECNS := true
AUDIO_FEATURE_ENABLED_EXTN_FORMATS := true
diff --git a/configs/qssi/qssi.mk b/configs/qssi/qssi.mk
new file mode 100644
index 0000000..cc52254
--- /dev/null
+++ b/configs/qssi/qssi.mk
@@ -0,0 +1,124 @@
+#BOARD_USES_GENERIC_AUDIO := true
+#
+#AUDIO_FEATURE_FLAGS
+BOARD_USES_ALSA_AUDIO := true
+TARGET_USES_AOSP_FOR_AUDIO := false
+
+ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
+USE_CUSTOM_AUDIO_POLICY := 1
+AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := false
+AUDIO_FEATURE_ENABLED_EXTN_FORMATS := true
+AUDIO_FEATURE_ENABLED_EXTN_FLAC_DECODER := true
+AUDIO_FEATURE_ENABLED_EXTN_RESAMPLER := true
+AUDIO_FEATURE_ENABLED_FM_POWER_OPT := true
+AUDIO_FEATURE_ENABLED_HDMI_SPK := true
+AUDIO_FEATURE_ENABLED_PCM_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_PCM_OFFLOAD_24 := true
+AUDIO_FEATURE_ENABLED_FLAC_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_VORBIS_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_WMA_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_ALAC_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_APE_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_AAC_ADTS_OFFLOAD := true
+AUDIO_FEATURE_ENABLED_PROXY_DEVICE := true
+AUDIO_FEATURE_ENABLED_3D_AUDIO := true
+DOLBY_ENABLE := false
+endif
+
+USE_XML_AUDIO_POLICY_CONF := 1
+BOARD_SUPPORTS_SOUND_TRIGGER := true
+#AUDIO_FEATURE_ENABLED_KEEP_ALIVE := true
+AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := false
+TARGET_USES_QCOM_MM_AUDIO := true
+##AUDIO_FEATURE_FLAGS
+
+ifneq ($(strip $(TARGET_USES_RRO)), true)
+#Audio Specific device overlays
+DEVICE_PACKAGE_OVERLAYS += hardware/qcom/audio/configs/common/overlay
+endif
+
+# Reduce client buffer size for fast audio output tracks
+PRODUCT_PROPERTY_OVERRIDES += \
+ af.fast_track_multiplier=1
+
+# Low latency audio buffer size in frames
+PRODUCT_PROPERTY_OVERRIDES += \
+ vendor.audio_hal.period_size=192
+
+#disable tunnel encoding
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.tunnel.encode=false
+
+#Buffer size in kbytes for compress offload playback
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.offload.buffer.size.kb=32
+
+#Enable offload audio video playback by default
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.offload.video=true
+
+#Enable audio track offload by default
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.offload.track.enable=true
+
+#Enable music through deep buffer
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.deep_buffer.media=true
+
+#enable voice path for PCM VoIP by default
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.voice.path.for.pcm.voip=true
+
+#Enable multi channel aac through offload
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.offload.multiaac.enable=true
+
+#Disable Multiple offload sesison
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.offload.multiple.enabled=false
+
+#parser input buffer size(256kb) in byte stream mode
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.parser.ip.buffer.size=262144
+
+#flac sw decoder 24 bit decode capability
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.flac.sw.decoder.24bit=true
+
+#split a2dp DSP supported encoder list
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.bt.a2dp_offload_cap=sbc-aptx-aptxtws-aptxhd-aac-ldac
+
+#enable software decoders for ALAC and APE
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.use.sw.alac.decoder=true
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.use.sw.ape.decoder=true
+
+#enable hw aac encoder by default
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.hw.aac.encoder=true
+
+#audio becoming noisy intent broadcast delay
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.noisy.broadcast.delay=600
+
+#offload pausetime out duration to 3 secs to inline with other outputs
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.offload.pstimeout.secs=3
+
+#Set AudioFlinger client heap size
+PRODUCT_PROPERTY_OVERRIDES += \
+ro.af.client_heap_size_kbyte=7168
+
+# Enable AAudio MMAP/NOIRQ data path.
+# 2 is AAUDIO_POLICY_AUTO so it will try MMAP then fallback to Legacy path.
+PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
+# Allow EXCLUSIVE then fall back to SHARED.
+PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
+PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
+
+#enable mirror-link feature
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.enable.mirrorlink=false
+
diff --git a/hal/Android.mk b/hal/Android.mk
index 6814e76..eac6636 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -9,7 +9,7 @@
AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
-ifneq ($(filter msm8974 msm8226 msm8084 msm8610 apq8084 msm8994 msm8992 msm8996 msm8998 apq8098_latv sdm845 sdm710 qcs605 msmnile $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter msm8974 msm8226 msm8084 msm8610 apq8084 msm8994 msm8992 msm8996 msm8998 apq8098_latv sdm845 sdm710 qcs605 msmnile kona $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),)
# B-family platform uses msm8974 code base
AUDIO_PLATFORM = msm8974
MULTIPLE_HW_VARIANTS_ENABLED := true
@@ -70,6 +70,9 @@
LOCAL_CFLAGS += -DINCALL_MUSIC_ENABLED
LOCAL_CFLAGS += -DINCALL_STEREO_CAPTURE_ENABLED
endif
+ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),)
+ LOCAL_CFLAGS := -DPLATFORM_KONA
+endif
ifneq ($(filter $(MSMSTEPPE) ,$(TARGET_BOARD_PLATFORM)),)
LOCAL_CFLAGS := -DPLATFORM_MSMSTEPPE
endif
@@ -321,11 +324,19 @@
LOCAL_SRC_FILES += audio_extn/qaf.c
endif
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_CONCURRENT_CAPTURE)),true)
+ LOCAL_CFLAGS += -DCONCURRENT_CAPTURE_ENABLED
+endif
+
ifeq ($(strip $(AUDIO_FEATURE_ENABLED_COMPRESS_INPUT)),true)
LOCAL_CFLAGS += -DCOMPRESS_INPUT_ENABLED
LOCAL_SRC_FILES += audio_extn/compress_in.c
endif
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_CONCURRENT_CAPTURE)),true)
+ LOCAL_CFLAGS += -DCONCURRENT_CAPTURE_ENABLED
+endif
+
ifeq ($(strip $(BOARD_SUPPORTS_QAHW)),true)
LOCAL_CFLAGS += -DAUDIO_HW_EXTN_API_ENABLED
LOCAL_SRC_FILES += audio_hw_extn_api.c
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 3897ba4..9eddce1 100644
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -373,7 +373,8 @@
libtinycompress \
libaudioroute \
libdl \
- libexpat
+ libexpat \
+ libqti_vndfwk_detect
LOCAL_C_INCLUDES := \
$(PRIMARY_HAL_PATH) \
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index fb71083..9ac5476 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -33,6 +33,7 @@
#include <log/log.h>
#include <dlfcn.h>
#include <pthread.h>
+#include <vndfwk-detect.h>
#include "audio_hw.h"
#include "platform.h"
#include "platform_api.h"
@@ -51,6 +52,7 @@
#define AUDIO_PARAMETER_A2DP_STARTED "A2dpStarted"
#define BT_IPC_SOURCE_LIB_NAME "libbthost_if.so"
+#define BT_IPC_SOURCE_LIB_NAME_QTI "libbthost_if_qti.so"
#define BT_IPC_SINK_LIB_NAME "libbthost_if_sink.so"
#define MEDIA_FMT_NONE 0
#define MEDIA_FMT_AAC 0x00010DA6
@@ -814,42 +816,51 @@
int ret = 0;
ALOGD(" Open A2DP source start ");
- if (a2dp.bt_lib_source_handle == NULL){
- ALOGD(" Requesting for BT lib handle");
- a2dp.bt_lib_source_handle = dlopen(BT_IPC_SOURCE_LIB_NAME, RTLD_NOW);
-
- if (a2dp.bt_lib_source_handle == NULL) {
- ALOGE("%s: DLOPEN failed for %s", __func__, BT_IPC_SOURCE_LIB_NAME);
- ret = -ENOSYS;
- goto init_fail;
+ if (a2dp.bt_lib_source_handle == NULL) {
+ if(!isRunningWithVendorEnhancedFramework()) {
+ ALOGD(" Requesting for BT lib handle");
+ a2dp.bt_lib_source_handle = dlopen(BT_IPC_SOURCE_LIB_NAME, RTLD_NOW);
+ if (a2dp.bt_lib_source_handle == NULL) {
+ ALOGE("%s: DLOPEN failed for %s", __func__, BT_IPC_SOURCE_LIB_NAME);
+ ret = -ENOSYS;
+ goto init_fail;
+ }
} else {
- a2dp.audio_source_open = (audio_source_open_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_stream_open");
- a2dp.audio_source_start = (audio_source_start_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_stream_start");
- a2dp.audio_get_enc_config = (audio_get_enc_config_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_get_codec_config");
- a2dp.audio_source_suspend = (audio_source_suspend_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_stream_suspend");
- a2dp.audio_source_handoff_triggered = (audio_source_handoff_triggered_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_handoff_triggered");
- a2dp.clear_source_a2dpsuspend_flag = (clear_source_a2dpsuspend_flag_t)
- dlsym(a2dp.bt_lib_source_handle, "clear_a2dpsuspend_flag");
- a2dp.audio_source_stop = (audio_source_stop_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_stream_stop");
- a2dp.audio_source_close = (audio_source_close_t)
- dlsym(a2dp.bt_lib_source_handle, "audio_stream_close");
- a2dp.audio_source_check_a2dp_ready = (audio_source_check_a2dp_ready_t)
- dlsym(a2dp.bt_lib_source_handle,"audio_check_a2dp_ready");
- a2dp.audio_sink_get_a2dp_latency = (audio_sink_get_a2dp_latency_t)
- dlsym(a2dp.bt_lib_source_handle,"audio_sink_get_a2dp_latency");
- a2dp.audio_is_source_scrambling_enabled = (audio_is_source_scrambling_enabled_t)
- dlsym(a2dp.bt_lib_source_handle,"audio_is_scrambling_enabled");
- a2dp.audio_is_tws_mono_mode_enable = (audio_is_tws_mono_mode_enable_t)
- dlsym(a2dp.bt_lib_source_handle,"isTwsMonomodeEnable");
+ ALOGD(" Requesting for BT QTI lib handle");
+ a2dp.bt_lib_source_handle = dlopen(BT_IPC_SOURCE_LIB_NAME_QTI, RTLD_NOW);
+ if (a2dp.bt_lib_source_handle == NULL) {
+ ALOGE("%s: DLOPEN failed for %s", __func__, BT_IPC_SOURCE_LIB_NAME_QTI);
+ ret = -ENOSYS;
+ goto init_fail;
+ }
}
}
+ a2dp.audio_source_open = (audio_source_open_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_stream_open");
+ a2dp.audio_source_start = (audio_source_start_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_start_stream");
+ a2dp.audio_get_enc_config = (audio_get_enc_config_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_get_codec_config");
+ a2dp.audio_source_suspend = (audio_source_suspend_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_suspend_stream");
+ a2dp.audio_source_handoff_triggered = (audio_source_handoff_triggered_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_handoff_triggered");
+ a2dp.clear_source_a2dpsuspend_flag = (clear_source_a2dpsuspend_flag_t)
+ dlsym(a2dp.bt_lib_source_handle, "clear_a2dpsuspend_flag");
+ a2dp.audio_source_stop = (audio_source_stop_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_stop_stream");
+ a2dp.audio_source_close = (audio_source_close_t)
+ dlsym(a2dp.bt_lib_source_handle, "audio_stream_close");
+ a2dp.audio_source_check_a2dp_ready = (audio_source_check_a2dp_ready_t)
+ dlsym(a2dp.bt_lib_source_handle,"audio_check_a2dp_ready");
+ a2dp.audio_sink_get_a2dp_latency = (audio_sink_get_a2dp_latency_t)
+ dlsym(a2dp.bt_lib_source_handle,"audio_sink_get_a2dp_latency");
+ a2dp.audio_is_source_scrambling_enabled = (audio_is_source_scrambling_enabled_t)
+ dlsym(a2dp.bt_lib_source_handle,"audio_is_scrambling_enabled");
+ a2dp.audio_is_tws_mono_mode_enable = (audio_is_tws_mono_mode_enable_t)
+ dlsym(a2dp.bt_lib_source_handle,"isTwsMonomodeEnable");
+
if (a2dp.bt_lib_source_handle && a2dp.audio_source_open) {
if (a2dp.bt_state_source == A2DP_STATE_DISCONNECTED) {
ALOGD("calling BT stream open");
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index 3eb96d6..57a3841 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -62,7 +62,11 @@
#define HFP_RX_VOLUME "PRI AUXPCM LOOPBACK Volume"
#elif defined PLATFORM_AUTO
#define HFP_RX_VOLUME "Playback 36 Volume"
-#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM845) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
+#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_MSMFALCON) || \
+ defined (PLATFORM_SDM845) || defined (PLATFORM_SDM710) || \
+ defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || \
+ defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
+ defined (PLATFORM_QCS405)
#define HFP_RX_VOLUME "SLIMBUS_7 LOOPBACK Volume"
#else
#define HFP_RX_VOLUME "Internal HFP RX Volume"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 46a4b98..08a8fad 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -7858,6 +7858,22 @@
pthread_mutex_lock(&adev->lock);
ret_val = audio_extn_check_and_set_multichannel_usecase(adev,
in, config, &channel_mask_updated);
+#ifdef CONCURRENT_CAPTURE_ENABLED
+ /* Acquire lock to avoid two concurrent use cases initialized to
+ same pcm record use case*/
+
+ if(in->usecase == USECASE_AUDIO_RECORD) {
+ if (!(adev->pcm_record_uc_state)) {
+ ALOGV("%s: using USECASE_AUDIO_RECORD",__func__);
+ adev->pcm_record_uc_state = 1;
+ } else {
+ /* Assign compress record use case for second record */
+ in->usecase = USECASE_AUDIO_RECORD_COMPRESS2;
+ in->flags |= AUDIO_INPUT_FLAG_COMPRESS;
+ ALOGV("%s: overriding usecase with USECASE_AUDIO_RECORD_COMPRESS2 and appending compress flag", __func__);
+ }
+ }
+#endif
pthread_mutex_unlock(&adev->lock);
if (!ret_val) {
@@ -7983,6 +7999,10 @@
in_standby(&stream->common);
pthread_mutex_lock(&adev->lock);
+ if (in->usecase == USECASE_AUDIO_RECORD) {
+ adev->pcm_record_uc_state = 0;
+ }
+
if (audio_extn_ssr_get_stream() == in) {
audio_extn_ssr_deinit();
}
@@ -8442,6 +8462,7 @@
list_init(&adev->usecase_list);
adev->cur_wfd_channels = 2;
adev->offload_usecases_state = 0;
+ adev->pcm_record_uc_state = 0;
adev->is_channel_status_set = false;
adev->perf_lock_opts[0] = 0x101;
adev->perf_lock_opts[1] = 0x20E;
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 7b74d16..4f93aa9 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -526,6 +526,7 @@
void *platform;
void *extspk;
unsigned int offload_usecases_state;
+ unsigned int pcm_record_uc_state;
void *visualizer_lib;
int (*visualizer_start_output)(audio_io_handle_t, int);
int (*visualizer_stop_output)(audio_io_handle_t, int);
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index 3d91d84..477a5c3 100755
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -504,6 +504,22 @@
}
}
+static void update_hardware_info_kona(
+ struct hardware_info *hw_info,
+ const char *snd_card_name)
+{
+ if (!strncmp(snd_card_name, "kona-mtp-snd-card",
+ sizeof("kona-mtp-snd-card"))) {
+ strlcpy(hw_info->name, "kona", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "kona-qrd-snd-card",
+ sizeof("kona-qrd-snd-card"))) {
+ strlcpy(hw_info->name, "kona", sizeof(hw_info->name));
+ hw_info->is_stereo_spkr = false;
+ } else {
+ ALOGW("%s: Not a kona device", __func__);
+ }
+}
+
static void update_hardware_info_sda845(struct hardware_info *hw_info, const char *snd_card_name)
{
if (!strncmp(snd_card_name, "sda845-tavil-i2s-snd-card", sizeof("sda845-tavil-i2s-snd-card"))) {
@@ -728,6 +744,9 @@
} else if (strstr(snd_card_name, "sda845")) {
ALOGV("SDA845 - variant soundcard");
update_hardware_info_sda845(hw_info, snd_card_name);
+ } else if (strstr(snd_card_name, "kona")) {
+ ALOGV("KONA - variant soundcard");
+ update_hardware_info_kona(hw_info, snd_card_name);
} else {
ALOGE("%s: Unsupported target %s:",__func__, snd_card_name);
free(hw_info);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 329da7b..9eb1dc2 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -84,7 +84,10 @@
#endif
#include <linux/msm_audio.h>
-#if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
+#if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM710) || \
+ defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || \
+ defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
+ defined (PLATFORM_QCS405)
#include <sound/devdep_params.h>
#endif
@@ -1321,8 +1324,9 @@
return ret;
}
-static void update_codec_type_and_interface(struct platform_data * my_data, const char *snd_card_name) {
-
+static void update_codec_type_and_interface(struct platform_data * my_data,
+ const char *snd_card_name)
+{
if (!strncmp(snd_card_name, "sdm670-skuw-snd-card",
sizeof("sdm670-skuw-snd-card")) ||
!strncmp(snd_card_name, "sdm660-snd-card-skush",
@@ -1338,8 +1342,12 @@
!strncmp(snd_card_name, "sm6150-idp-snd-card",
sizeof("sm6150-idp-snd-card")) ||
!strncmp(snd_card_name, "qcs605-lc-snd-card",
- sizeof("qcs605-lc-snd-card"))) {
- ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
+ sizeof("qcs605-lc-snd-card")) ||
+ !strncmp(snd_card_name, "kona-mtp-snd-card",
+ sizeof("kona-mtp-snd-card")) ||
+ !strncmp(snd_card_name, "kona-qrd-snd-card",
+ sizeof("kona-qrd-snd-card"))) {
+ ALOGI("%s: snd_card_name: %s", __func__, snd_card_name);
my_data->is_internal_codec = true;
my_data->is_slimbus_interface = false;
}
@@ -2616,6 +2624,9 @@
else if (!strncmp(snd_card_name, "sm6150-qrd-snd-card",
sizeof("sm6150-qrd-snd-card")))
platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
+ else if (!strncmp(snd_card_name, "kona-qrd-snd-card",
+ sizeof("kona-qrd-snd-card")))
+ platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
else if (!strncmp(snd_card_name, "qcs405-wsa-snd-card",
sizeof("qcs405-wsa-snd-card")))
platform_info_init(PLATFORM_INFO_XML_PATH_WSA, my_data, PLATFORM);
@@ -2864,7 +2875,8 @@
if (!my_data->is_slimbus_interface) {
//TODO:: make generic interfaceface to check Slimbus/I2S/CDC_DMA
- if (!strncmp(snd_card_name, "sm6150", strlen("sm6150"))) {
+ if (!strncmp(snd_card_name, "sm6150", strlen("sm6150")) ||
+ !strncmp(snd_card_name, "kona", strlen("kona"))) {
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].bitwidth_mixer_ctl =
strdup("WSA_CDC_DMA_RX_0 Format");
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].samplerate_mixer_ctl =
@@ -2947,6 +2959,14 @@
strdup("SLIM_6_RX Format");
my_data->current_backend_cfg[HEADPHONE_BACKEND].samplerate_mixer_ctl =
strdup("SLIM_6_RX SampleRate");
+ //TODO: enable CONCURRENT_CAPTURE_ENABLED flag only if separate backend is defined
+ //for headset-mic. This is to capture separate data from headset-mic and handset-mic.
+#ifdef CONCURRENT_CAPTURE_ENABLED
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].bitwidth_mixer_ctl =
+ strdup("SLIM_1_RX Format");
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].samplerate_mixer_ctl =
+ strdup("SLIM_1_RX SampleRate");
+#endif
}
my_data->current_backend_cfg[USB_AUDIO_TX_BACKEND].bitwidth_mixer_ctl =
@@ -3864,6 +3884,8 @@
port = HDMI_TX_BACKEND;
else if (strcmp(backend_tag_table[snd_device], "hdmi-arc-in") == 0)
port = HDMI_ARC_TX_BACKEND;
+ else if (strcmp(backend_tag_table[snd_device], "headset-mic") == 0)
+ port = HEADSET_TX_BACKEND;
}
} else {
ALOGW("%s:napb: Invalid device - %d ", __func__, snd_device);
@@ -9266,7 +9288,10 @@
return sample_rate;
}
-#if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
+#if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM710) || \
+ defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || \
+ defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
+ defined (PLATFORM_QCS405)
int platform_get_mmap_data_fd(void *platform, int fe_dev, int dir, int *fd,
uint32_t *size)
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 44d4a74..8aa3e3c 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -67,10 +67,15 @@
* All these devices are handled by the internal HW codec. We can
* enable any one of these devices at any time
*/
+#ifdef CONCURRENT_CAPTURE_ENABLED
+#define AUDIO_DEVICE_IN_ALL_CODEC_BACKEND \
+ (AUDIO_DEVICE_IN_BUILTIN_MIC | AUDIO_DEVICE_IN_BACK_MIC | \
+ AUDIO_DEVICE_IN_VOICE_CALL) & ~AUDIO_DEVICE_BIT_IN
+#else
#define AUDIO_DEVICE_IN_ALL_CODEC_BACKEND \
(AUDIO_DEVICE_IN_BUILTIN_MIC | AUDIO_DEVICE_IN_BACK_MIC | \
AUDIO_DEVICE_IN_WIRED_HEADSET | AUDIO_DEVICE_IN_VOICE_CALL) & ~AUDIO_DEVICE_BIT_IN
-
+#endif
/* Sound devices specific to the platform
* The DEVICE_OUT_* and DEVICE_IN_* should be mapped to these sound
* devices to enable corresponding mixer paths
@@ -306,6 +311,7 @@
SPDIF_TX_BACKEND,
HDMI_TX_BACKEND,
HDMI_ARC_TX_BACKEND,
+ HEADSET_TX_BACKEND,
MAX_CODEC_BACKENDS
};
@@ -419,11 +425,21 @@
#define QUAT_MI2S_PCM_DEVICE 44
// Direct_PCM
-#if defined (PLATFORM_MSM8994) || defined (PLATFORM_MSM8996) || defined (PLATFORM_APQ8084) || defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_SDM710) ||defined (PLATFORM_QCS605) ||defined (PLATFORM_SDX24) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
+#if defined (PLATFORM_MSM8994) || defined (PLATFORM_MSM8996) || \
+ defined (PLATFORM_APQ8084) || defined (PLATFORM_MSM8998) || \
+ defined (PLATFORM_SDM845) || defined (PLATFORM_SDM710) || \
+ defined (PLATFORM_QCS605) ||defined (PLATFORM_SDX24) || \
+ defined (PLATFORM_MSMNILE) || defined (PLATFORM_KONA) || \
+ defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
#define PLAYBACK_OFFLOAD_DEVICE2 17
#endif
-#if defined (PLATFORM_APQ8084) || defined (PLATFORM_MSM8996) || defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_SDM710) || defined(PLATFORM_QCS605) || defined (PLATFORM_SDX24) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
+#if defined (PLATFORM_APQ8084) || defined (PLATFORM_MSM8996) || \
+ defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || \
+ defined (PLATFORM_SDM710) || defined(PLATFORM_QCS605) || \
+ defined (PLATFORM_SDX24) || defined (PLATFORM_MSMNILE) || \
+ defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
+ defined (PLATFORM_QCS405)
#define PLAYBACK_OFFLOAD_DEVICE3 18
#define PLAYBACK_OFFLOAD_DEVICE4 34
#define PLAYBACK_OFFLOAD_DEVICE5 35
@@ -553,7 +569,7 @@
#define FM_RX_VOLUME "Quat MI2S FM RX Volume"
#elif PLATFORM_MSM8994
#define FM_RX_VOLUME "PRI MI2S LOOPBACK Volume"
-#elif PLATFORM_MSM8996
+#elif defined (PLATFORM_MSM8996) || defined (PLATFORM_KONA)
#define FM_RX_VOLUME "Tert MI2S LOOPBACK Volume"
#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405)
#define FM_RX_VOLUME "SLIMBUS_8 LOOPBACK Volume"
diff --git a/post_proc/Android.mk b/post_proc/Android.mk
index f75ffe1..c68a861 100644
--- a/post_proc/Android.mk
+++ b/post_proc/Android.mk
@@ -144,7 +144,7 @@
################################################################################
-ifneq ($(filter msm8992 msm8994 msm8996 msm8998 sdm660 sdm845 apq8098_latv sdm710 msm8953 msm8937 qcs605 msmnile $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter msm8992 msm8994 msm8996 msm8998 sdm660 sdm845 apq8098_latv sdm710 msm8953 msm8937 qcs605 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
include $(CLEAR_VARS)
diff --git a/visualizer/Android.mk b/visualizer/Android.mk
index 5ce31b6..3d0f734 100644
--- a/visualizer/Android.mk
+++ b/visualizer/Android.mk
@@ -37,7 +37,7 @@
LOCAL_STATIC_LIBRARIES += libprofile_rt
endif
-ifneq ($(filter sdm660 sdm845 msm8998 apq8098_latv sdm710 qcs605 msmnile $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter sdm660 sdm845 msm8998 apq8098_latv sdm710 qcs605 msmnile kona $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
LOCAL_CFLAGS += -DCAPTURE_DEVICE=7
endif