Mobile and Embedded Linux Solutions

Home / Labs / ASoC – ALSA for System on Chip Devices

The ALSA System on Chip (ASoC) framework is the embedded Linux kernel sound system. ASoC is targeted at SoC processors and is designed with embedded system features in mind. ASoC provides advanced power management, better code reuse, easier integration of hardware CODECs, pop and click reduction and bespoke machine specific audio controls.

ASoC System Architecture

ASoC Splits an embedded audio subsystem into three different driver components.

  • CODEC – IC containing numerous DACs, ADCs, mixers, muxes, PLLs, inputs and outputs. The codec driver handles all the codec functions above and it’s Digital Audio Interfaces (DAI).
  • SoC CPU platform – The platform drivers handle the SoC DMA and Digital Audio Interfaces (DAI). This component is usually further sub divided down to separate the DMA from the DAI as most SoC can share their audio DMA between their different hardware DAIs.
  • Machine – This component glues the CODEC to the SoC CPU and adds any bespoke audio controls, logic and power management.

ASoC is mature technology and has been part of the mainline Linux 2.6 kernel for several years now. ASoC supports a wide and growing range of target SoC CPUs, CODECs and devices. ASoC software development is discussed on the ALSA development mailing list and on IRC channel #alsa-soc on freenode.net.

Dynamic Audio Power Management

Dynamic Audio Power Management (DAPM) is an ASoC technology designed to minimise audio subsystem power consumption no matter what audio use case is active. DAPM guarantees the lowest audio power state at all times and is completely transparent to user space audio components. DAPM is ideal for mobile devices or devices with complex audio requirements.

Further Information

ASoC technology papers were presented by Liam Girdwood at several Linux conferences.

  • FOSDEM 2006 in Brussels Belgium
  • CELF 2006 In San Jose, California
  • Foss.In 2006 in Bangalore, India.

Wolfson Microelectronics has an ASoC information page. This page also has links to Wolfson supported devices.

A slightly historical overview can be found in the ALSA developers wiki.