Merge remote-tracking branch 'quic/LA.BR.1' into HEAD
* quic/LA.BR.1: (37 commits)
hal: Performance mode during recording usecase
audio: Support for compress offload recovery
audio: Fix for clip skip issue during SSR
hal: add checks for calibration buffer allocation failures
mm-audio: aenc-aac: fix integer overflow for encoded buffer timestamp calculation
hal: Add support for 8909 QRD skue
hal: Fix for FM mute issue on start of FM record
hal: Fix array length computation for backend id array.
hal : set Non SA+ app type for PCM Capture
hal : Fix for SA+ app type selection for PCM Capture usecase
hal : Fix for SA+ app type selection for PCM Capture usecase
hal: use 0 as default return value for out_get_render_position
audio: hal: Add support for pm8916 on msm8909
hal: Define a new combo device for AANC and Fluence
hal: Define a new combo device for AANC and Fluence
hal: use 0 as default return value for out_get_render_position
hal: Update DS2 implementation to support ACDB based license mechanism
hal : Overwrite the APP type for PCM RX and TX path
audio: HAL to support for peripheral manager
hal : Set the input device for VOIP calls using audio path
...
Conflicts:
hal/Android.mk
hal/audio_extn/audio_extn.c
hal/audio_extn/audio_extn.h
hal/audio_extn/dolby.c
hal/audio_extn/utils.c
hal/audio_hw.c
hal/msm8916/hw_info.c
hal/msm8916/platform.c
hal/msm8974/platform.c
hal/platform_api.h
Change-Id: Ibfa171e8f3af713dbb2cffbaf2ca2b0df3e8ae73
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 624850b..a7efe23 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -198,6 +198,18 @@
hw_info->snd_devices = NULL;
hw_info->num_snd_devices = 0;
strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "msm8909-pm8916-snd-card")) {
+ strlcpy(hw_info->type, "", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "msm8909", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
+ strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "msm8909-skue-snd-card")) {
+ strlcpy(hw_info->type, "skue", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "msm8909", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
+ strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
} else {
ALOGW("%s: Not an 8x16/8939/8909 device", __func__);
}
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
old mode 100644
new mode 100755
index 201a170..968ae39
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -38,12 +38,14 @@
#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
#define MIXER_XML_PATH_MTP "/system/etc/mixer_paths_mtp.xml"
+#define MIXER_XML_PATH_MSM8909_PM8916 "/system/etc/mixer_paths_msm8909_pm8916.xml"
#define MIXER_XML_PATH_QRD_SKUH "/system/etc/mixer_paths_qrd_skuh.xml"
#define MIXER_XML_PATH_QRD_SKUI "/system/etc/mixer_paths_qrd_skui.xml"
#define MIXER_XML_PATH_QRD_SKUHF "/system/etc/mixer_paths_qrd_skuhf.xml"
#define MIXER_XML_PATH_SKUK "/system/etc/mixer_paths_skuk.xml"
#define MIXER_XML_PATH_SKUA "/system/etc/mixer_paths_skua.xml"
#define MIXER_XML_PATH_SKUC "/system/etc/mixer_paths_skuc.xml"
+#define MIXER_XML_PATH_SKUE "/system/etc/mixer_paths_skue.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
#define MIXER_XML_PATH_WCD9306 "/system/etc/mixer_paths_wcd9306.xml"
@@ -99,6 +101,8 @@
#define AUDIO_PARAMETER_KEY_HD_VOICE "hd_voice"
#define AUDIO_PARAMETER_KEY_VOLUME_BOOST "volume_boost"
#define MAX_CAL_NAME 20
+#define APP_TYPE_SYSTEM_SOUNDS 0x00011131
+#define APP_TYPE_GENERAL_RECORDING 0x00011132
char cal_name_info[WCD9XXX_MAX_CAL][MAX_CAL_NAME] = {
[WCD9XXX_ANC_CAL] = "anc_cal",
@@ -599,7 +603,6 @@
sizeof("msm8939-tomtom9330-snd-card"))) {
strlcpy(mixer_xml_path, MIXER_XML_PATH_WCD9330,
sizeof(MIXER_XML_PATH_WCD9330));
-
msm_device_to_be_id = msm_device_to_be_id_external_codec;
msm_be_id_array_len =
sizeof(msm_device_to_be_id_external_codec) / sizeof(msm_device_to_be_id_external_codec[0]);
@@ -608,18 +611,35 @@
sizeof("msm8909-skua-snd-card"))) {
strlcpy(mixer_xml_path, MIXER_XML_PATH_SKUA,
sizeof(MIXER_XML_PATH_SKUA));
-
msm_device_to_be_id = msm_device_to_be_id_internal_codec;
msm_be_id_array_len =
sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+
} else if (!strncmp(snd_card_name, "msm8909-skuc-snd-card",
sizeof("msm8909-skuc-snd-card"))) {
strlcpy(mixer_xml_path, MIXER_XML_PATH_SKUC,
sizeof(MIXER_XML_PATH_SKUC));
+ msm_device_to_be_id = msm_device_to_be_id_internal_codec;
+ msm_be_id_array_len =
+ sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+
+ } else if (!strncmp(snd_card_name, "msm8909-pm8916-snd-card",
+ sizeof("msm8909-pm8916-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_MSM8909_PM8916,
+ sizeof(MIXER_XML_PATH_MSM8909_PM8916));
msm_device_to_be_id = msm_device_to_be_id_internal_codec;
msm_be_id_array_len =
sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+
+ } else if (!strncmp(snd_card_name, "msm8909-skue-snd-card",
+ sizeof("msm8909-skue-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_SKUE,
+ sizeof(MIXER_XML_PATH_SKUE));
+ msm_device_to_be_id = msm_device_to_be_id_internal_codec;
+ msm_be_id_array_len =
+ sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+
} else {
strlcpy(mixer_xml_path, MIXER_XML_PATH,
sizeof(MIXER_XML_PATH));
@@ -1078,11 +1098,11 @@
ALOGE("Failed to allocate cvd version");
else
get_cvd_version(cvd_version, adev);
-
- my_data->acdb_init((char *)snd_card_name, cvd_version);
+ my_data->acdb_init(snd_card_name, cvd_version, key);
if (cvd_version)
free(cvd_version);
}
+ audio_extn_pm_vote();
acdb_init_fail:
/* Initialize ACDB ID's */
@@ -1299,7 +1319,6 @@
}
return acdb_device_table[snd_device];
}
-
int platform_set_snd_device_bit_width(snd_device_t snd_device __unused,
unsigned int bit_width __unused)
{
@@ -1313,11 +1332,24 @@
return -ENOSYS;
}
-int platform_send_audio_calibration(void *platform, snd_device_t snd_device,
+int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
int app_type, int sample_rate)
{
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
+ struct audio_device *adev = my_data->adev;
+ int snd_device = SND_DEVICE_OUT_SPEAKER;
+
+ if (usecase->type == PCM_PLAYBACK) {
+ snd_device = platform_get_output_snd_device(adev->platform,
+ usecase->stream.out->devices);
+ if(usecase->id != USECASE_AUDIO_PLAYBACK_OFFLOAD)
+ app_type = APP_TYPE_SYSTEM_SOUNDS;
+ } else if ((usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_CAPTURE)) {
+ snd_device = platform_get_input_snd_device(adev->platform,
+ adev->primary_output->devices);
+ app_type = APP_TYPE_GENERAL_RECORDING;
+ }
acdb_dev_id = acdb_device_table[snd_device];
if (acdb_dev_id < 0) {
@@ -2640,7 +2672,6 @@
{
return -ENOSYS;
}
-
int platform_get_edid_info(void *platform __unused)
{
return -ENOSYS;
@@ -2672,3 +2703,8 @@
void platform_invalidate_edid(void * platform __unused)
{
}
+int platform_get_subsys_image_name(char *buf)
+{
+ strlcpy(buf, PLATFORM_IMAGE_NAME, sizeof(PLATFORM_IMAGE_NAME));
+ return 0;
+}
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index a0cf5dc..35b577e 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -32,6 +32,8 @@
FLUENCE_BROADSIDE = 0x2,
};
+#define PLATFORM_IMAGE_NAME "modem"
+
/*
* Below are the devices for which is back end is same, SLIMBUS_0_RX.
* All these devices are handled by the internal HW codec. We can
@@ -251,4 +253,6 @@
stop_record_t stop_record;
};
+int platform_get_subsys_image_name (char *buf);
+
#endif // QCOM_AUDIO_PLATFORM_H