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

ASoC: Intel: Skylake: Add deep buffer support

With this patch, the dma buffer size is fetched from topology binary. This
buffer size is applicable for gateway copier modules.

Now that we can configure DSP dma buffer size, the device can support deep
buffer playback. DSP fetches large buffer and can result fewer wakes,
which helps in power reduction.

Signed-off-by: Ramesh Babu <ramesh.babu@intel.com>
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-By: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Ramesh Babu and committed by
Mark Brown
939df3ad 0931352d

+9 -1
+4 -1
include/uapi/sound/snd_sst_tokens.h
··· 161 161 * 162 162 * %SKL_TKL_U32_D0I3_CAPS: Specifies the D0i3 capability for module 163 163 * 164 + * %SKL_TKN_U32_DMA_BUF_SIZE: DMA buffer size in millisec 165 + * 164 166 * module_id and loadable flags dont have tokens as these values will be 165 167 * read from the DSP FW manifest 166 168 */ ··· 217 215 SKL_TKN_U32_PMODE, 218 216 SKL_TKL_U32_D0I3_CAPS, /* Typo added at v4.10 */ 219 217 SKL_TKN_U32_D0I3_CAPS = SKL_TKL_U32_D0I3_CAPS, 220 - SKL_TKN_MAX = SKL_TKN_U32_D0I3_CAPS, 218 + SKL_TKN_U32_DMA_BUF_SIZE, 219 + SKL_TKN_MAX = SKL_TKN_U32_DMA_BUF_SIZE, 221 220 }; 222 221 223 222 #endif
+4
sound/soc/intel/skylake/skl-topology.c
··· 2212 2212 2213 2213 break; 2214 2214 2215 + case SKL_TKN_U32_DMA_BUF_SIZE: 2216 + mconfig->dma_buffer_size = tkn_elem->value; 2217 + break; 2218 + 2215 2219 case SKL_TKN_U8_IN_PIN_TYPE: 2216 2220 case SKL_TKN_U8_OUT_PIN_TYPE: 2217 2221 case SKL_TKN_U8_CONN_TYPE:
+1
sound/soc/intel/skylake/skl-topology.h
··· 321 321 u32 vbus_id; 322 322 u32 mem_pages; 323 323 enum d0i3_capability d0i3_caps; 324 + u32 dma_buffer_size; /* in milli seconds */ 324 325 struct skl_module_pin *m_in_pin; 325 326 struct skl_module_pin *m_out_pin; 326 327 enum skl_module_type m_type;