diff --git a/src/audio/dai-zephyr.c b/src/audio/dai-zephyr.c index bbe0e7aec3dd..df6834a6e71a 100644 --- a/src/audio/dai-zephyr.c +++ b/src/audio/dai-zephyr.c @@ -1059,11 +1059,9 @@ static int dai_comp_trigger_internal(struct comp_dev *dev, int cmd) /* only start the DAI if we are not XRUN handling */ if (dd->xrun == 0) { /* recover valid start position */ - if (dev->state == COMP_STATE_ACTIVE) { - ret = dma_stop(dd->chan->dma->z_dev, dd->chan->index); - if (ret < 0) - return ret; - } + ret = dma_stop(dd->chan->dma->z_dev, dd->chan->index); + if (ret < 0) + return ret; /* dma_config needed after stop */ ret = dma_config(dd->chan->dma->z_dev, dd->chan->index, dd->z_config); @@ -1101,23 +1099,12 @@ static int dai_comp_trigger_internal(struct comp_dev *dev, int cmd) dai_trigger_op(dd->dai, cmd, dev->direction); #else dai_trigger_op(dd->dai, cmd, dev->direction); - if (dev->state == COMP_STATE_ACTIVE) { - ret = dma_stop(dd->chan->dma->z_dev, dd->chan->index); - } else { - comp_warn(dev, "dma was stopped earlier"); - ret = 0; - } + ret = dma_stop(dd->chan->dma->z_dev, dd->chan->index); #endif break; case COMP_TRIGGER_PAUSE: comp_dbg(dev, "dai_comp_trigger_internal(), PAUSE"); - if (dev->state == COMP_STATE_ACTIVE) { - ret = dma_suspend(dd->chan->dma->z_dev, dd->chan->index); - } else { - comp_warn(dev, "dma was stopped earlier"); - ret = 0; - } - + ret = dma_suspend(dd->chan->dma->z_dev, dd->chan->index); dai_trigger_op(dd->dai, cmd, dev->direction); break; case COMP_TRIGGER_PRE_START: diff --git a/src/audio/host-zephyr.c b/src/audio/host-zephyr.c index b15e1d4b6a59..3df579a88f81 100644 --- a/src/audio/host-zephyr.c +++ b/src/audio/host-zephyr.c @@ -628,13 +628,10 @@ static int host_trigger(struct comp_dev *dev, int cmd) break; case COMP_TRIGGER_STOP: case COMP_TRIGGER_XRUN: - if (dev->state == COMP_STATE_ACTIVE) { - ret = dma_stop(hd->chan->dma->z_dev, hd->chan->index); - if (ret < 0) - comp_err(dev, "host_trigger(): dma stop failed: %d", - ret); - } - + ret = dma_stop(hd->chan->dma->z_dev, hd->chan->index); + if (ret < 0) + comp_err(dev, "host_trigger(): dma stop failed: %d", + ret); break; default: break; @@ -1052,8 +1049,7 @@ static int host_reset(struct comp_dev *dev) comp_dbg(dev, "host_reset()"); if (hd->chan) { - if (dev->state == COMP_STATE_ACTIVE) - dma_stop(hd->chan->dma->z_dev, hd->chan->index); + dma_stop(hd->chan->dma->z_dev, hd->chan->index); /* remove callback */ notifier_unregister(dev, hd->chan, NOTIFIER_ID_DMA_COPY); diff --git a/src/ipc/ipc4/dai.c b/src/ipc/ipc4/dai.c index a34565e8c99f..b48b86443344 100644 --- a/src/ipc/ipc4/dai.c +++ b/src/ipc/ipc4/dai.c @@ -170,9 +170,7 @@ void dai_dma_release(struct comp_dev *dev) * TODO: refine power management when stream is paused */ #if CONFIG_ZEPHYR_NATIVE_DRIVERS - /* if reset is after pause dma has already been stopped */ - if (dev->state != COMP_STATE_PAUSED) - dma_stop(dd->chan->dma->z_dev, dd->chan->index); + dma_stop(dd->chan->dma->z_dev, dd->chan->index); /* remove callback */ notifier_unregister(dev, dd->chan, NOTIFIER_ID_DMA_COPY); diff --git a/west.yml b/west.yml index 9a8dd39c578b..bd97ef86e75c 100644 --- a/west.yml +++ b/west.yml @@ -43,7 +43,7 @@ manifest: - name: zephyr repo-path: zephyr - revision: d9c4ec31fc49e7eef3c8c3b0d07827cc04e6efee + revision: 0c0d73721edb808b51a7ab136cfe01d1b2c1f87d remote: zephyrproject # Import some projects listed in zephyr/west.yml@revision #