Let the pipeline know if no data has entered the capture buffers at stream start.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- src/audio/dai.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/src/audio/dai.c b/src/audio/dai.c index 2fbfc5f..558369f 100644 --- a/src/audio/dai.c +++ b/src/audio/dai.c @@ -528,6 +528,7 @@ static int dai_cmd(struct comp_dev *dev, int cmd, void *data) break; case COMP_CMD_XRUN: dd->xrun = 1; + /* fall through */ case COMP_CMD_PAUSE: case COMP_CMD_STOP: wait_init(&dd->complete); @@ -550,6 +551,12 @@ static int dai_cmd(struct comp_dev *dev, int cmd, void *data) /* copy and process stream data from source to sink buffers */ static int dai_copy(struct comp_dev *dev) { + /* has data entered the capture buffer yet ? */ + if (dev->params.direction == SOF_IPC_STREAM_CAPTURE && + dev->position == 0) { + /* tell pipeline not to process downstream */ + return -ENODATA; + } return 0; }