Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.
Sitara Linux Audio Driver Overview
|Linux Software Developer's Guide||→||Linux Kernel||→||Audio||→||Audio Driver Overview|
Software support for audio devices on Sitara devices is acheived through ALSA, which is the standard audio architecture for linux.
For comprehensive documentation on ALSA, please refer to the following web page:
ALSA SoC Architecture
The ALSA System on Chip (ASoC) layer provides ALSA support for embedded processors and audio codecs. It is designed in a modular form so that different hardware components that commonly change in a system, such as audio codecs, can conveniently be removed or added.
The ASoC layer is divided into 3 different sections:
- Codec driver: The codec driver is platform independent and contains audio controls, audio interface capabilities, codec Dynamic Audio Power Management (DAPM) definition and codec IO functions. For example, the driver for the AIC310x codec is found in this area.
- Platform driver: The platform driver contains the audio dma engine and audio interface drivers (e.g. I2S, AC97, PCM) for that platform. The McASP driver for Sitara would fall into this category.
- Machine driver: The machine driver glues together the Platform and Codec drivers. It also handles any machine specific controls and audio events i.e. turning on an amp at start of playback.
Note that all 3 of these layers are often configured through the Device Tree for a specific board; hooks are provided that allow the codec, platform, and machine drivers to be configured in Device Tree as opposed to manually editing the driver source code. Although, modification of the driver source may still be necessary.
For a comprehensive overview of ASoC, please refer to this wiki:
The ALSA drivers that are specific to Sitara devices and external audio codecs are part of the ALSA SoC layer.
The linux kernel source in the SDK is found in the following directory:
Where X is the device number, Y is the SDK version, and Z is the Linux kernel version.
In the top level linux kernel directory in the Sitara SDK, the source code for the ALSA SoC layer can be found here:
- Codec driver: The source code the ASoC codecs is found here:
For reference, the source code for the AIC310x codec is found here:
Link to source code: tlv320aic3x.c
- Platform driver: The source code for the Sitara McASP driver is located here:
Link to source code: davinci-mcasp.c
- Machine driver: For Sitara devices, the machine driver is located here:
Link to source code: davinci-evm.c