Цитата(Andrei.... @ Nov 16 2006, 13:32)

Интерисует последовательность инициализации AC97 контроллера. Нигде её не нашёл...
Ну если Linux не устраивает по релегиозным или иным соображениям можно посмотреть исходники BSP для WinCE
в файле WINCE500\PLATFORM\Ep93xx\Src\Drivers\Wavdev\ac97codec.cpp.
Сама инициализация идёт в методе AC97Codec::Initialize(void )
также потребуется посмотреть метод PokeAC97 (запись в регистр AC97 кодека) он используется для установки громкости и тд.
И если используется DMA то настроить соответствующие каналы DMA (WINCE500\PLATFORM\Ep93xx\Src\Drivers\Wavdev\pingpongdma.cpp) но там много специфики CE.
А обработчик PIO находится в FIQ с таким вот интересным комментарием (файл WINCE500\PLATFORM\Ep93xx\Src\Kernel\Hal\Common\interrupt.c)
Код
//****************************************************************************
// OEMInterruptHandlerFIQ
//****************************************************************************
// Used for PIO Audio instead of using a DMA channel.
//
// On the EP93XX Rev D1 and E0 the following may cause audio glitches.
//
// 1. Boot in 16 Bit mode
// 2. Use USB
// 3. Use DMA
//
// To work around this problem we use the FIQ handler to perform PIO audio.