|
@@ -143,7 +143,6 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req)
|
|
|
update_alsa = true;
|
|
|
|
|
|
hw_ptr = prm->hw_ptr;
|
|
|
- prm->hw_ptr = (prm->hw_ptr + req->actual) % prm->dma_bytes;
|
|
|
|
|
|
spin_unlock_irqrestore(&prm->lock, flags);
|
|
|
|
|
@@ -168,6 +167,11 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ spin_lock_irqsave(&prm->lock, flags);
|
|
|
+ /* update hw_ptr after data is copied to memory */
|
|
|
+ prm->hw_ptr = (hw_ptr + req->actual) % prm->dma_bytes;
|
|
|
+ spin_unlock_irqrestore(&prm->lock, flags);
|
|
|
+
|
|
|
exit:
|
|
|
if (usb_ep_queue(ep, req, GFP_ATOMIC))
|
|
|
dev_err(uac->card->dev, "%d Error!\n", __LINE__);
|