sound: usb: Handle implicit feedback data endpoint properly

For the devices supporting implicit feedback over data endpoint
usb audio driver instantiates snd_usb_endpoint as sync_endpoint
even though there is no real usb sync endpoint exists. QMI driver
looks for usb endpoint if sync_endpoint is instantiated and bails
out if endpoint related context does not exist. This causes such
devices to not work. Hence do not bail out if sync ep context
does not exist and continue preparing the QMI response.

Change-Id: I7d96555573cfd6cca1ca56c877d78fde943f8100
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This commit is contained in:
Hemant Kumar 2016-12-06 18:34:40 -08:00
parent 5142c18bae
commit 10957dd96e

View file

@ -495,9 +495,8 @@ static int prepare_qmi_response(struct snd_usb_substream *subs,
if (subs->sync_endpoint) {
ep = usb_pipe_endpoint(subs->dev, subs->sync_endpoint->pipe);
if (!ep) {
pr_err("%s: sync ep # %d context is null\n", __func__,
subs->sync_endpoint->ep_num);
goto err;
pr_debug("%s: implicit fb on data ep\n", __func__);
goto skip_sync_ep;
}
memcpy(&resp->std_as_sync_ep_desc, &ep->desc, sizeof(ep->desc));
resp->std_as_sync_ep_desc_valid = 1;
@ -511,6 +510,7 @@ static int prepare_qmi_response(struct snd_usb_substream *subs,
resp->xhci_mem_info.tr_sync.pa = xhci_pa;
}
skip_sync_ep:
resp->interrupter_num = uaudio_qdev->intr_num;
resp->interrupter_num_valid = 1;