hal: audio: add tz_names extn to support from audio platform_info xml
To add Speaker TZ names from audio_platform_info xml, add required support. Change-Id: Idd31ed9e7b7235245c3dda4ccb11b47762db5ee8
This commit is contained in:
parent
73e2ea70d2
commit
8225243c24
|
@ -4090,3 +4090,57 @@ int platform_set_audio_device_interface(const char * device_name,
|
|||
done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a lookup table to map names of speaker device with respective left and right TZ names.
|
||||
* Also the tz names for a particular left or right speaker can be overriden by adding
|
||||
* corresponding entry in audio_platform_info.xml file.
|
||||
*/
|
||||
struct speaker_device_to_tz_names speaker_device_tz_names = {
|
||||
{SND_DEVICE_OUT_SPEAKER, "", ""},
|
||||
};
|
||||
|
||||
const char *platform_get_spkr_1_tz_name(snd_device_t snd_device)
|
||||
{
|
||||
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX)
|
||||
return speaker_device_tz_names.spkr_1_tz_name;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
const char *platform_get_spkr_2_tz_name(snd_device_t snd_device)
|
||||
{
|
||||
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX)
|
||||
return speaker_device_tz_names.spkr_2_tz_name;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
int platform_set_spkr_device_tz_names(snd_device_t index,
|
||||
const char *spkr_1_tz_name, const char *spkr_2_tz_name)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (spkr_1_tz_name == NULL && spkr_2_tz_name == NULL) {
|
||||
ALOGE("%s: Invalid input", __func__);
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
if (index != speaker_device_tz_names.snd_device) {
|
||||
ALOGE("%s: not matching speaker device\n");
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
ALOGD("%s: Enter, spkr_1_tz_name :%s, spkr_2_tz_name:%s",
|
||||
__func__, spkr_1_tz_name, spkr_2_tz_name);
|
||||
|
||||
if (spkr_1_tz_name != NULL)
|
||||
strlcpy(speaker_device_tz_names.spkr_1_tz_name, spkr_1_tz_name,
|
||||
sizeof(speaker_device_tz_names.spkr_1_tz_name));
|
||||
|
||||
if (spkr_2_tz_name != NULL)
|
||||
strlcpy(speaker_device_tz_names.spkr_2_tz_name, spkr_2_tz_name,
|
||||
sizeof(speaker_device_tz_names.spkr_2_tz_name));
|
||||
done:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -306,4 +306,10 @@ struct audio_device_to_audio_interface {
|
|||
char device_name[100];
|
||||
char interface_name[100];
|
||||
};
|
||||
|
||||
struct speaker_device_to_tz_names {
|
||||
snd_device_t snd_device;
|
||||
char spkr_1_tz_name[100];
|
||||
char spkr_2_tz_name[100];
|
||||
};
|
||||
#endif // QCOM_AUDIO_PLATFORM_H
|
||||
|
|
|
@ -1160,3 +1160,9 @@ int platform_set_audio_device_interface(const char * device_name __unused,
|
|||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
int platform_set_spkr_device_tz_names(snd_device_t index,
|
||||
const char *spkr_1_tz_name, const char *spkr_2_tz_name)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
|
|
@ -696,6 +696,14 @@ static int msm_device_to_be_id [][NO_COLS] = {
|
|||
static int msm_be_id_array_len =
|
||||
sizeof(msm_device_to_be_id) / sizeof(msm_device_to_be_id[0]);
|
||||
|
||||
/*
|
||||
* This is a lookup table to map names of speaker device with respective left and right TZ names.
|
||||
* Also the tz names for a particular left or right speaker can be overriden by adding
|
||||
* corresponding entry in audio_platform_info.xml file.
|
||||
*/
|
||||
struct speaker_device_to_tz_names speaker_device_tz_names = {
|
||||
{SND_DEVICE_OUT_SPEAKER, "", ""},
|
||||
};
|
||||
|
||||
#define DEEP_BUFFER_PLATFORM_DELAY (29*1000LL)
|
||||
#define LOW_LATENCY_PLATFORM_DELAY (13*1000LL)
|
||||
|
@ -1375,6 +1383,22 @@ const char *platform_get_snd_device_name(snd_device_t snd_device)
|
|||
return "";
|
||||
}
|
||||
|
||||
const char *platform_get_spkr_1_tz_name(snd_device_t snd_device)
|
||||
{
|
||||
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX)
|
||||
return speaker_device_tz_names.spkr_1_tz_name;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
const char *platform_get_spkr_2_tz_name(snd_device_t snd_device)
|
||||
{
|
||||
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX)
|
||||
return speaker_device_tz_names.spkr_2_tz_name;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
int platform_get_snd_device_name_extn(void *platform, snd_device_t snd_device,
|
||||
char *device_name)
|
||||
{
|
||||
|
@ -3993,3 +4017,32 @@ int platform_set_audio_device_interface(const char *device_name, const char *int
|
|||
done:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int platform_set_spkr_device_tz_names(snd_device_t index,
|
||||
const char *spkr_1_tz_name, const char *spkr_2_tz_name)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (spkr_1_tz_name == NULL && spkr_2_tz_name == NULL) {
|
||||
ALOGE("%s: Invalid input", __func__);
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
if (index != speaker_device_tz_names.snd_device) {
|
||||
ALOGE("%s: not matching speaker device\n");
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
ALOGD("%s: Enter, spkr_1_tz_name :%s, spkr_2_tz_name:%s",
|
||||
__func__, spkr_1_tz_name, spkr_2_tz_name);
|
||||
|
||||
if (spkr_1_tz_name != NULL)
|
||||
strlcpy(speaker_device_tz_names.spkr_1_tz_name, spkr_1_tz_name,
|
||||
sizeof(speaker_device_tz_names.spkr_1_tz_name));
|
||||
|
||||
if (spkr_2_tz_name != NULL)
|
||||
strlcpy(speaker_device_tz_names.spkr_2_tz_name, spkr_2_tz_name,
|
||||
sizeof(speaker_device_tz_names.spkr_2_tz_name));
|
||||
done:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -396,4 +396,10 @@ struct audio_device_to_audio_interface {
|
|||
char device_name[100];
|
||||
char interface_name[100];
|
||||
};
|
||||
|
||||
struct speaker_device_to_tz_names {
|
||||
snd_device_t snd_device;
|
||||
char spkr_1_tz_name[100];
|
||||
char spkr_2_tz_name[100];
|
||||
};
|
||||
#endif // QCOM_AUDIO_PLATFORM_H
|
||||
|
|
|
@ -115,4 +115,8 @@ int platform_set_hdmi_config(struct stream_out *out);
|
|||
int platform_set_device_params(struct stream_out *out, int param, int value);
|
||||
int platform_set_audio_device_interface(const char * device_name, const char *intf_name,
|
||||
const char * codec_type);
|
||||
int platform_set_spkr_device_tz_names(snd_device_t index,
|
||||
const char *spkr_1_tz_name, const char *spkr_2_tz_name);
|
||||
const char *platform_get_spkr_1_tz_name(snd_device_t snd_device);
|
||||
const char *platform_get_spkr_2_tz_name(snd_device_t snd_device);
|
||||
#endif // AUDIO_PLATFORM_API_H
|
||||
|
|
|
@ -48,6 +48,7 @@ typedef enum {
|
|||
PCM_ID,
|
||||
BACKEND_NAME,
|
||||
INTERFACE_NAME,
|
||||
TZ_NAME,
|
||||
} section_t;
|
||||
|
||||
typedef void (* section_process_fn)(const XML_Char **attr);
|
||||
|
@ -58,6 +59,7 @@ static void process_native_support(const XML_Char **attr);
|
|||
static void process_pcm_id(const XML_Char **attr);
|
||||
static void process_backend_name(const XML_Char **attr);
|
||||
static void process_interface_name(const XML_Char **attr);
|
||||
static void process_tz_name(const XML_Char **attr);
|
||||
static void process_root(const XML_Char **attr);
|
||||
|
||||
static section_process_fn section_table[] = {
|
||||
|
@ -68,6 +70,7 @@ static section_process_fn section_table[] = {
|
|||
[PCM_ID] = process_pcm_id,
|
||||
[BACKEND_NAME] = process_backend_name,
|
||||
[INTERFACE_NAME] = process_interface_name,
|
||||
[TZ_NAME] = process_tz_name,
|
||||
};
|
||||
|
||||
static section_t section;
|
||||
|
@ -94,6 +97,11 @@ static section_t section;
|
|||
* ...
|
||||
* ...
|
||||
* </interface_names>
|
||||
* <tz_names>
|
||||
* <device name="???" spkr_1_tz_name="???" spkr_2_tz_name="???"/>
|
||||
* ...
|
||||
* ...
|
||||
* </tz_names>
|
||||
* </audio_platform_info>
|
||||
*/
|
||||
|
||||
|
@ -308,6 +316,42 @@ done:
|
|||
return;
|
||||
}
|
||||
|
||||
static void process_tz_name(const XML_Char **attr)
|
||||
{
|
||||
int ret, index;
|
||||
|
||||
if (strcmp(attr[0], "name") != 0) {
|
||||
ALOGE("%s: 'name' not found, no Audio Interface set!", __func__);
|
||||
goto done;
|
||||
}
|
||||
|
||||
index = platform_get_snd_device_index((char *)attr[1]);
|
||||
if (index < 0) {
|
||||
ALOGE("%s: Device %s not found, no snd device set!",
|
||||
__func__, attr[1]);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (strcmp(attr[2], "spkr_1_tz_name") != 0) {
|
||||
ALOGE("%s: Device %s has no spkr_1_tz_name set!",
|
||||
__func__, attr[1]);
|
||||
}
|
||||
|
||||
if (strcmp(attr[4], "spkr_2_tz_name") != 0) {
|
||||
ALOGE("%s: Device %s has no spkr_2_tz_name set!",
|
||||
__func__, attr[1]);
|
||||
}
|
||||
|
||||
ret = platform_set_spkr_device_tz_names(index, (char *)attr[3], (char *)attr[5]);
|
||||
if (ret < 0) {
|
||||
ALOGE("%s: Audio Interface not set!", __func__);
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
return;
|
||||
}
|
||||
|
||||
static void start_tag(void *userdata __unused, const XML_Char *tag_name,
|
||||
const XML_Char **attr)
|
||||
{
|
||||
|
@ -327,10 +371,12 @@ static void start_tag(void *userdata __unused, const XML_Char *tag_name,
|
|||
section = INTERFACE_NAME;
|
||||
} else if (strcmp(tag_name, "native_configs") == 0) {
|
||||
section = NATIVESUPPORT;
|
||||
} else if (strcmp(tag_name, "tz_names") == 0) {
|
||||
section = TZ_NAME;
|
||||
} else if (strcmp(tag_name, "device") == 0) {
|
||||
if ((section != ACDB) && (section != BACKEND_NAME) && (section != BITWIDTH) &&
|
||||
(section != INTERFACE_NAME)) {
|
||||
ALOGE("device tag only supported for acdb/backend names/bitwitdh/interface names");
|
||||
(section != INTERFACE_NAME) && (section != TZ_NAME)) {
|
||||
ALOGE("device tag only supported for acdb/backend names/bitwitdh/interface/tz names");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue