Loading sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +23 −1 Original line number Diff line number Diff line Loading @@ -449,6 +449,28 @@ static void compr_event_handler(uint32_t opcode, } else msm_compr_send_buffer(prtd); } /* * The condition below ensures playback finishes in the * follow cornercase * WRITE(last buffer) * WAIT_FOR_DRAIN * PAUSE * WRITE_DONE(X) * RESUME */ if ((prtd->copied_total == prtd->bytes_sent) && atomic_read(&prtd->drain)) { pr_debug("RUN ack, wake up & continue pending drain\n"); if (prtd->last_buffer) prtd->last_buffer = 0; prtd->drain_ready = 1; wake_up(&prtd->drain_wait); atomic_set(&prtd->drain, 0); } spin_unlock_irqrestore(&prtd->lock, flags); break; case ASM_STREAM_CMD_FLUSH: Loading Loading @@ -1149,7 +1171,7 @@ static int msm_compr_drain_buffer(struct msm_compr_audio *prtd, prtd->drain_ready || prtd->cmd_interrupt || atomic_read(&prtd->xrun)); pr_debug("%s: out of buffer drain wait\n", __func__); pr_debug("%s: out of buffer drain wait with ret %d\n", __func__, rc); spin_lock_irqsave(&prtd->lock, *flags); if (prtd->cmd_interrupt) { pr_debug("%s: buffer drain interrupted by flush)\n", __func__); Loading Loading
sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +23 −1 Original line number Diff line number Diff line Loading @@ -449,6 +449,28 @@ static void compr_event_handler(uint32_t opcode, } else msm_compr_send_buffer(prtd); } /* * The condition below ensures playback finishes in the * follow cornercase * WRITE(last buffer) * WAIT_FOR_DRAIN * PAUSE * WRITE_DONE(X) * RESUME */ if ((prtd->copied_total == prtd->bytes_sent) && atomic_read(&prtd->drain)) { pr_debug("RUN ack, wake up & continue pending drain\n"); if (prtd->last_buffer) prtd->last_buffer = 0; prtd->drain_ready = 1; wake_up(&prtd->drain_wait); atomic_set(&prtd->drain, 0); } spin_unlock_irqrestore(&prtd->lock, flags); break; case ASM_STREAM_CMD_FLUSH: Loading Loading @@ -1149,7 +1171,7 @@ static int msm_compr_drain_buffer(struct msm_compr_audio *prtd, prtd->drain_ready || prtd->cmd_interrupt || atomic_read(&prtd->xrun)); pr_debug("%s: out of buffer drain wait\n", __func__); pr_debug("%s: out of buffer drain wait with ret %d\n", __func__, rc); spin_lock_irqsave(&prtd->lock, *flags); if (prtd->cmd_interrupt) { pr_debug("%s: buffer drain interrupted by flush)\n", __func__); Loading