Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: SOF: ipc4: Add macros for chain-dma message bits

In the chained DMA mode, the firmware allocates buffers for the host
and link DMA, and takes care of copying data between host- and
link-DMA buffers in a low-latency thread. This is different to a
regular pipeline, no processing is allowed, and the connection between
host- and link DMA is handled with a dedicated IPC.

This patch exposes the macros needed to create the required IPC messages.

Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230321092654.7292-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Jyri Sarha and committed by
Mark Brown
cb3cdef3 3d3e223f

+29
+29
include/sound/sof/ipc4/header.h
··· 196 196 #define SOF_IPC4_GLB_LOAD_LIBRARY_LIB_ID_SHIFT 16 197 197 #define SOF_IPC4_GLB_LOAD_LIBRARY_LIB_ID(x) ((x) << SOF_IPC4_GLB_LOAD_LIBRARY_LIB_ID_SHIFT) 198 198 199 + /* chain dma ipc message */ 200 + #define SOF_IPC4_GLB_CHAIN_DMA_HOST_ID_SHIFT 0 201 + #define SOF_IPC4_GLB_CHAIN_DMA_HOST_ID_MASK GENMASK(4, 0) 202 + #define SOF_IPC4_GLB_CHAIN_DMA_HOST_ID(x) (((x) << SOF_IPC4_GLB_CHAIN_DMA_HOST_ID_SHIFT) & \ 203 + SOF_IPC4_GLB_CHAIN_DMA_HOST_ID_MASK) 204 + 205 + #define SOF_IPC4_GLB_CHAIN_DMA_LINK_ID_SHIFT 8 206 + #define SOF_IPC4_GLB_CHAIN_DMA_LINK_ID_MASK GENMASK(12, 8) 207 + #define SOF_IPC4_GLB_CHAIN_DMA_LINK_ID(x) (((x) << SOF_IPC4_GLB_CHAIN_DMA_LINK_ID_SHIFT) & \ 208 + SOF_IPC4_GLB_CHAIN_DMA_LINK_ID_MASK) 209 + 210 + #define SOF_IPC4_GLB_CHAIN_DMA_ALLOCATE_SHIFT 16 211 + #define SOF_IPC4_GLB_CHAIN_DMA_ALLOCATE_MASK BIT(16) 212 + #define SOF_IPC4_GLB_CHAIN_DMA_ALLOCATE(x) (((x) & 1) << SOF_IPC4_GLB_CHAIN_DMA_ALLOCATE_SHIFT) 213 + 214 + #define SOF_IPC4_GLB_CHAIN_DMA_ENABLE_SHIFT 17 215 + #define SOF_IPC4_GLB_CHAIN_DMA_ENABLE_MASK BIT(17) 216 + #define SOF_IPC4_GLB_CHAIN_DMA_ENABLE(x) (((x) & 1) << SOF_IPC4_GLB_CHAIN_DMA_ENABLE_SHIFT) 217 + 218 + #define SOF_IPC4_GLB_CHAIN_DMA_SCS_SHIFT 18 219 + #define SOF_IPC4_GLB_CHAIN_DMA_SCS_MASK BIT(18) 220 + #define SOF_IPC4_GLB_CHAIN_DMA_SCS(x) (((x) & 1) << SOF_IPC4_GLB_CHAIN_DMA_SCS_SHIFT) 221 + 222 + #define SOF_IPC4_GLB_EXT_CHAIN_DMA_FIFO_SIZE_SHIFT 0 223 + #define SOF_IPC4_GLB_EXT_CHAIN_DMA_FIFO_SIZE_MASK GENMASK(24, 0) 224 + #define SOF_IPC4_GLB_EXT_CHAIN_DMA_FIFO_SIZE(x) (((x) << \ 225 + SOF_IPC4_GLB_EXT_CHAIN_DMA_FIFO_SIZE_SHIFT) & \ 226 + SOF_IPC4_GLB_EXT_CHAIN_DMA_FIFO_SIZE_MASK) 227 + 199 228 enum sof_ipc4_channel_config { 200 229 /* one channel only. */ 201 230 SOF_IPC4_CHANNEL_CONFIG_MONO,