ca5ce0ca | 21-Mar-2023 |
Jyri Sarha <jyri.sarha@intel.com> |
ASoC: SOF: ipc4/intel: Add support for chained DMA
Add logic for setting up and tearing down chained DMA connections.
Since pipelines are not used, all the logic to set the pipeline states can be b
ASoC: SOF: ipc4/intel: Add support for chained DMA
Add logic for setting up and tearing down chained DMA connections.
Since pipelines are not used, all the logic to set the pipeline states can be bypassed, with only the DMA programming sequences remaining. In addition the same format needs to be used for host- and link-DMA, without the usual fixup to use the S32_LE format on the link.
Note however that for convenience and compatibility with existing definitions, the topology relies on the concept of pipelines with a 'USE_CHAIN_DMA' token indicating that all the logic shall be bypassed.
Unlike 'normal' ALSA sequences, the chain DMA is not programmed in hw_params/hw_free. The IPC message to set-up and tear-down chained DMA are sent in sof_ipc4_trigger_pipelines(), but the contents prepared earlier.
Chained DMA is only supported by the Intel HDA DAI for now, and only S16_LE and S32_LE formats are supported for now.
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-4-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
/linux/Documentation/devicetree/bindings/sound/adi,adau1372.yaml/linux/Documentation/devicetree/bindings/sound/adi,adau17x1.yaml/linux/Documentation/devicetree/bindings/sound/adi,max98396.yaml/linux/Documentation/devicetree/bindings/sound/audio-graph-port.yaml/linux/Documentation/devicetree/bindings/sound/audio-graph.yaml/linux/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml/linux/Documentation/devicetree/bindings/sound/cirrus,cs42l42.yaml/linux/Documentation/devicetree/bindings/sound/everest,es8316.yaml/linux/Documentation/devicetree/bindings/sound/maxim,max9759.yaml/linux/Documentation/devicetree/bindings/sound/mt8186-afe-pcm.yaml/linux/Documentation/devicetree/bindings/sound/mt8186-mt6366-da7219-max98357.yaml/linux/Documentation/devicetree/bindings/sound/mt8186-mt6366-rt1019-rt5682s.yaml/linux/Documentation/devicetree/bindings/sound/mt8192-afe-pcm.yaml/linux/Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml/linux/Documentation/devicetree/bindings/sound/mt8195-afe-pcm.yaml/linux/Documentation/devicetree/bindings/sound/mt8195-mt6359.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-common.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max9808x.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5631.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.yaml/linux/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.yaml/linux/Documentation/devicetree/bindings/sound/qcom,q6asm-dais.yaml/linux/Documentation/devicetree/bindings/sound/renesas,rsnd.yaml/linux/Documentation/devicetree/bindings/sound/rockchip,i2s-tdm.yaml/linux/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml/linux/Documentation/devicetree/bindings/sound/sgtl5000.yaml/linux/Documentation/devicetree/bindings/sound/simple-card.yaml/linux/Documentation/devicetree/bindings/sound/socionext,uniphier-aio.yaml/linux/drivers/soc/fsl/qe/Kconfig/linux/include/sound/soc-dpcm.h/linux/include/sound/sof/ipc4/header.htokens.h/linux/sound/soc/fsl/fsl-asoc-card.c/linux/sound/soc/mediatek/mt8192/mt8192-afe-clk.c/linux/sound/soc/mediatek/mt8192/mt8192-afe-pcm.c/linux/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c/linux/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c/linux/sound/soc/rockchip/rockchip_i2s.c/linux/sound/soc/soc-compress.c/linux/sound/soc/soc-dai.c/linux/sound/soc/soc-pcm.c/linux/sound/soc/sof/intel/hda-dai-ops.c/linux/sound/soc/sof/ipc4-pcm.c/linux/sound/soc/sof/ipc4-topology.c/linux/sound/soc/sof/ipc4-topology.h/linux/sound/soc/sof/topology.c/linux/sound/soc/tegra/Kconfig/linux/sound/soc/tegra/tegra_asoc_machine.c |
4fdef47a | 13-Mar-2023 |
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> |
ASoC: SOF: ipc4-topology: Add new tokens for input/output pin format count
In preparation for handling processing modules with different input/output pin counts, introduce two new tokens for input/o
ASoC: SOF: ipc4-topology: Add new tokens for input/output pin format count
In preparation for handling processing modules with different input/output pin counts, introduce two new tokens for input/output audio format counts. Use these token values to parse all the available audio formats from topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230313124856.8140-11-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|
7ab6b1e8 | 13-Mar-2023 |
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> |
ASoC: SOF: ipc4-topology: Modify the type of available input/output formats
Introduce a new struct sof_ipc4_pin_format which contains the pin index and the buffer size. Replace the type of available
ASoC: SOF: ipc4-topology: Modify the type of available input/output formats
Introduce a new struct sof_ipc4_pin_format which contains the pin index and the buffer size. Replace the type of available input/output audio formats in struct sof_ipc4_available_audio_format with this new struct type and rename them to input_pin_fmts and output_pin_fmts.
Also, add a new token, SOF_TKN_CAVS_AUDIO_FORMAT_PIN_INDEX that will be used to parse the pin index for the audio format from topology. Currently we only set the audio format for Pin 0 in topology, so the default value will be 0 for all audio formats.
Finally, parse the pin_index and the input/output buffer sizes along with audio formats into the pin_format arrays in struct sof_ipc4_available_audio_format. This makes the base_config array in struct sof_ipc4_available_audio_format redundant. So remove it. This change will allow the addition of audio formats for the non-zero pins in topology transparent to the topology parser in the kernel.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230313124856.8140-8-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|
594c1bb9 | 13-Mar-2023 |
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> |
ASoC: SOF: ipc4-topology: Do not parse the DMA_BUFFER_SIZE token
Do not parse the SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE token as the dma_buffer_size can be derived from the input/output buffer s
ASoC: SOF: ipc4-topology: Do not parse the DMA_BUFFER_SIZE token
Do not parse the SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE token as the dma_buffer_size can be derived from the input/output buffer size and the type of widget during copier prepare. For the deep buffer case, introduce a new token that will be used to get the deep buffer DMA size for the host copier from topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230313124856.8140-5-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|
bb79f2a6 | 13-Mar-2023 |
Ranjani Sridharan <ranjani.sridharan@linux.intel.com> |
ASoC: SOF: Use input/output pin consistently
Currently we use input/output and sink/source pins interchangeably. Remove the references to sink/source pins and replace with input/output pins everywhe
ASoC: SOF: Use input/output pin consistently
Currently we use input/output and sink/source pins interchangeably. Remove the references to sink/source pins and replace with input/output pins everywhere for consistency and clarity.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20230313124856.8140-3-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|
ea4a4e82 | 13-Mar-2023 |
Peter Ujfalusi <peter.ujfalusi@linux.intel.com> |
ASoC: SOF: uapi: header: Update sof_abi_hdr doc for IPC4 use
With IPC4 the sof_abit_hdr is only used between user space (and in topology) and kernel. The same abi header is used with small differenc
ASoC: SOF: uapi: header: Update sof_abi_hdr doc for IPC4 use
With IPC4 the sof_abit_hdr is only used between user space (and in topology) and kernel. The same abi header is used with small differencies like different magic number and the type field have slightly different name, but similar function in IPC4 (param_id).
Update the kernel documentation to highlight the differences.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Jaska Uimonen <jaska.uimonen@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://lore.kernel.org/r/20230313110344.16644-5-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|
3b3acedb | 07-Nov-2022 |
Chao Song <chao.song@linux.intel.com> |
ASoC: SOF: Add support to parse pin binding array from topology
Add support for parsing sink/source pin binding array per widget from topology. The pin binding arrays will be used to determine the s
ASoC: SOF: Add support to parse pin binding array from topology
Add support for parsing sink/source pin binding array per widget from topology. The pin binding arrays will be used to determine the source and sink queue IDs during widget binding for widget that requires special pin binding.
An example of widget that requires special pin binding is the smart amplifier widget, its feedback sink pin has to be connected to a capture DAI copier for codec feedback, while the other sink pin has to be connected to a host DAI copier. Pin ID is required during widget binding for correct route setup.
Conversely, the pin ID for 'generic' pins is not defined in the topology and will be allocated by the kernel dynamically. When only one pin is supported, the pin ID shall always be zero. When more than one pin is supported, the pin ID is determined with the ID allocation mechanism in the kernel.
Signed-off-by: Chao Song <chao.song@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Suggested-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20221107085706.2550-3-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
show more ...
|