diff --git a/tools/topology/topology2/platform/intel/deep-buffer.conf b/tools/topology/topology2/platform/intel/deep-buffer.conf index 5dd85e960d51..549c4180a26c 100644 --- a/tools/topology/topology2/platform/intel/deep-buffer.conf +++ b/tools/topology/topology2/platform/intel/deep-buffer.conf @@ -33,9 +33,14 @@ Object.PCM.pcm [ Object.PCM.pcm_caps.1 { name $DEEP_BUFFER_PCM_NAME formats 'S16_LE,S24_LE,S32_LE' - # align with $DEEPBUFFER_FW_DMA_MS - period_size_max 65535 - buffer_size_max 262144 + # To avoid DMA spinning on a buffer we need bigger + # buffer than the host buffer size, let's say twice as + # big + # (S16_LE, Stereo, 48KHz, DEEPBUFFER_FW_DMA_MS) * 2 + # + # Note: The lower limit for the buffer size is rate + # dependent + buffer_size_min "$[(((2 * $channels_min) * 48) * $DEEPBUFFER_FW_DMA_MS) * 2]" } } ] @@ -83,9 +88,14 @@ IncludeByKey.DEEP_BUF_SPK { Object.PCM.pcm_caps.1 { name $DEEP_BUFFER_PCM_NAME_2 formats 'S16_LE,S24_LE,S32_LE' - # align with $DEEPBUFFER_FW_DMA_MS - period_size_max 65535 - buffer_size_max 262144 + # To avoid DMA spinning on a buffer we need bigger + # buffer than the host buffer size, let's say twice as + # big + # (S16_LE, Stereo, 48KHz, DEEPBUFFER_FW_DMA_MS) * 2 + # + # Note: The lower limit for the buffer size is rate + # dependent + buffer_size_min "$[(((2 * $channels_min) * 48) * $DEEPBUFFER_FW_DMA_MS) * 2]" } } ]