return -EINVAL;
        } else if (host_copier->data.gtw_cfg.node_id == SOF_IPC4_CHAIN_DMA_NODE_ID) {
                /*
-                * While the firmware does not supports time_info reporting for
+                * While the firmware does not support time_info reporting for
                 * streams using ChainDMA, it is granted that ChainDMA can only
                 * be used on Host+Link pairs where the link position is
                 * accessible from the host side.
                 * Enable delay calculation in case of ChainDMA via host
                 * accessible registers.
                 *
-                * The ChainDMA uses 2x 1ms ping-pong buffer, dai side starts
-                * when 1ms data is available
+                * The ChainDMA prefills the link DMA with a preamble
+                * of zero samples. Set the stream start offset based
+                * on size of the preamble (driver provided fifo size
+                * multiplied by 2.5). We add 1ms of margin as the FW
+                * will align the buffer size to DMA hardware
+                * alignment that is not known to host.
                 */
-               time_info->stream_start_offset = substream->runtime->rate / MSEC_PER_SEC;
+               int pre_ms = SOF_IPC4_CHAIN_DMA_BUF_SIZE_MS * 5 / 2 + 1;
+
+               time_info->stream_start_offset = pre_ms * substream->runtime->rate / MSEC_PER_SEC;
                goto out;
        }
 
 
 
 #define SOF_IPC4_GAIN_PARAM_ID  0
 #define SOF_IPC4_TPLG_ABI_SIZE 6
-#define SOF_IPC4_CHAIN_DMA_BUF_SIZE_MS 2
 
 static DEFINE_IDA(alh_group_ida);
 static DEFINE_IDA(pipeline_ida);
 
 #define SOF_IPC4_DMA_METHOD_HDA   1
 #define SOF_IPC4_DMA_METHOD_GPDMA 2 /* defined for consistency but not used */
 
+#define SOF_IPC4_CHAIN_DMA_BUF_SIZE_MS 2
+
 /**
  * struct sof_ipc4_dma_config: DMA configuration
  * @dma_method: HDAudio or GPDMA