Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f62e17db authored by Jaekyun Seok's avatar Jaekyun Seok
Browse files

Treblize config files of QCom audio HAL

Test: building succeeded and tested on sailfish
Bug: 35641486
Change-Id: Ic429d39e9151b2c49580ace41dbd75d98f66a1e1
parent e4b673e7
Loading
Loading
Loading
Loading
+30 −7
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@
#include "audio_extn.h"
#include <linux/msm_audio.h>

#define MIXER_XML_DEFAULT_PATH "/system/etc/mixer_paths.xml"
#define MIXER_XML_BASE_STRING "/system/etc/mixer_paths"
#define MIXER_XML_DEFAULT_PATH "mixer_paths.xml"
#define MIXER_XML_BASE_STRING "mixer_paths"
#define TOMTOM_8226_SND_CARD_NAME "msm8226-tomtom-snd-card"
#define TOMTOM_MIXER_FILE_SUFFIX "wcd9330"

@@ -1083,6 +1083,28 @@ platform_backend_config_init(struct platform_data *pdata)
            strdup("USB_AUDIO_RX Channels");
}

// 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 value[PROPERTY_VALUE_MAX];
@@ -1166,15 +1188,15 @@ void *platform_init(struct audio_device *adev)
            snprintf(mixer_xml_file, sizeof(mixer_xml_file), "%s_%s_%s.xml",
                             MIXER_XML_BASE_STRING, snd_split_handle->snd_card,
                             snd_split_handle->form_factor);

            if (F_OK != access(mixer_xml_file, 0)) {
            if (!resolveConfigFile(mixer_xml_file)) {
                memset(mixer_xml_file, 0, sizeof(mixer_xml_file));
                snprintf(mixer_xml_file, sizeof(mixer_xml_file), "%s_%s.xml",
                             MIXER_XML_BASE_STRING, snd_split_handle->snd_card);

                if (F_OK != access(mixer_xml_file, 0)) {
                if (!resolveConfigFile(mixer_xml_file)) {
                    memset(mixer_xml_file, 0, sizeof(mixer_xml_file));
                    strlcpy(mixer_xml_file, MIXER_XML_DEFAULT_PATH, MIXER_PATH_MAX_LENGTH);
                    resolveConfigFile(mixer_xml_file);
                }
            }

@@ -1182,14 +1204,15 @@ void *platform_init(struct audio_device *adev)
                             PLATFORM_INFO_XML_BASE_STRING, snd_split_handle->snd_card,
                             snd_split_handle->form_factor);

            if (F_OK != access(platform_info_file, 0)) {
            if (!resolveConfigFile(platform_info_file)) {
                memset(platform_info_file, 0, sizeof(platform_info_file));
                snprintf(platform_info_file, sizeof(platform_info_file), "%s_%s.xml",
                             PLATFORM_INFO_XML_BASE_STRING, snd_split_handle->snd_card);

                if (F_OK != access(platform_info_file, 0)) {
                if (!resolveConfigFile(platform_info_file)) {
                    memset(platform_info_file, 0, sizeof(platform_info_file));
                    strlcpy(platform_info_file, PLATFORM_INFO_XML_PATH, MIXER_PATH_MAX_LENGTH);
                    resolveConfigFile(platform_info_file);
                }
            }
        }
+2 −2
Original line number Diff line number Diff line
@@ -364,6 +364,6 @@ typedef struct codec_backend_cfg {
    char     *channels_mixer_ctl;
} codec_backend_cfg_t;

#define PLATFORM_INFO_XML_PATH          "/system/etc/audio_platform_info.xml"
#define PLATFORM_INFO_XML_BASE_STRING   "/system/etc/audio_platform_info"
#define PLATFORM_INFO_XML_PATH          "audio_platform_info.xml"
#define PLATFORM_INFO_XML_BASE_STRING   "audio_platform_info"
#endif // QCOM_AUDIO_PLATFORM_H