[alsa-devel] <alsa-dev> RFC for OMAP4 audio driver

hari n hnagalla at gmail.com
Wed Sep 2 04:27:30 CEST 2009

Hardware Background
ABE (Audio back end) IP on the OMAP4 SoC of TI provides digital
audio signal processing features (real-time mixing, equalization,
etc) on the media processor. ABE allows flexible routing of the
audio paths with dedicated equalizer and acoustics protection for
earphone/ headphone, hands-free and vibra paths. Typically the ABE
is connected to a companion analog audio chip via a dedicated McPDM
(multi-channel pulse density modulation) as show at


On OMAP4, audio codec functionality is spread between ABE of OMAP4
and the companion analog audio chip. The interface between the ABE
and Phoenix audio chip is proprietary McPDM interface. The proposal
is to combine both ABE and Phoenix into a codec driver. OMAP4 ABE
also provides other links for routing digital processed data to
McBSP, McASP interfaces, which are at the same level as McPDM

               +---------+  +---------------------+
ALSA Library --|ASOC Core|--|OMAP4 Platform Driver|
               +---------+  +---------------------+
                           |ABE--<McPDM>--Phoenix--|--o Speaker/MIC

ABE provides a FIFO interface (similar to McBSP FIFO) and the audio
data transfer between the audio buffers and ABE FIFO is handled
through the CPU DAI. Handling of the McPDM interface between the
digital audio (ABE) and analog audio chip (Phoenix) is handled
internally in the codec driver as part of the codec DAI operations.

This RFC addresses the basic audio usecases using Phoenix companion
chip with the OMAP4 audio IP block. Support and configuration for
using different codecs (connectivity with BT/FM etc) using I2S/PCM
interfaces are targeted for future enhancements.

High Level Design
Following are the files consisting of the TI OMAP4 audio driver:

sound/soc/omap/omap-pcm.c: This is the platform driver for OMAP
   audio. It remains the same across all OMAP chip versions.

sound/soc/codecs/abe-twl6030.c: This is the codec driver interface
   file for OMAP4 audio. It defines the codec DAIs for the HIFI,
   voice and Vibra subdevices. Handles the configuration of Phoenix
   companion chip using i2c control interface. Handles the
   initialization and configuration of ABE. All codec related widget
   controls are also handled in this file. Both, digital (ABE) and
   analog (twl6030) widgets will be contained in this same driver.

sound/soc/codecs/abe/*: This folder contains the ABE specific
   handlers. i.e reset, clock, configuration of ABE ports for
   different stream inputs/outputs etc.

sound/soc/omap/oma-abe.c: This is the DAI driver towards the abe.

sound/soc/omap/sdp4430.c: This is the machine driver for SDP4430
and defines the stream connections.

How to handle routing of digital audio from ABE to external devices
like Bluetooth/FM connectivity devices which are usually connected
using McBSP interfaces?. In these scenarios, we need another DAI
between the ABE (platform codec) and an external codec.

ABE(platform Codec (Digital) -----> Phoenix audio codec
                   +--> BT/FM codec

More information about the Alsa-devel mailing list