diff --git a/src/audio/copier.c b/src/audio/copier.c index 7c92036430ff..679d95f9edc8 100644 --- a/src/audio/copier.c +++ b/src/audio/copier.c @@ -533,7 +533,6 @@ static int copier_reset(struct comp_dev *dev) mailbox_sw_regs_write(cd->pipeline_reg_offset, &pipe_reg, sizeof(pipe_reg)); } - memset(cd, 0, sizeof(*cd)); comp_set_state(dev, COMP_TRIGGER_RESET); return ret; diff --git a/src/ipc/ipc4/dai.c b/src/ipc/ipc4/dai.c index 95c535751765..67f012259bb4 100644 --- a/src/ipc/ipc4/dai.c +++ b/src/ipc/ipc4/dai.c @@ -186,8 +186,13 @@ void dai_dma_release(struct comp_dev *dev) get_llp_reg_info(dd, &node_id, &llp_reg_offset); if (node_id) { - /* clear memory window */ + /* reset llp position to 0 in memory window for reset state. + * clear node id and llp position to 0 when dai is free + */ memset_s(&slot, sizeof(slot), 0, sizeof(slot)); + if (dev->state == COMP_STATE_PAUSED) + slot.node_id = node_id; + mailbox_sw_regs_write(llp_reg_offset, &slot, sizeof(slot)); }