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

Commit 7d374316 authored by Vignesh Kulothungan's avatar Vignesh Kulothungan Committed by Gerrit - the friendly Code Review server
Browse files

hal: Add support for Mic break detection

Send request to driver, to enable mic break detection algorithm in ADSP
based on system feature flag during the start of a voice call.

CRs-Fixed: 2314972
Change-Id: I78b0c0ad839dfe513d05c4e8fdc8db7277549124
parent 0dd741a1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7650,6 +7650,8 @@ static int adev_open(const hw_module_t *module, const char *name,
        }
    }

    adev->mic_break_enabled = property_get_bool("vendor.audio.mic_break", false);

    if (property_get("vendor.audio_hal.period_multiplier", value, NULL) > 0) {
        af_period_multiplier = atoi(value);
        if (af_period_multiplier < 0)
+1 −0
Original line number Diff line number Diff line
@@ -487,6 +487,7 @@ struct audio_device {
    bool bt_wb_speech_enabled;
    bool allow_afe_proxy_usage;
    bool is_charging; // from battery listener
    bool mic_break_enabled;

    int snd_card;
    card_status_t card_status;
+5 −0
Original line number Diff line number Diff line
@@ -3647,6 +3647,11 @@ int platform_start_voice_call(void *platform, uint32_t vsid)
    return ret;
}

int platform_set_mic_break_det(void *platform __unused, bool enable __unused)
{
    return 0;
}

int platform_stop_voice_call(void *platform, uint32_t vsid)
{
    struct platform_data *my_data = (struct platform_data *)platform;
+20 −0
Original line number Diff line number Diff line
@@ -3510,6 +3510,26 @@ int platform_stop_voice_call(void *platform, uint32_t vsid)
    return ret;
}

int platform_set_mic_break_det(void *platform, bool enable)
{
    int ret = 0;
    struct platform_data *my_data = (struct platform_data *)platform;
    struct audio_device *adev = my_data->adev;
    const char *mixer_ctl_name = "Voice Mic Break Enable";
    struct mixer_ctl *ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
    if (!ctl) {
        ALOGE("%s: Could not get ctl for mixer cmd - %s",
              __func__, mixer_ctl_name);
        return -EINVAL;
    }

    ret = mixer_ctl_set_value(ctl, 0, enable);
    if(ret)
        ALOGE("%s: Failed to set mixer ctl: %s", __func__, mixer_ctl_name);

    return ret;
}

int platform_get_sample_rate(void *platform, uint32_t *rate)
{
    struct platform_data *my_data = (struct platform_data *)platform;
+1 −0
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ int platform_switch_voice_call_usecase_route_post(void *platform,
                                                  snd_device_t in_snd_device);
int platform_start_voice_call(void *platform, uint32_t vsid);
int platform_stop_voice_call(void *platform, uint32_t vsid);
int platform_set_mic_break_det(void *platform, bool enable);
int platform_set_voice_volume(void *platform, int volume);
int platform_set_mic_mute(void *platform, bool state);
int platform_get_sample_rate(void *platform, uint32_t *rate);
Loading