summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Borisov <dedsa2002@gmail.com>2017-12-02 20:19:25 +0300
committerNolen Johnson <johnsonnolen@gmail.com>2020-01-13 18:25:40 +0000
commit6890961f100ace20d75070b4bdf2abb810d7dab9 (patch)
tree2419bdb9c73e61bec556ba7d7673629019c2302f
parent17c0c341a2d38b307e87300dab303c86b5dc1af3 (diff)
downloadandroid_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.c28
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;