Loading drivers/usb/gadget/function/f_audio_source.c +24 −3 Original line number Diff line number Diff line Loading @@ -365,15 +365,22 @@ static void audio_send(struct audio_dev *audio) s64 msecs; s64 frames; ktime_t now; unsigned long flags; spin_lock_irqsave(&audio->lock, flags); /* audio->substream will be null if we have been closed */ if (!audio->substream) if (!audio->substream) { spin_unlock_irqrestore(&audio->lock, flags); return; } /* audio->buffer_pos will be null if we have been stopped */ if (!audio->buffer_pos) if (!audio->buffer_pos) { spin_unlock_irqrestore(&audio->lock, flags); return; } runtime = audio->substream->runtime; spin_unlock_irqrestore(&audio->lock, flags); /* compute number of frames to send */ now = ktime_get(); Loading @@ -397,8 +404,21 @@ static void audio_send(struct audio_dev *audio) while (frames > 0) { req = audio_req_get(audio); if (!req) spin_lock_irqsave(&audio->lock, flags); /* audio->substream will be null if we have been closed */ if (!audio->substream) { spin_unlock_irqrestore(&audio->lock, flags); return; } /* audio->buffer_pos will be null if we have been stopped */ if (!audio->buffer_pos) { spin_unlock_irqrestore(&audio->lock, flags); return; } if (!req) { spin_unlock_irqrestore(&audio->lock, flags); break; } length = frames_to_bytes(runtime, frames); if (length > IN_EP_MAX_PACKET_SIZE) Loading @@ -424,6 +444,7 @@ static void audio_send(struct audio_dev *audio) } req->length = length; spin_unlock_irqrestore(&audio->lock, flags); ret = usb_ep_queue(audio->in_ep, req, GFP_ATOMIC); if (ret < 0) { pr_err("usb_ep_queue failed ret: %d\n", ret); Loading Loading
drivers/usb/gadget/function/f_audio_source.c +24 −3 Original line number Diff line number Diff line Loading @@ -365,15 +365,22 @@ static void audio_send(struct audio_dev *audio) s64 msecs; s64 frames; ktime_t now; unsigned long flags; spin_lock_irqsave(&audio->lock, flags); /* audio->substream will be null if we have been closed */ if (!audio->substream) if (!audio->substream) { spin_unlock_irqrestore(&audio->lock, flags); return; } /* audio->buffer_pos will be null if we have been stopped */ if (!audio->buffer_pos) if (!audio->buffer_pos) { spin_unlock_irqrestore(&audio->lock, flags); return; } runtime = audio->substream->runtime; spin_unlock_irqrestore(&audio->lock, flags); /* compute number of frames to send */ now = ktime_get(); Loading @@ -397,8 +404,21 @@ static void audio_send(struct audio_dev *audio) while (frames > 0) { req = audio_req_get(audio); if (!req) spin_lock_irqsave(&audio->lock, flags); /* audio->substream will be null if we have been closed */ if (!audio->substream) { spin_unlock_irqrestore(&audio->lock, flags); return; } /* audio->buffer_pos will be null if we have been stopped */ if (!audio->buffer_pos) { spin_unlock_irqrestore(&audio->lock, flags); return; } if (!req) { spin_unlock_irqrestore(&audio->lock, flags); break; } length = frames_to_bytes(runtime, frames); if (length > IN_EP_MAX_PACKET_SIZE) Loading @@ -424,6 +444,7 @@ static void audio_send(struct audio_dev *audio) } req->length = length; spin_unlock_irqrestore(&audio->lock, flags); ret = usb_ep_queue(audio->in_ep, req, GFP_ATOMIC); if (ret < 0) { pr_err("usb_ep_queue failed ret: %d\n", ret); Loading