Merge "policy-hal: add custom audio policy"
diff --git a/hal/Android.mk b/hal/Android.mk
index 22c01c1..6cb7c47 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -137,7 +137,8 @@
$(call include-path-for, audio-effects) \
$(LOCAL_PATH)/$(AUDIO_PLATFORM) \
$(LOCAL_PATH)/audio_extn \
- $(LOCAL_PATH)/voice_extn
+ $(LOCAL_PATH)/voice_extn \
+ $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
ifneq ($(filter msm8974,$(AUDIO_PLATFORM)),)
LOCAL_C_INCLUDES += external/expat/lib
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 569a8ac..254bbfd 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -843,7 +843,10 @@
struct audio_device *adev = in->dev;
int snd_card_status = get_snd_card_state(adev);
- in->usecase = platform_update_usecase_from_source(in->source,in->usecase);
+ int usecase = platform_update_usecase_from_source(in->source,in->usecase);
+ if (get_usecase_from_list(adev, usecase) == NULL)
+ in->usecase = usecase;
+
ALOGD("%s: enter: stream(%p)usecase(%d: %s)",
__func__, &in->stream, in->usecase, use_case_table[in->usecase]);
@@ -860,6 +863,12 @@
else
ALOGV("%s: usecase(%d)", __func__, in->usecase);
+ if (get_usecase_from_list(adev, in->usecase) != NULL) {
+ ALOGE("%s: use case assigned already in use, stream(%p)usecase(%d: %s)",
+ __func__, &in->stream, in->usecase, use_case_table[in->usecase]);
+ goto error_config;
+ }
+
in->pcm_device_id = platform_get_pcm_device_id(in->usecase, PCM_CAPTURE);
if (in->pcm_device_id < 0) {
ALOGE("%s: Could not find PCM device id for the usecase(%d)",
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index c0593c9..3362aee 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1428,11 +1428,8 @@
set_echo_reference(adev, true);
}
}
-#ifdef FM_ENABLED
- } else if (source == AUDIO_SOURCE_FM_RX ||
- source == AUDIO_SOURCE_FM_RX_A2DP) {
+ } else if (source == AUDIO_SOURCE_FM_TUNER) {
snd_device = SND_DEVICE_IN_CAPTURE_FM;
-#endif
} else if (source == AUDIO_SOURCE_DEFAULT) {
goto exit;
}
@@ -1467,10 +1464,8 @@
} else if (in_device & AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET ||
in_device & AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET) {
snd_device = SND_DEVICE_IN_USB_HEADSET_MIC;
-#ifdef FM_ENABLED
- } else if (in_device & AUDIO_DEVICE_IN_FM_RX) {
+ } else if (in_device & AUDIO_DEVICE_IN_FM_TUNER) {
snd_device = SND_DEVICE_IN_CAPTURE_FM;
-#endif
} else {
ALOGE("%s: Unknown input device(s) %#x", __func__, in_device);
ALOGW("%s: Using default handset-mic", __func__);
@@ -1823,10 +1818,8 @@
int platform_update_usecase_from_source(int source, int usecase)
{
ALOGV("%s: input source :%d", __func__, source);
-#ifdef FM_ENABLED
- if(source == AUDIO_SOURCE_FM_RX_A2DP)
+ if(source == AUDIO_SOURCE_FM_TUNER)
usecase = USECASE_AUDIO_RECORD_FM_VIRTUAL;
-#endif
return usecase;
}