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

Commit bd55e0be authored by Xiaojun Sang's avatar Xiaojun Sang
Browse files

hal: set backend channel number to one for mono speaker

Channel number is set incorreclty without consideration of
actual number of speakers. Set backend channel number to one
for mono speaker.

Change-Id: I93970337fb86d0805f4c4c1e1961a928095f3ba8
parent 0dd741a1
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -3218,6 +3218,22 @@ int native_audio_set_params(struct platform_data *platform,
    return ret;
}

static bool check_snd_device_is_speaker(snd_device_t snd_device)
{
    bool ret = false;

    if (snd_device == SND_DEVICE_OUT_SPEAKER ||
        snd_device == SND_DEVICE_OUT_SPEAKER_WSA ||
        snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
        snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED ||
        snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT ||
        snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS ||
        snd_device == SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS) {
        ret = true;
    }
    return ret;
}

int check_hdset_combo_device(snd_device_t snd_device)
{
    int ret = false;
@@ -6371,7 +6387,12 @@ bool platform_check_and_set_codec_backend_cfg(struct audio_device* adev,
        backend_cfg.bit_width = usecase->stream.out->bit_width;
        backend_cfg.sample_rate = usecase->stream.out->sample_rate;
        backend_cfg.format = usecase->stream.out->format;
        backend_cfg.channels = audio_channel_count_from_out_mask(usecase->stream.out->channel_mask);
        if (!(hw_info_is_stereo_spkr(my_data->hw_info)) &&
             check_snd_device_is_speaker(snd_device))
            backend_cfg.channels = 1;
        else
            backend_cfg.channels =
                audio_channel_count_from_out_mask(usecase->stream.out->channel_mask);
    }
    if (audio_extn_is_dsp_bit_width_enforce_mode_supported(usecase->stream.out->flags) &&
                (adev->dsp_bit_width_enforce_mode > backend_cfg.bit_width))