The purpose of this page is to describe the Linux ALSA SoC driver for audio formatter IP, which does audio DMA and data repacking.
The Xilinx® LogiCORE™ IP Audio Formatter is a soft Xilinx IP core for use with the Xilinx Vivado® Design Suite. The Audio Formatter provides high-bandwidth direct memory access between memory and AXI4-Stream target peripherals supporting audio data.
This driver programs the DMA IP block and registers a platform component with ASoC framework. Audio Formatter gets PCM/AES data and converts to AES/PCM format needed by sink.
AES format contains PCM and channel status information, and the Audio Foramtter IP will strip non-audio content such as channel status and make it available in registers. Audio Formatter driver can parse the content of channel status to get audio parameters.
Audio Formatter driver needs to be used along with other audio IPs such as I2S/HDMI/SDI/SPDIF to create a respective functional sound card, and this driver cannot be used as standalone.
The driver is available at, https://github.com/Xilinx/linux-xlnx/blob/master/sound/soc/xilinx/xlnx_formatter_pcm.c
IP Features | 2019.1 |
---|---|
Supports 2, 4, 6, or 8 audio channels | Supports 2 channels only |
Supports 8, 16, 20, 24, and 32 bits PCM data width | Yes |
Independent S2MM (Stream to Memory) and MM2S (Memory to Stream) operations. | Yes |
Supported data formats while write from Audio stream to Memory buffer (S2MM):
| Yes |
Supported data formats while reading from memory Buffer as audio stream (MM2S):
| Yes |
Below driver configurations should be enabled.
CONFIG_SND_SOC=y CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=y |
A sample binding is and the description of the DT properties are described at, xlnx,audio-formatter.txt
Driver is tested as a part of either of I2S/HDMI/SDI/SPDIF sound card. Test procedure can be referred from supported audio pipeline test cases. Please refer related links.
Driver has been tested on the following boards
This driver is upstreamed and present at, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/soc/xilinx/xlnx_formatter_pcm.c.