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

Commit b9aeca99 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "hal: check for usb card state before setting in/out device"

parents 27c55a8e d6a9e0c6
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -5728,6 +5728,13 @@ int adev_open_output_stream(struct audio_hw_device *dev,
                      (devices != AUDIO_DEVICE_OUT_USB_ACCESSORY);
    bool direct_dev = is_hdmi || is_usb_dev;

    if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
        is_usb_dev = false;
        devices = AUDIO_DEVICE_OUT_SPEAKER;
        ALOGW("%s: ignore set device to non existing USB card, use output device(%#x)",
              __func__, devices);
    }

    *stream_out = NULL;

    out = (struct stream_out *)calloc(1, sizeof(struct stream_out));
@@ -5780,14 +5787,6 @@ int adev_open_output_stream(struct audio_hw_device *dev,
           ALOGV("AUDIO_DEVICE_OUT_AUX_DIGITAL and DIRECT|OFFLOAD, check hdmi caps");
           ret = read_hdmi_sink_caps(out);
       } else if (is_usb_dev) {
            /* Check against usb headset connection state */
            if (!audio_extn_usb_connected(NULL)) {
                ALOGD("%s: usb headset unplugged", __func__);
                ret = -EINVAL;
                pthread_mutex_unlock(&adev->lock);
                goto error_open;
            }

            ret = read_usb_sup_params_and_compare(true /*is_playback*/,
                                                  &config->format,
                                                  &out->supported_formats[0],
@@ -6859,6 +6858,13 @@ static int adev_open_input_stream(struct audio_hw_device *dev,
                                                            flags,
                                                            source);

    if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
        is_usb_dev = false;
        devices = AUDIO_DEVICE_IN_BUILTIN_MIC;
        ALOGW("%s: ignore set device to non existing USB card, use input device(%#x)",
              __func__, devices);
    }

    *stream_in = NULL;

    if (!(is_usb_dev && may_use_hifi_record)) {
@@ -6922,16 +6928,6 @@ static int adev_open_input_stream(struct audio_hw_device *dev,
    }

    if (is_usb_dev && may_use_hifi_record) {
        /* Check against usb headset connection state */
        pthread_mutex_lock(&adev->lock);
        if (!audio_extn_usb_connected(NULL)) {
            ALOGD("%s: usb headset unplugged", __func__);
            ret = -EINVAL;
            pthread_mutex_unlock(&adev->lock);
            goto err_open;
        }
        pthread_mutex_unlock(&adev->lock);

        /* HiFi record selects an appropriate format, channel, rate combo
           depending on sink capabilities*/
        ret = read_usb_sup_params_and_compare(false /*is_playback*/,