Loading configs/msmnile/msmnile.mk +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ endif USE_XML_AUDIO_POLICY_CONF := 1 BOARD_SUPPORTS_SOUND_TRIGGER := true AUDIO_FEATURE_ENABLED_INSTANCE_ID := true AUDIO_USE_LL_AS_PRIMARY_OUTPUT := true AUDIO_FEATURE_ENABLED_VBAT_MONITOR := true AUDIO_FEATURE_ENABLED_ANC_HEADSET := true Loading hal/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,10 @@ ifeq ($(strip $($AUDIO_FEATURE_ENABLED_DYNAMIC_ECNS)),true) LOCAL_CFLAGS += -DDYNAMIC_ECNS_ENABLED endif ifeq ($(strip $(AUDIO_FEATURE_ENABLED_INSTANCE_ID)), true) LOCAL_CFLAGS += -DINSTANCE_ID_ENABLED endif LOCAL_CFLAGS += -Wall -Werror LOCAL_COPY_HEADERS_TO := mm-audio Loading hal/acdb.c +47 −3 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading Loading @@ -28,6 +28,34 @@ #include "acdb.h" #include "platform_api.h" #ifdef INSTANCE_ID_ENABLED int check_and_set_instance_id_support(struct mixer* mixer, bool acdb_support) { const char *mixer_ctl_name = "Instance ID Support"; struct mixer_ctl* ctl; ALOGV("%s", __func__); /* Check for ACDB and property instance ID support and issue mixer control */ ctl = mixer_get_ctl_by_name(mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); return -EINVAL; } ALOGD("%s: Final Instance ID support:%d\n", __func__, acdb_support); if (mixer_ctl_set_value(ctl, 0, acdb_support) < 0) { ALOGE("%s: Could not set Instance ID support %d", __func__, acdb_support); return -EINVAL; } return 0; } #else #define check_and_set_instance_id_support(x, y) -ENOSYS #endif int acdb_init(int snd_card_num) { Loading Loading @@ -69,6 +97,11 @@ int acdb_init(int snd_card_num) ALOGV("%s: DLOPEN successful for %s", __func__, LIB_ACDB_LOADER); my_data->acdb_init_v4 = (acdb_init_v4_t)dlsym(my_data->acdb_handle, "acdb_loader_init_v4"); if (my_data->acdb_init_v4 == NULL) ALOGE("%s: dlsym error %s for acdb_loader_init_v4", __func__, dlerror()); my_data->acdb_init_v3 = (acdb_init_v3_t)dlsym(my_data->acdb_handle, "acdb_loader_init_v3"); if (my_data->acdb_init_v3 == NULL) Loading @@ -82,7 +115,7 @@ int acdb_init(int snd_card_num) my_data->acdb_init = (acdb_init_t)dlsym(my_data->acdb_handle, "acdb_loader_init_ACDB"); if (my_data->acdb_init == NULL && my_data->acdb_init_v2 == NULL && my_data->acdb_init_v3 == NULL) { && my_data->acdb_init_v3 == NULL && my_data->acdb_init_v4 == NULL) { ALOGE("%s: dlsym error %s for acdb_loader_init_ACDB", __func__, dlerror()); goto cleanup; } Loading Loading @@ -126,8 +159,16 @@ int acdb_init(int snd_card_num) int key = 0; struct listnode *node = NULL; struct meta_key_list *key_info = NULL; static bool acdb_instance_id_support = false; my_data->acdb_init_data.cvd_version = cvd_version; my_data->acdb_init_data.snd_card_name = strdup(snd_card_name); my_data->acdb_init_data.meta_key_list = &my_data->acdb_meta_key_list; my_data->acdb_init_data.is_instance_id_supported = &acdb_instance_id_support; if (my_data->acdb_init_v3) { if (my_data->acdb_init_v4) { result = my_data->acdb_init_v4(&my_data->acdb_init_data, ACDB_LOADER_INIT_V4); } else if (my_data->acdb_init_v3) { result = my_data->acdb_init_v3(snd_card_name, cvd_version, &my_data->acdb_meta_key_list); } else if (my_data->acdb_init_v2) { Loading @@ -138,6 +179,9 @@ int acdb_init(int snd_card_num) } else { result = my_data->acdb_init(); } ALOGD("%s: ACDB Instance ID support after ACDB init:%d\n", __func__, acdb_instance_id_support); check_and_set_instance_id_support(mixer, acdb_instance_id_support); cleanup: if (NULL != my_data) { Loading hal/acdb.h +19 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading @@ -20,6 +20,7 @@ #ifndef ACDB_H #define ACDB_H #include <stdbool.h> #include <linux/msm_audio_calibration.h> #define MAX_CVD_VERSION_STRING_SIZE 100 Loading @@ -33,11 +34,19 @@ #define PLATFORM_INFO_XML_PATH "/vendor/etc/audio_platform_info.xml" #endif enum { ACDB_LOADER_INIT_V1 = 1, ACDB_LOADER_INIT_V2, ACDB_LOADER_INIT_V3, ACDB_LOADER_INIT_V4, }; /* Audio calibration related functions */ typedef void (*acdb_deallocate_t)(); typedef int (*acdb_init_t)(); typedef int (*acdb_init_v2_t)(const char *, char *, int); typedef int (*acdb_init_v3_t)(const char *, char *, struct listnode *); typedef int (*acdb_init_v4_t)(void *, int); typedef void (*acdb_send_audio_cal_t)(int, int, int , int); typedef void (*acdb_send_audio_cal_v3_t)(int, int, int, int, int); typedef void (*acdb_send_voice_cal_t)(int, int); Loading @@ -58,13 +67,22 @@ struct meta_key_list { char name[ACDB_METAINFO_KEY_MODULE_NAME_LEN]; }; struct acdb_init_data_v4 { char *cvd_version; char *snd_card_name; struct listnode *meta_key_list; bool *is_instance_id_supported; }; struct acdb_platform_data { /* Audio calibration related functions */ void *acdb_handle; acdb_init_t acdb_init; acdb_init_v2_t acdb_init_v2; acdb_init_v3_t acdb_init_v3; acdb_init_v4_t acdb_init_v4; struct listnode acdb_meta_key_list; struct acdb_init_data_v4 acdb_init_data; }; int acdb_init(int); Loading hal/audio_extn/audio_extn.h +39 −8 Original line number Diff line number Diff line Loading @@ -792,6 +792,8 @@ int audio_extn_keep_alive_set_parameters(struct audio_device *adev, #define audio_extn_gef_init(adev) (0) #define audio_extn_gef_deinit() (0) #define audio_extn_gef_notify_device_config(devices, cmask, sample_rate, acdb_id) (0) #ifndef INSTANCE_ID_ENABLED #define audio_extn_gef_send_audio_cal(dev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, param_id, data, length, persist) (0) #define audio_extn_gef_get_audio_cal(adev, acdb_dev_id, acdb_device_type,\ Loading @@ -800,6 +802,20 @@ int audio_extn_keep_alive_set_parameters(struct audio_device *adev, app_type, topology_id, sample_rate, module_id, param_id, data, length) (0) #define audio_extn_gef_retrieve_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, param_id, data, length) (0) #else #define audio_extn_gef_send_audio_cal(dev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length, persist) (0) #define audio_extn_gef_get_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length, persist) (0) #define audio_extn_gef_store_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length) (0) #define audio_extn_gef_retrieve_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length) (0) #endif #else Loading @@ -808,18 +824,33 @@ void audio_extn_gef_deinit(); void audio_extn_gef_notify_device_config(audio_devices_t audio_device, audio_channel_mask_t channel_mask, int sample_rate, int acdb_id); #ifndef INSTANCE_ID_ENABLED int audio_extn_gef_send_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length, bool persist); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length, bool persist); int audio_extn_gef_get_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length, bool persist); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length, bool persist); int audio_extn_gef_store_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length); int audio_extn_gef_retrieve_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length); #else int audio_extn_gef_send_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int length, bool persist); int audio_extn_gef_get_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int* length, bool persist); int audio_extn_gef_store_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int length); int audio_extn_gef_retrieve_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int* length); #endif #endif /* AUDIO_GENERIC_EFFECT_FRAMEWORK_ENABLED */ Loading Loading
configs/msmnile/msmnile.mk +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ endif USE_XML_AUDIO_POLICY_CONF := 1 BOARD_SUPPORTS_SOUND_TRIGGER := true AUDIO_FEATURE_ENABLED_INSTANCE_ID := true AUDIO_USE_LL_AS_PRIMARY_OUTPUT := true AUDIO_FEATURE_ENABLED_VBAT_MONITOR := true AUDIO_FEATURE_ENABLED_ANC_HEADSET := true Loading
hal/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,10 @@ ifeq ($(strip $($AUDIO_FEATURE_ENABLED_DYNAMIC_ECNS)),true) LOCAL_CFLAGS += -DDYNAMIC_ECNS_ENABLED endif ifeq ($(strip $(AUDIO_FEATURE_ENABLED_INSTANCE_ID)), true) LOCAL_CFLAGS += -DINSTANCE_ID_ENABLED endif LOCAL_CFLAGS += -Wall -Werror LOCAL_COPY_HEADERS_TO := mm-audio Loading
hal/acdb.c +47 −3 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading Loading @@ -28,6 +28,34 @@ #include "acdb.h" #include "platform_api.h" #ifdef INSTANCE_ID_ENABLED int check_and_set_instance_id_support(struct mixer* mixer, bool acdb_support) { const char *mixer_ctl_name = "Instance ID Support"; struct mixer_ctl* ctl; ALOGV("%s", __func__); /* Check for ACDB and property instance ID support and issue mixer control */ ctl = mixer_get_ctl_by_name(mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); return -EINVAL; } ALOGD("%s: Final Instance ID support:%d\n", __func__, acdb_support); if (mixer_ctl_set_value(ctl, 0, acdb_support) < 0) { ALOGE("%s: Could not set Instance ID support %d", __func__, acdb_support); return -EINVAL; } return 0; } #else #define check_and_set_instance_id_support(x, y) -ENOSYS #endif int acdb_init(int snd_card_num) { Loading Loading @@ -69,6 +97,11 @@ int acdb_init(int snd_card_num) ALOGV("%s: DLOPEN successful for %s", __func__, LIB_ACDB_LOADER); my_data->acdb_init_v4 = (acdb_init_v4_t)dlsym(my_data->acdb_handle, "acdb_loader_init_v4"); if (my_data->acdb_init_v4 == NULL) ALOGE("%s: dlsym error %s for acdb_loader_init_v4", __func__, dlerror()); my_data->acdb_init_v3 = (acdb_init_v3_t)dlsym(my_data->acdb_handle, "acdb_loader_init_v3"); if (my_data->acdb_init_v3 == NULL) Loading @@ -82,7 +115,7 @@ int acdb_init(int snd_card_num) my_data->acdb_init = (acdb_init_t)dlsym(my_data->acdb_handle, "acdb_loader_init_ACDB"); if (my_data->acdb_init == NULL && my_data->acdb_init_v2 == NULL && my_data->acdb_init_v3 == NULL) { && my_data->acdb_init_v3 == NULL && my_data->acdb_init_v4 == NULL) { ALOGE("%s: dlsym error %s for acdb_loader_init_ACDB", __func__, dlerror()); goto cleanup; } Loading Loading @@ -126,8 +159,16 @@ int acdb_init(int snd_card_num) int key = 0; struct listnode *node = NULL; struct meta_key_list *key_info = NULL; static bool acdb_instance_id_support = false; my_data->acdb_init_data.cvd_version = cvd_version; my_data->acdb_init_data.snd_card_name = strdup(snd_card_name); my_data->acdb_init_data.meta_key_list = &my_data->acdb_meta_key_list; my_data->acdb_init_data.is_instance_id_supported = &acdb_instance_id_support; if (my_data->acdb_init_v3) { if (my_data->acdb_init_v4) { result = my_data->acdb_init_v4(&my_data->acdb_init_data, ACDB_LOADER_INIT_V4); } else if (my_data->acdb_init_v3) { result = my_data->acdb_init_v3(snd_card_name, cvd_version, &my_data->acdb_meta_key_list); } else if (my_data->acdb_init_v2) { Loading @@ -138,6 +179,9 @@ int acdb_init(int snd_card_num) } else { result = my_data->acdb_init(); } ALOGD("%s: ACDB Instance ID support after ACDB init:%d\n", __func__, acdb_instance_id_support); check_and_set_instance_id_support(mixer, acdb_instance_id_support); cleanup: if (NULL != my_data) { Loading
hal/acdb.h +19 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading @@ -20,6 +20,7 @@ #ifndef ACDB_H #define ACDB_H #include <stdbool.h> #include <linux/msm_audio_calibration.h> #define MAX_CVD_VERSION_STRING_SIZE 100 Loading @@ -33,11 +34,19 @@ #define PLATFORM_INFO_XML_PATH "/vendor/etc/audio_platform_info.xml" #endif enum { ACDB_LOADER_INIT_V1 = 1, ACDB_LOADER_INIT_V2, ACDB_LOADER_INIT_V3, ACDB_LOADER_INIT_V4, }; /* Audio calibration related functions */ typedef void (*acdb_deallocate_t)(); typedef int (*acdb_init_t)(); typedef int (*acdb_init_v2_t)(const char *, char *, int); typedef int (*acdb_init_v3_t)(const char *, char *, struct listnode *); typedef int (*acdb_init_v4_t)(void *, int); typedef void (*acdb_send_audio_cal_t)(int, int, int , int); typedef void (*acdb_send_audio_cal_v3_t)(int, int, int, int, int); typedef void (*acdb_send_voice_cal_t)(int, int); Loading @@ -58,13 +67,22 @@ struct meta_key_list { char name[ACDB_METAINFO_KEY_MODULE_NAME_LEN]; }; struct acdb_init_data_v4 { char *cvd_version; char *snd_card_name; struct listnode *meta_key_list; bool *is_instance_id_supported; }; struct acdb_platform_data { /* Audio calibration related functions */ void *acdb_handle; acdb_init_t acdb_init; acdb_init_v2_t acdb_init_v2; acdb_init_v3_t acdb_init_v3; acdb_init_v4_t acdb_init_v4; struct listnode acdb_meta_key_list; struct acdb_init_data_v4 acdb_init_data; }; int acdb_init(int); Loading
hal/audio_extn/audio_extn.h +39 −8 Original line number Diff line number Diff line Loading @@ -792,6 +792,8 @@ int audio_extn_keep_alive_set_parameters(struct audio_device *adev, #define audio_extn_gef_init(adev) (0) #define audio_extn_gef_deinit() (0) #define audio_extn_gef_notify_device_config(devices, cmask, sample_rate, acdb_id) (0) #ifndef INSTANCE_ID_ENABLED #define audio_extn_gef_send_audio_cal(dev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, param_id, data, length, persist) (0) #define audio_extn_gef_get_audio_cal(adev, acdb_dev_id, acdb_device_type,\ Loading @@ -800,6 +802,20 @@ int audio_extn_keep_alive_set_parameters(struct audio_device *adev, app_type, topology_id, sample_rate, module_id, param_id, data, length) (0) #define audio_extn_gef_retrieve_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, param_id, data, length) (0) #else #define audio_extn_gef_send_audio_cal(dev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length, persist) (0) #define audio_extn_gef_get_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length, persist) (0) #define audio_extn_gef_store_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length) (0) #define audio_extn_gef_retrieve_audio_cal(adev, acdb_dev_id, acdb_device_type,\ app_type, topology_id, sample_rate, module_id, instance_id, param_id, data,\ length) (0) #endif #else Loading @@ -808,18 +824,33 @@ void audio_extn_gef_deinit(); void audio_extn_gef_notify_device_config(audio_devices_t audio_device, audio_channel_mask_t channel_mask, int sample_rate, int acdb_id); #ifndef INSTANCE_ID_ENABLED int audio_extn_gef_send_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length, bool persist); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length, bool persist); int audio_extn_gef_get_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length, bool persist); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length, bool persist); int audio_extn_gef_store_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int length); int audio_extn_gef_retrieve_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length); int app_type, int topology_id, int sample_rate, uint32_t module_id, uint32_t param_id, void* data, int* length); #else int audio_extn_gef_send_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int length, bool persist); int audio_extn_gef_get_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int* length, bool persist); int audio_extn_gef_store_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int length); int audio_extn_gef_retrieve_audio_cal(void* adev, int acdb_dev_id, int acdb_device_type, int app_type, int topology_id, int sample_rate, uint32_t module_id, uint16_t instance_id, uint32_t param_id, void* data, int* length); #endif #endif /* AUDIO_GENERIC_EFFECT_FRAMEWORK_ENABLED */ Loading