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

Commit 8225243c authored by Laxminath Kasam's avatar Laxminath Kasam
Browse files

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
parent 73e2ea70
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -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;
}
+6 −0
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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;
}
+53 −0
Original line number Diff line number Diff line
@@ -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;
}
+6 −0
Original line number Diff line number Diff line
@@ -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
Loading