diff options
author | Artem Borisov <dedsa2002@gmail.com> | 2017-12-02 20:19:25 +0300 |
---|---|---|
committer | Nolen Johnson <johnsonnolen@gmail.com> | 2020-01-13 18:25:40 +0000 |
commit | 6890961f100ace20d75070b4bdf2abb810d7dab9 (patch) | |
tree | 2419bdb9c73e61bec556ba7d7673629019c2302f | |
parent | 17c0c341a2d38b307e87300dab303c86b5dc1af3 (diff) | |
download | android_hardware_qcom_audio-6890961f100ace20d75070b4bdf2abb810d7dab9.tar.gz android_hardware_qcom_audio-6890961f100ace20d75070b4bdf2abb810d7dab9.tar.bz2 android_hardware_qcom_audio-6890961f100ace20d75070b4bdf2abb810d7dab9.zip |
msm8960: treblize configuration
Loosely based on f62e17dbf9e88eae1371b42c59a8f48b736abb8a
Change-Id: I63e873b743d2de85d6c44491bf2aed4c8e41e0e5
-rw-r--r-- | hal/msm8960/platform.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c index ae65ef21..8483bc9d 100644 --- a/hal/msm8960/platform.c +++ b/hal/msm8960/platform.c @@ -38,7 +38,7 @@ * This is the sysfs path for the HDMI audio data block */ #define AUDIO_DATA_BLOCK_PATH "/sys/class/graphics/fb1/audio_data_block" -#define MIXER_XML_PATH "/system/etc/mixer_paths.xml" +#define MIXER_XML_PATH "mixer_paths.xml" /* * This file will have a maximum of 38 bytes: @@ -268,12 +268,35 @@ static int set_echo_reference(struct mixer *mixer, const char* ec_ref) return 0; } +// Treblized config files will be located in /odm/etc or /vendor/etc. +static const char *kConfigLocationList[] = + {"/odm/etc", "/vendor/etc", "/system/etc"}; +static const int kConfigLocationListSize = + (sizeof(kConfigLocationList) / sizeof(kConfigLocationList[0])); + +bool resolveConfigFile(char file_name[MIXER_PATH_MAX_LENGTH]) { + char full_config_path[MIXER_PATH_MAX_LENGTH]; + for (int i = 0; i < kConfigLocationListSize; i++) { + snprintf(full_config_path, + MIXER_PATH_MAX_LENGTH, + "%s/%s", + kConfigLocationList[i], + file_name); + if (F_OK == access(full_config_path, 0)) { + strcpy(file_name, full_config_path); + return true; + } + } + return false; +} + void *platform_init(struct audio_device *adev) { char platform[PROPERTY_VALUE_MAX]; char baseband[PROPERTY_VALUE_MAX]; char value[PROPERTY_VALUE_MAX]; struct platform_data *my_data; + char mixer_xml_file[MIXER_PATH_MAX_LENGTH] = MIXER_XML_PATH; adev->mixer = mixer_open(MIXER_CARD); @@ -282,7 +305,8 @@ void *platform_init(struct audio_device *adev) return NULL; } - adev->audio_route = audio_route_init(MIXER_CARD, MIXER_XML_PATH); + resolveConfigFile(mixer_xml_file); + adev->audio_route = audio_route_init(MIXER_CARD, mixer_xml_file); if (!adev->audio_route) { ALOGE("%s: Failed to init audio route controls, aborting.", __func__); return NULL; |