mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
ALSA: usb-audio: qcom: Don't allow USB offload path if PCM device is in use
Add proper checks and updates to the USB substream once receiving a USB QMI stream enable request. If the substream is already in use from the non offload path, reject the stream enable request. In addition, update the USB substream opened parameter when enabling the offload path, so the non offload path can be blocked. Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com> Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20250409194804.3773260-30-quic_wcheng@quicinc.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
326bbc3482
commit
6a348e9236
|
|
@ -1567,12 +1567,17 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle,
|
|||
goto response;
|
||||
}
|
||||
|
||||
mutex_lock(&chip->mutex);
|
||||
if (req_msg->enable) {
|
||||
if (info_idx < 0 || chip->system_suspend) {
|
||||
if (info_idx < 0 || chip->system_suspend || subs->opened) {
|
||||
ret = -EBUSY;
|
||||
mutex_unlock(&chip->mutex);
|
||||
|
||||
goto response;
|
||||
}
|
||||
subs->opened = 1;
|
||||
}
|
||||
mutex_unlock(&chip->mutex);
|
||||
|
||||
if (req_msg->service_interval_valid) {
|
||||
ret = get_data_interval_from_si(subs,
|
||||
|
|
@ -1594,6 +1599,11 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle,
|
|||
if (!ret)
|
||||
ret = prepare_qmi_response(subs, req_msg, &resp,
|
||||
info_idx);
|
||||
if (ret < 0) {
|
||||
mutex_lock(&chip->mutex);
|
||||
subs->opened = 0;
|
||||
mutex_unlock(&chip->mutex);
|
||||
}
|
||||
} else {
|
||||
info = &uadev[pcm_card_num].info[info_idx];
|
||||
if (info->data_ep_pipe) {
|
||||
|
|
@ -1623,6 +1633,9 @@ static void handle_uaudio_stream_req(struct qmi_handle *handle,
|
|||
}
|
||||
|
||||
disable_audio_stream(subs);
|
||||
mutex_lock(&chip->mutex);
|
||||
subs->opened = 0;
|
||||
mutex_unlock(&chip->mutex);
|
||||
}
|
||||
|
||||
response:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user