The
AC97C ALSA sound driver was submitted for the initial review to the ALSA developmen list, see this email thread
http://mailman.alsa-project.org/pipermail/alsa-devel/2009-February/014500.html This mean however that you need to be working on a Linux kernel version 2.6.29-rc3 or later, and have patches for DW DMAC cyclic DMA API which can be grabbed from
http://avr32linux.org/archives/kernel/2009-February/002088.html +
http://avr32linux.org/archives/kernel/2009-February/002087.html
The driver works against any AC97 codec which follows the AC97 standard, interfacing them is also quite easy. Remember that it is the external AC97 codec which provides the clock signal.
How to enable it
Board code
You need to add a small snippet of board code to add the platform device for you board. This could be something like the following:
#include <sound/atmel-ac97c.h>
static struct ac97c_platform_data __initdata ac97c0_data = {
.reset_pin = GPIO_PIN_PB(19),
};
And then later in the postcore_initcall(...) add:
at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH);
See the file
include/sound/atmel-ac97c.h for more information about the
struct ac97c_platform_data and flags passed to the machine code.
Select the driver in the kernel config
In menuconfig the driver is located in
Device Drivers --->
Sound card support --->
Advanced Linux Sound Architecture --->
AVR32 devices --->
Atmel AVR32 AC97 Controller Driver
After selecting it as builtin or module do a compile and install to target. When the driver probes it will examine which features are available in the external codec and setup mixer, playback and capture accordingly.