R
Intel® 82801EB (ICH5) I/O
82801ER (ICH5R), and
82801DB (ICH4) Controller Hub:
AC ’97 PRM
Programmers Reference Manual (PRM)
April 2003
Document Number: 252751-001
Download from Www.Somanuals.com. All Manuals Search And Download.
R
Contents
1
Introduction.......................................................................................................................... 7
1.1
1.2
About This Document............................................................................................. 7
Reference Documents and Information Sources ................................................... 9
2
Overview ........................................................................................................................... 11
2.1
Intel® ICH5 AC ’97 Controller Compatibility.......................................................... 11
2.1.1
Third AC ’97 Component Specification Revision 2.1, Revision 2.2 and
Revision 2.3 Compliant Codecs............................................................ 14
Dedicated S/P DIF DMA Output Channel............................................. 15
20 Bits Surround PCM Output............................................................... 15
Memory Map Status and Control Registers.......................................... 15
Second Independent Input DMA Engines............................................. 16
PCI Local Bus Specification, Revision 2.3 Power Management........... 16
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.2
General Requirements ......................................................................................... 16
3
Intel® ICH5 AC ’97 Controller Theory of Operation ........................................................... 17
3.1
Intel® ICH5 AC ’97 Initialization............................................................................. 17
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
System Reset........................................................................................ 17
Codec Topology.................................................................................... 17
BIOS PCI Configuration ........................................................................ 18
Hardware Interrupt Routing................................................................... 19
PCI Lock ............................................................................................... 19
3.2
DMA Engines........................................................................................................ 20
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
Buffer Descriptor List ............................................................................ 20
DMA Initialization................................................................................... 21
DMA Steady State Operation................................................................ 23
Stopping Transfers................................................................................ 24
FIFO Error Conditions........................................................................... 24
3.2.5.1
3.2.5.2
FIFO Underrun .................................................................... 24
FIFO Overrun ...................................................................... 24
3.3
3.4
Channel Arbitration............................................................................................... 25
Data Buffers.......................................................................................................... 25
3.4.1
3.4.2
3.4.3
Memory Organization of Data ............................................................... 25
PCM Buffer Restrictions........................................................................ 25
FIFO Organization................................................................................. 26
3.5
3.6
Multiple Codec/Driver Support.............................................................................. 27
3.5.1
3.5.2
3.5.3
Codec Register Shadowing................................................................... 28
Codec Access Synchronization............................................................. 29
Data Request Synchronization in Audio Split Configurations................ 29
Power Management ............................................................................................. 30
3.6.1
Codec Topologies................................................................................. 30
3.6.1.1 Tertiary Codec Topologies................................................... 31
3.6.2
3.6.3
Power Management Transition Maps ................................................... 31
Power Management Topology Considerations ..................................... 34
AC ’97 Programmer’s Reference Manual
3
Download from Www.Somanuals.com. All Manuals Search And Download.
R
3.6.3.1
3.6.3.2
Determining the Presence of Secondary and Tertiary
Codecs................................................................................. 34
Determining the Presence of a Modem Function................ 35
3.6.4
3.6.5
Resume Context Recovery................................................................... 35
Aggressive Power Management........................................................... 35
3.6.5.1
3.6.5.2
3.6.5.3
3.6.5.4
3.6.5.5
Primary Audio Requested to D3 .......................................... 36
Secondary Modem Requested to D3................................... 36
Secondary Modem Requested to D0................................... 36
Audio Primary Requested to D0 .......................................... 37
Using a Cold or Warm Reset............................................... 37
4
Surround Audio Support.................................................................................................... 39
4.1
4.2
Determine Codec’s Audio Channels..................................................................... 39
Enabling Intel® ICH5 AC ’97 Controller Audio Channels ...................................... 40
5
6
7
8
20-Bits PCM Support......................................................................................................... 43
Independent S-P/DIF Output Capability............................................................................ 45
Support for Double Rate Audio ......................................................................................... 47
Independent Input Channels Capability............................................................................. 49
8.1
Intel® ICH5 AC ’97 Modem Driver ..................................................................................... 51
9.1 Robust Host-Based Generation of a Synchronous Data Stream ......................... 51
Link Topology Determination................................................................................ 49
9
9.1.1
9.1.2
Spurious Data Algorithm ....................................................................... 52
Intel® ICH5 AC ’97 Spurious Data Implementation............................... 52
4
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
R
Figures
Figure 1. Block Diagram of Platform Chipset with Intel® ICH5 Component...................... 13
Figure 2. Intel® ICH5 AC ’97 Controller Connection to Its Companion Codecs ................ 14
Figure 3. Generic Form of Buffer Descriptor (One Entry in the List)................................. 20
Figure 4. Buffer Descriptor List ......................................................................................... 21
Figure 5. Compatible Implementation with Left and Right Sample Pair in Slot 3/4 Every
Frame......................................................................................................................... 26
Figure 6. Compatible Implementation with Sample Rate Conversion Slots 3 and 4
Alternating over Next Frame...................................................................................... 26
Figure 7. Incompatible Implementation of Sample Rate Conversion with Repeating Slots
over Next Frames ...................................................................................................... 27
Tables
Table 1. Applicable Components ........................................................................................ 7
Table 2. Audio Features Distribution Matrix ...................................................................... 12
Table 3. Audio Registers................................................................................................... 18
Table 4. Modem Registers................................................................................................ 19
Table 5. BD Buffer Pointer (DWORD 0: 00-03h) .............................................................. 20
Table 6. BD Control and Length (DWORD 1: 04-07h)...................................................... 21
Table 7. Audio Descriptor List Base Address.................................................................... 22
Table 8. Modem Descriptor List Base Address................................................................. 22
Table 9. Audio Last Valid Index......................................................................................... 22
Table 10. Modem Last Valid Index.................................................................................... 23
Table 11. FIFO Summary.................................................................................................. 27
Table 12. SDM Register Description................................................................................. 28
Table 13. Dual Codecs Topologies................................................................................... 30
Table 14. Power State Mapping for Audio Single or Dual (Split) Codec Desktop
Transition ................................................................................................................... 32
Table 15. Power State Mapping for Modem Single Codec Desktop Transition ................ 32
Table 16. Power State Mapping for Audio in Dual Codec Desktop Transition.................. 33
Table 17. Power State Mapping for Modem in Dual Codec Desktop Transition............... 34
Table 18. Extended Audio ID Register.............................................................................. 39
Table 19. Single Codec Audio Channel Distribution ......................................................... 39
Table 20. Multiple Codec Audio Channel Distribution....................................................... 40
Table 21. CM 4/6 –PCM Channels Capability Bits............................................................ 40
Table 22. AC-Link PCM 4/6 -Channels Enable Bits.......................................................... 41
Table 23. Sample Capabilities........................................................................................... 43
Table 24. PCM Out Mode Selector ................................................................................... 43
Table 25. Global Control Register S-P/DIF Slot Map Bits................................................. 45
Table 26. Topology Descriptor .......................................................................................... 49
Table 27. SDATA_IN Map................................................................................................. 49
Table 28. Codec Ready Bits.............................................................................................. 50
Table 29. MMBAR: Mixer Base Address Register ............................................................ 50
AC ’97 Programmer’s Reference Manual
5
Download from Www.Somanuals.com. All Manuals Search And Download.
R
Revision History
Revision
Number
Description
Revision Date
-001
Initial Release.
April 2003
6
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Introduction
R
1 Introduction
1.1
About This Document
This document was prepared to assist Independent Hardware and Software Vendors (IHVs and
ISVs) in supporting the Intel® I/O controller hub (ICH5) AC ’97 controller feature set. This
document also applies to the previous generation of Intel I/O controller hub components and
describes the general requirements to develop an audio driver that will make use of the AC ’97
audio interface.
This document also describes functions that the BIOS or Operating Systems (OS) must perform in
order to ensure correct and reliable operation of the platform. This document will be supplemented
from time to time with specification updates. The specification updates contain information
relating to the latest programming changes. Check with your Intel representative for availability of
specification updates.
The following table outlines ICH device information at a glance.
Table 1. Applicable Components
Intel®
ICH
8086 2415 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
04h 01h 00h ALL 00h
1Fh
1Fh
5
6
PCI\VEN_8086&DE Intel® 82801AA AC ‘97
V_2415 (subsystem Audio Controller
register varies
will also provide
additional
(displayed by driver
provider’s INF)
according to the
system
information)
Intel
ICH
8086 2416 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
07h 03h 00h ALL 00h
PCI\VEN_8086&DE Intel 82801AA AC ‘97
V_2416 (subsystem Modem Controller
register varies
will also provide
additional
(displayed by driver
provider’s INF)
according to the
system
information)
Intel
8086 2425 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
04h 01h 00h ALL 00h
1Fh
5
PCI\VEN_8086&DE Intel® 82801AB AC ‘97
ICH-0
V_2425
Audio Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
AC ’97 Programmer’s Reference Manual
7
Download from Www.Somanuals.com. All Manuals Search And Download.
Introduction
R
Intel®
8086 2426 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
07h 03h 00h ALL 00h
04h 01h 00h ALL 00h
04h 01h 00h ALL 00h
04h 01h 00h ALL 00h
04h 01h 00h ALL 00h
04h 01h 00h ALL 00h
04h 01h 00h ALL 00h
1Fh
1Fh
1Fh
1Fh
1Fh
1Fh
1Fh
6
5
6
5
6
5
6
PCI\VEN_8086&DE Intel 82801AB AC ‘97
V_2426 (subsystem Modem Controller
ICH-0
register varies
will also provide
additional
(displayed by driver
provider’s INF)
according to the
system
information)
Intel®
ICH2
8086 2435 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® “ICH2” AC ‘97
V_2435 (subsystem Audio Controller
register varies
will also provide
additional
(displayed by driver
provider’s INF)
according to the
system
information)
ICH2
8086 2436 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® ICH2 DT/Server
V_2436
/Mobile/Low End” AC
‘97 Modem Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
Intel®
ICH3
8086 2445 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® “ICH3” AC ‘97
V_2445 (subsystem Audio Controller
register varies
will also provide
additional
(displayed by driver
provider’s INF)
according to the
system
information)
ICH3
8086 2446 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® ICH3 DT/Server
V_2446
/Mobile/Low End” AC
‘97 Modem Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
Intel®
ICH4
8086 24C5 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® “ICH4” AC ‘97
V_24C5
Audio Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
ICH4
8086 24C6 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
PCI\VEN_8086&DE Intel® ICH4 DT/Server
V_24C6
/Mobile/Low End” AC
‘97 Modem Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
8
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Introduction
R
Intel®
ICH5
8086 24D5 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
04h 01h 00h ALL 00h
1Fh
1Fh
5
6
PCI\VEN_8086&DE Intel® “ICH5” AC ‘97
V_24D5
Audio Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
ICH5
8086 24D6 Default is 00h.
Value of this
Default is 00h.
Value of this
register varies
according to the
system
04h 01h 00h ALL 00h
PCI\VEN_8086&DE Intel® ICH5 DT/Server
V_24D6
/ Low End” AC ‘97
Modem Controller
(displayed by driver
provider’s INF)
register varies
(subsystem will also
provide additional
information)
according to the
system
1.2
Reference Documents and Information Sources
Document Name or Information Source
Available From
Audio Codec ’97 Specification, Revision 2.1, Revision 2.2 and
Revision 2.3
Communications and Networking Riser Specification, Version 1.0 and 1.2
PCI Local Bus Specification, Revision 2.3
Microsoft Windows* Driver Development Kits
Microsoft
Microsoft Windows* Driver and Hardware Development
Microsoft
NOTE:
1. Contact your Intel representative for the current document revision.
AC ’97 Programmer’s Reference Manual
9
Download from Www.Somanuals.com. All Manuals Search And Download.
Introduction
R
This page is intentionally left blank.
10
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
2 Overview
In this document, “ICH5” stands for I/O Controller Hub 5. The ICH5 provides an AC ’97-
compliant controller. References to the “AC ’97 Component Specification” refer to the Audio
Codec ’97 Specification, Revision 2.1, Revision 2.2, and Revision 2.3. The ICH5 AC ’97 Digital
Controller implementation interfaces to AC ’97 Component Specification, Revision 2.3 and
below-compliant codecs. The ICH5 supports up to three AC ’97 Component Specification
compliant codecs on the AC-link interface.
This document is limited to specifying the software requirements and driver interface for the ICH5
AC ’97 digital controller. Wherever possible, it has pointers to additional considerations for
supporting future proliferation or derivatives of the ICH5 digital controller. However,
considerations for these future devices are subject to change.
2.1
Intel® ICH5 AC ’97 Controller Compatibility
The ICH5 AC ’97 controller is fully compatible with the features found in the ICH1/2/3/4
versions. This allows for current drivers developed by ISVs and IHVs to work without
modifications. The ICH5 however, provides capabilities not found in ICH family components
prior to ICH4. The following matrix provides a description of the available features for each of the
ICHx component generations. This document specifically addresses features on ICH5 while
maintaining the original programming model reference for new developers working directly with
ICH5 and not previously exposed to the ICH component.
Figure 1 displays a block diagram of the platform chipset with the ICH5 component. Figure 2
represents the typical configuration for the ICH5 AC ’97 controller and companion codecs.
AC ’97 Programmer’s Reference Manual
11
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
Table 2. Audio Features Distribution Matrix
Intel®
ICH2
Intel®
ICH3
Intel®
ICH4
Intel®
ICH5
AC ’97 Audio Controller Features
Intel®
ICH
16 bits Stereo PCM Output
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
⌧
16 bits Stereo PCM Input
16 bits Microphone Input
GPIO and Interrupt Support
Two 2.1/2.2/2.3 Codec Support
16 bits 2/4/6 Ch. Surround PCM Output
20 bits 2/4/6 Ch. Surround PCM Output
Dedicated S/P DIF DMA Output Ch.
Third 2.1/2.2/ 2.3 Codec Support
Memory Map Control and Status
Second 16 bits Stereo PCM Input
Second 16 bits Microphone Input
PCI 2.3 Power Management
The ICH5 AC ’97 audio controller provides a set of features that require significant software
support. The following paragraphs provide a summary of these features.
The modem support infrastructure has not been changed in any generation of the I/O controller
hub starting with the ICH.
12
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
Figure 1. Block Diagram of Platform Chipset with Intel® ICH5 Component
Process
M
e
m
o
MCH
AGP
r
y
USB 2.0
Power Management
Clock Generators
(Supports 6 USB ports)
IDE-Primary
®
Intel
IDE-Secondary
System Management
(TCO)
ICH5
SATA (2 ports)
SMBus 2.0/I2C
AC’97 Codec(s)
LAN Connect
PCI Bus
S
L
O
S
L
O
LAN
GPIO
...
T
T
LPC I/F
Super I/O
Other ASICs
(Optional)
Firmware
Hub(s)
AC ’97 Programmer’s Reference Manual
13
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
Figure 2. Intel® ICH5 AC ’97 Controller Connection to Its Companion Codecs
Digital Controller
AC '97/AC '97 2.x/AMC '97
RESET#
SDATA_OUT
SYNC
Primary Codec
BIT_CLK
Intel® ICH
SDATA_IN_0
AC '97/MC '97 2.x/AMC '97
SDATA_IN_1
SDATA_IN_2
Secondary
Codec
AC '97/AC '97 2.x/AMC '97
Tertiary Codec
2751_2
2.1.1
Third AC ’97 Component Specification Revision 2.1,
Revision 2.2 and Revision 2.3 Compliant Codecs
The AC ’97 Component Specification provides capability for up to four, SDATA_IN signals in
support of up to four codecs. The ICH5 AC ’97 controller provides support for up to three codecs
to allow for Audio channel expansion without sacrificing the Modem Codec (MC) support. Also,
the third codec capability enables a better mobile docking infrastructure.
14
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
2.1.2
Dedicated S/P DIF DMA Output Channel
The ICH5 controller provides a dedicated DMA engine with the capability of outputting either
PCM or AC-3 data to the S/P DIF link for pass-through to an external CE audio decoder. This
capability allows for simultaneous output of PCM/AC-3 on the S/P DIF link while PCM data is
output to the PCM Out DMA engine. As a result, an AC3 stream from DVD movie playback can
be output on the S/P DIF link concurrently with other system audio data (e.g., voice audio from a
telephony application).
2.1.3
2.1.4
20 Bits Surround PCM Output
The AC ’97 Component Specification provides a maximum bit resolution of 20 bits per sample.
The ICH5 AC ’97 controller PCM Output DMA Engine fully exploits this capability to improve
the audio output quality.
Memory Map Status and Control Registers
The ICH5 support PCI Memory Base Address Register that allows for higher performance access
to the controller registers while expanding the register space to access the third codec support
mechanism. All features can now be accessed via this Memory BAR making the I/O BAR
capabilities obsolete. However, the ICH5 controller may maintain the I/O BAR capability to allow
for the reuse of legacy code maintaining backward compatibility to deployed driver binaries.
Note: This document describes the programming interface using the Memory BAR registers unless
otherwise indicated. The default configuration for ICH5 Audio function is to use the PCI Memory
Base Address Register. The I/O BAR is therefore disabled unless system BIOS enables the
simultaneous backward-compatible capability on the register:
Device 31 Function 5 Audio
Offset
Register
Default
Comments
41h
CFG
Configuration
00h
When cleared, the I/O space BARs at offset 10h and 14h become
read only registers. This is the default state for the I/O BARs.
Initialized by BIOS when backward I/O Bar compatibility is
required Memory BARs are always enabled.
AC ’97 Programmer’s Reference Manual
15
Download from Www.Somanuals.com. All Manuals Search And Download.
Overview
R
2.1.5
Second Independent Input DMA Engines
The ICH5 continues to provide two sets of input DMA engines that allow for the secondary or
tertiary codecs to provide recording PCM data streams on the primary codec while simultaneously
providing recording capabilities from the secondary or tertiary codec. A typical application is to
provide independent input stream in a mobile docking configuration where an audio codec is
located in the base system (notebook unit) and the secondary or tertiary codec is located in a
docking unit for desktop replacement. The DMA engines provide the infrastructure for s/w to
select the input stream from either source for stereo or microphone recording. Also the capability
of simultaneous input streams opens the possibilities for more futuristic applications where a
multiple microphone array can be created using two codecs. Refer to Section 3.2 for more
information on how to program the DMA engines.
2.1.6
PCI Local Bus Specification, Revision 2.3 Power
Management
The ICH5 provides PCI Local Bus Specification, Revision 2.3-compliant power management
registers that allows for better OS power management support with reduced overhead to the BIOS
programmers using ACPI control methodologies.
2.2
General Requirements
It is assumed that the reader has a working knowledge of AC ’97 architecture and the ICH5 AC’97
controller implementation. Also, the reader should have an understanding of audio driver
development for the target operating systems.
This document outlines the software specification for the AC ’97 digital controller, and also
includes details necessary for development of an audio device driver.
16
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3 Intel® ICH5 AC ’97 Controller
Theory of Operation
The ICH5 AC ’97 digital controller (DC) interface is an implementation of the AC-link, with
additional features to support the transaction and device power management. The ICH5 AC’97 DC
includes DMA engines for high-performance data transfer to memory via a hub interface.
ICH5 AC’97 DC and AC-link support isochronous traffic, which emphasizes the timing of the
data. This is critical to maintain the data stream from the audio and/or modem codec.
3.1
Intel® ICH5 AC ’97 Initialization
3.1.1
System Reset
The ICH5 AC ’97 circuitry is reset on power up by combining the PCIRST# signal with the AC
Link RESET# signal. However, AC Link RESET# will not follow PCIRST# during a resume from
sleep condition. During operation, the system can be reset by clearing the AC ’97 cold reset bit in
the Global Control/Status register (GLOB_CNT). This bit is maintained during ICH5 sleep mode
and can be used by the driver to select warm or cold reset during a resume condition. At least one
codec must be present. Otherwise, ICH5 AC ’97 is not supported and the codec ready will never
be seen by the controller. Once the reset has occurred, a read to Mixer register 00h/80h will
indicate what type of hardware resides in the codec(s).
Software must ensure that the codec ready bit is present for the appropriate Global Control/Status
register (GLOB_CNT). Before writing any value on the codec registers or initiating a DMA
transfer, s/w must ensure that the codec has reached a ready status by reading the Audio codec
register Powerdown Control/Status register (Index 26h) or Extended Modem Status and Control
register (Index 3Eh) correspondingly.
3.1.2
Codec Topology
The following rules present the allowable codec configuration when attaching to the AC-link
interface. To avoid improper driver loading, the system BIOS should determine the presence of the
audio or modem codec attached on the AC-link, and enable the Audio or Modem function’s PCI
configuration space accordingly.
The following are the loading rules for ICH5:
1. Maximum of three codecs total on the link
2. Maximum of a single modem function, either as Modem Codec or a combination
Audio/Modem Codec
This information is used to disable (hide) the appropriate PCI function. To determine that a codec
or codecs are attached to the link, the System BIOS follows an algorithmic approach.
AC ’97 Programmer’s Reference Manual
17
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Drivers can distribute output and input data in appropriate slots associated with available codec(s).
For example a 6-channel data stream can be separated into three, 2-channel codec streams as long
as the codecs are programmed to decode the appropriate slot output stream (SDATA_OUT).
Similarly ICH5 provides two stereo PCM input channels as well as two microphone mono input
DMA channels. These allow for separate input streams for stereo PCM and microphone recording
from two different codecs simultaneously.
Software should match sample rates, when two codecs are teamed together. The codecs must have
matching vendors, types, and be explicitly supported in software. Essentially, audio codecs must
be programmed with a common sample rate. The selection of a common sample rate is based on
each codec’s capabilities, as detailed in Section 3.5.3.
3.1.3
BIOS PCI Configuration
The ICH5 AC ’97 controller, as previously indicated, exposes two PCI functions in the ICH5 (Bus
0, Device 31h). This allows for driver differentiation between these capabilities in the component.
• Function 5: ICH5 AC ’97 audio controller
• Function 6: ICH5 AC ’97 modem controller
As PCI devices there are a number of registers that are required to be initialized to enable these
functions. The following table summarizes these requirements.
Table 3. Audio Registers
Device 31 Function 5 Audio
Default
0000h
Offset
Register
Comments
Bit 2: Bus Master Enable
Bit 1: Memory Space Enable
04h-05h
Command (COM)
Bit 0: When enable in 41h I/O Space Enable
10h-13h
Native Audio Mixer Base
Address (NAMBAR)
00000001h
00000001h
When enable in 41h Address in the 64- K I/O space that allows
256 bytes of registers not in conflict with any other set
14h - 17h
Native Audio Bus
Mastering Base Address
(NABMBAR)
When enable in 41h Address in the 64-K I/O space that allows
256 bytes of registers not in conflict with any other set
18h – 1Bh
1Ch – 1Fh
Memory Audio Mixer
Base Address (MMBAR)
00000000h
00000000h
Address in the 4-GB memory space that allows 512 bytes of
registers not in conflict with any other set
Memory Bus Master
Base Address Register
(MBBAR)
Address in the 4-GB memory space that allows 512 bytes of
registers not in conflict with any other set
3Ch
41h
Interrupt Line (INTLN)
00h
00h
A hardware interrupt (0-Fh) that follows value assigned to PIRQB#.
Has not effect on ICH5 it is used to indicate software the IRQ value
assigned to the device.
CFG Configuration
When cleared, the I/O space BARs at offset 10h and 14h become
read only registers. This is the default state for the I/O BARs.
Initialize by BIOS when backward I/O Bar compatibility is required
Memory BARs are always enabled.
18
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Table 4. Modem Registers
Device 31 Function 6 Modem
Default
0000h
Offset
Register
Comments
04h-05h
Command (COM)
Bit 2: Bus Master Enable
Bit 0: I/O Space Enable
10h-13h
Native Audio Mixer Base
Address
00000001h
00000001h
Address in the 64-K I/O space that allows 256 bytes of registers not
in conflict with any other set
14h - 17h
Native Audio Bus
Mastering Base Address
(MBAR)
Address in the 64-K I/O space that allows 256 bytes of registers not
in conflict with any other set
3Ch
Interrupt Line (INTLN)
00h
A hardware interrupt (0-Fh) that follows value assigned to PIRQB#.
Has not effect on ICH5 it is used to indicate software the IRQ value
assigned to the device.
With the exception of register 41h on Device 31 Function 5, initialization of the PCI registers
above is the responsibility of the PnP capable OS. If a PnP OS is not available in the system, it is
then the BIOS’s responsibility to configure all PCI devices including the registers above.
Determination of the presence of PnP capable OS is usually made via a switch in the System
Setup. However, the final configuration or the existence or not of this switch is implementation
dependent.
The ICH5 AC’97 controllers also provide PCI Power Management functionality. PCI Power
Management Registers are available via the configuration space. Handling of the Power
Management registers is responsibility of the OS PCI Bus driver following standard procedures.
For further discussion on the usage model for this registers, refer to Section 3.6, Power
Management.
3.1.4
Hardware Interrupt Routing
The audio and modem functions in the ICH5 internally share the same PCI IRQ (PIRQB#). The
configuration software must take this into account and assign the same IRQ pin to both functions.
Sharing IRQs increases the ISR latencies. Each ISR must determine if the interrupting device is the
one serviced by the routine, as determined by the OS programming model. PIRQB# it is also
exposed as a PCI IRQ.
In an environment where a high Quality of Service (QoS) is required, system designers must pay
close attention to devices attached to the same PIRQ. Software driven signal processing functions,
as in the case of software driven modem and audio, require maintaining a low latency interrupt
service in order to maintain proper functionality. Software driver programmers need to pay close
attention to the ISR latencies and make use of Deferred Procedure Calls (DPC) as much as
possible.
3.1.5
PCI Lock
Note that host controllers are not required to support exclusive-access mechanisms (such as PCI
LOCK) for accesses to the memory-mapped register space. Therefore, if software attempts
exclusive-access mechanisms to the AC ’97 host controller memory-mapped register space, the
results are undefined.
AC ’97 Programmer’s Reference Manual
19
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.2
DMA Engines
The ICH5 AC ’97 controller uses a scatter gather mechanism to access memory. There are five,
16-bit DMA engines for Audio: 2 PCM Stereo In, 2 MIC mono in, and S/P DIF Out. There is one,
20-bit PCM 2/4/6 channel surround DMA engine. There are two, 16-bit DMA engines for Modem:
In and Out. Audio and Modem registers are located in two separate PCI functions in the ICH5
components to allow for driver development flexibility.
3.2.1
Buffer Descriptor List
The Buffer Descriptor List (BDL) allows device drivers to program DMA transfer using the ICH5
controller. The BDL is an array of up to 32 entries, each of which describes a data buffer. Each
entry contains a pointer to a data buffer, control bits and the length expressed as the number of
samples contained in the data buffer. The buffer length is restricted to 65535 samples. Samples can
be either 16 or 20 bits. Refer to section 3.4.1, for more details on the layout of samples in the data
buffer. A value of “0” in the buffer length indicates no samples to process. Each descriptor can
point to a buffer of a different size.
Figure 3. Generic Form of Buffer Descriptor (One Entry in the List)
(Dword 0 :-03h)
31
1
0
0
Buffer Pointer
0
(Dword 1 :-07h)
31 30
16 15
IOC BUP
R
Buffer Length
Table 5. BD Buffer Pointer (DWORD 0: 00-03h)
Bit
Description
31:1
0
Buffer pointer. This field points to the location of the data buffer. Since the samples can be as
wide as 1 word, the buffer needs to be aligned to word boundaries to avoid having samples
straddle DWord boundaries.
Reserved. Must be 0 when writing this field.
20
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Table 6. BD Control and Length (DWORD 1: 04-07h)
Bit
Description
31
30
Interrupt on Completion (IOC) 1= Enable , 0 = Disable. When this it is set, it means the
controller should issue an interrupt upon completion of this buffer. It should also set the IOC bit
in the status register.
Buffer Underrun Policy (BUP) 0 = When this buffer is complete, if the next buffer is not yet
ready, (last valid buffer has been processed) then continue to transmit the last valid sample.
1 = When this buffer is complete, if this is the last valid buffer, transmit zeros after this buffer is
completely processed. This bit will typically be set only if this is the last buffer in the current
stream.
29:16
15:0
Reserved. Must be 0 when writing this field.
Buffer length. This is the length of the data buffer in number of samples. The controller uses
this data to determine the length of the buffer in bytes. A value of 0 indicates no sample to
process.
3.2.2
DMA Initialization
The maximum length of the buffer descriptor list is fixed at 32 (this is limited by the size of the
index registers). Figure 4, below, describes the organization of the Buffer Descriptor List.
Figure 4. Buffer Descriptor List
Buffer Descriptor List
Base Add
Data Buffer
Buffer Pointer
Command Length
Buffer Pointer
Command Length
Buffer Pointer
Command Length
Buffer Pointer
Command Length
Current Index
n-1
n
Prefetched Index
Last Valid
n+1
Buffer Pointer
Command Length
AC ’97 Programmer’s Reference Manual
21
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
The following steps describe the driver initialization process for a single DMA engine. The same
process should be repeated for each DMA engine.
1. Create the buffer descriptor list structure in non-pageable memory.
2. Write the Buffer Descriptor List Base Address register with the base address of the buffer
descriptor list.
Table 7. Audio Descriptor List Base Address
Audio Buffer Descriptor List Base
Address
I/O Address:
PCM IN
MBBAR + 00h (PIBAR)
PCM OUT
MIC
MBBAR + 10h (POBAR)
MBBAR + 20h (MCBAR)
MBBAR + 40h (M2DBAR)
MBBAR + 50h (PI2BAR)
MBBAR + 60h (SPBAR)
MIC 2
PCM2 IN
SPDIF
Table 8. Modem Descriptor List Base Address
Modem Buffer Descriptor List Base
Address
I/O Address:
Line IN
MBAR + 00h (MIBDBAR)
MBAR + 10h (MOBDBAR),
Line OUT
3. Set up the buffer descriptors and their corresponding buffers. Buffers are usually passed to the
device driver as a list of descriptors that reference physical pages. These lists describe the
physical page numbers associated with the pages in the virtual audio buffer. Multiple buffer
descriptors may be required to represent a single virtual buffer passed to the device driver
4. Once buffer descriptors are set in memory, software writes the Last Valid Index (LVI)
register.
Table 9. Audio Last Valid Index
Audio Last Valid Index (LVI)
I/O Address:
MBBAR + 05h (PILVI),
PCM IN
PCM OUT
MIC
MBBAR + 15h (POLVI),
MBBAR + 25h (MCLVI)
MBBAR + 45h (M2LVI)
MBBAR + 55h (PI2LVI)
MBBAR + 65h (SPLVI)
MIC 2
PCM2 IN
SPDIF
22
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Table 10. Modem Last Valid Index
Modem Last Valid Index (LVI)
I/O Address:
Line IN
MBAR + 05h (MILVI)
MBAR + 15h (MOLVI),
Line OUT
5. After LVI registers are updated, software sets the run bit in the control register to execute the
descriptor list.
3.2.3
DMA Steady State Operation
Software has two concurrent activities to perform while in normal operation: Preparing new
buffers/buffer descriptors and marking processed buffer descriptors and buffers as free. Once the
run bit is set in the bus master control register bit 0, the bus master fetches the buffer descriptor.
1. Bus master starts processing the current buffer. Once current buffer is processed, depending
upon the bits set in the command field, the interrupt is asserted and the interrupt bit is set.
2. Bus master increments the current and pre-fetch indices. It then starts executing the current
buffer and schedules the next buffer to be pre-fetched.
3. Buffer service routine maintains a variable that points to the head of the list of descriptors to
be processed. The descriptor list service routine performs the following activities:
// Update head of descriptors to be processed
While (head != current_index)
{
Mark head free ;
// check for end of descriptor list
If head == base_address + (31 * 8);
// last entry on the list, set head to top of the list
head = base_address;
Else
// still inside the list, increment head to next entry
head++;
Caution: This algorithm needs to be optimized to reduce the number of memory accesses during
execution. The “while” statement could translate to several memory access if this code is not
execute after each buffer descriptor update.
Also, the routine that prepares buffers maintains a variable that points to the entry after the tail of
the list. This value is always the next entry after the Last Valid Index register. It follows the
following algorithm:
// Update tail of descriptor list ready for execution and audio
// buffers when available for processing
While ((tail == free) && (buffers_available > 0))
{
Prepare buffer descriptor indexed by tail;
buffers_available--;
//assign tail to Last Valid Index
LVI = Tail;
// check for end of descriptor list
If (tail == base_address + 31 * 8);
// last entry on the list, set tail to top of the list
tail = base_address;
Else
AC ’97 Programmer’s Reference Manual
23
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
// Advance tail to next value
tail++;
}
3.2.4
Stopping Transfers
There are two ways that DMA transfers can be stopped.
1. By simply turning off the Bus Master run/pause bit. This will halt the current DMA transfer
immediately. Data in the output FIFOs will continue to be read out until they empty. The
registers will retain their current values and AC-link corresponding slots will be invalidated.
Setting the run/pause bit will resume DMA activity.
2. Software can stop creating new buffers and hence not update the last valid index register. The
bus master will stop once the last valid buffer has been processed. All register information is
maintained. During this condition the controller will transmit the last valid sample or zeros
pending the status of the Buffer Underrun Policy (BUP) bit in the buffer descriptor entry. If
the run/pause bit remains set, then any future update to the Last Valid Index register will cause
the bus master operation to resume.
Note: Software must ensure that the DMA controller halted bit is set before attempting to reset
registers.
3.2.5
FIFO Error Conditions
Two general conditions could result in the FIFO error bit 4 in the status register being set. Pending
the status of bit 3 in the control register it will also cause an interrupt.
3.2.5.1
FIFO Underrun
FIFO underrun will occur when the ICH5 AC ’97 controller FIFO is drained:
1. As a result of system congestion. The DMA read transaction could still be pending as data has
not returned from memory. In this case the controller will repeat last sample until new data is
available in the FIFO.
2. As a result of DMA engine reaching the Last Valid Index, no further access to memory,
therefore FIFO will drain. In this case the controller will transmit the last valid sample or
zeros pending the status of the Buffer Underrun Policy (BUP) bit in the buffer descriptor
entry. This condition is an error if software is not able to update the descriptor list before the
DMA engine reaches the Last Valid Index. However, this condition could be as result of the
completing processing the last buffer. It is up to the software driver to determine the final
status of this condition. See also Stopping Transfers, Section 3.2.4.
3.2.5.2
FIFO Overrun
FIFO overrun will occur when valid data is transmitted in proper AC-link slots and DMA FIFO
remains full. Two conditions could result in the FIFO error bit 4 in the status register being set.
Pending the status of bit 3 in the control register it will also cause an interrupt.
1. As a result of DMA engine not being able to update system memory with the content of the
FIFO. This is a result of system congestion. In this case, all new samples received from the
AC-link will be lost.
24
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
2. As a result of the DMA engine reaching the Last Valid Index, no further access to memory,
therefore FIFO will not drain. This condition is an error if software is not able to update the
descriptor list before the DMA engine reaches the Last Valid Index. However, this condition
could be the natural result of the last buffer entry been processed. It is up to the software
driver to determine the final status of this condition. See also Stopping Transfers in paragraph
above.
3.3
Channel Arbitration
It is possible for up to eight ICH5 AC ’97 DMA channels to be enabled at one time. A round-robin
arbitration scheme is used to arbitrate between these channels.
3.4
Data Buffers
3.4.1
Memory Organization of Data
Samples are packed in an interleaved format: two samples for two channel (stereo), four samples
for four channels surround and six samples for six channels surround.
The actual PCM data is "left-aligned" within the container. The sample itself is justified most
significant; all extra bits are at the least-significant portion of the container. All non-valid data bits
must be set to 0. With 20 bit data, the "top" 20 bits (31-12) of the DWORD contain the data. The
bottom 12 bits (11-0) are not valid data. The sample data must be WORD aligned.
3.4.2
PCM Buffer Restrictions
Below are the memory buffer restrictions for ICH5 PCM that applies for 2-, 4-, and 6-channel
audio mode:
1. Buffer Descriptors Must Contain Integer Multiples of Framed Samples and Are Frame
Aligned:
Example: Two channel buffers must contain an integer multiple of two samples.
Four channel buffers must contain a multiple of four samples and six channel
buffers must contain a multiple of six samples. The controller does not support a
frame (e.g., left and right samples for two channel) spanning multiple
descriptors. Similarly, the controller does not support a buffer descriptor with a
single sample (PCM out MONO is not supported). Also, odd length buffers are
not allowed due to the sample alignment requirements.
2. Software Is Allowed to Create an Empty Frame (0 Samples) in a Buffer Descriptor with the
Following Restriction:
An empty buffer has to be part of a list of buffer descriptors and it cannot to be
the first Buffer Descriptor or the last Buffer Descriptor of the list. A series of
buffer descriptors with 0 samples are possible in the lists as long as they are not
the first or the last. The last Buffer Descriptor in the list is determined by the last
valid index (LVI) that is programmed.
AC ’97 Programmer’s Reference Manual
25
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.4.3
FIFO Organization
The ICH5 AC ’97 controller supports 16-bit samples on all channels except PCM Out, which also
supports 20-bit samples.
Data will be written to the FIFO in sample pairs following the order of valid slots in a channel. For
example, for audio PCM In, the controller will check the first valid slot and add it to the FIFO first
entry as a word (16 bits). The next valid slot will be added as the second word entry in the FIFO to
create the PCM stereo sample pair. This behavior works under the assumption that the first valid
slot will be always the Left channel (slot 3) followed by Right channel in slot 4 in the same or
subsequent frame. If the codec transmits data repeating the slot, it will cause the controller to
misplace the sample in the FIFO. Codecs compatible with the ICH5 AC ’97 implementation
should always maintain the indicated order, and never use the same slot twice to transmit samples
to the controller. The figures below present some ICH5 compatible and incompatible
implementations using as a reference a two-channel implementation.
Figure 5. Compatible Implementation with Left and Right Sample Pair in Slot 3/4 Every Frame
0
1
2
3
4
5
6
7
8
9
10
11
12
Slot #
SYNC
CMD
ADR
CMD
DATA
MDM
CDC
I/O
Control
TAG
TAG
TAG
TAG
X
X
X
X
X
X
X
X
RSVD
MIC
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
Frame n
Status
ADR
Status
Data
MDM
CDC
I/O
Status
Frame n + 1
Frame n + 2
Frame n + 3
CMD
ADR
CMD
Data
MDM
CDC
I/O
Control
RSVD
MIC
Status
ADR
Status
Data
MDM
CDC
I/O
Status
Figure 6. Compatible Implementation with Sample Rate Conversion Slots 3 and 4 Alternating
over Next Frame
0
1
2
3
X
X
4
5
6
7
8
9
10
11
12
Slot #
SYNC
CMD
ADR
CMD
DATA
MDM
CDC
I/O
Control
TAG
TAG
TAG
TAG
RSVD
MIC
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
Frame n
Status
ADR
Status
Data
MDM
CDC
I/O
Status
X
X
Frame n + 1
Frame n + 2
Frame n + 3
CMD
ADR
CMD
Data
MDM
CDC
I/O
Control
RSVD
MIC
Status
ADR
Status
Data
MDM
CDC
I/O
Status
26
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Figure 7. Incompatible Implementation of Sample Rate Conversion with Repeating Slots over
Next Frames
0
1
2
3
4
5
6
7
8
9
10
11
12
Slot #
SYNC
CMD
ADR
CMD
DATA
MDM
CDC
I/O
Control
TAG
TAG
TAG
TAG
X
RSVD
MIC
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
RSVD
Frame n
Status
ADR
Status
Data
MDM
CDC
I/O
Status
X
X
Frame n + 1
Frame n + 2
Frame n + 3
CMD
ADR
CMD
Data
MDM
CDC
I/O
Control
RSVD
MIC
Status
ADR
Status
Data
MDM
CDC
I/O
Status
X
Table 11. FIFO Summary
Channel
Mic In
# of Samples
FIFO Depth
FIFO Width
Comments
1
1
2
2
32 bits
32 bits
32 bits
32 bits
32 bits
2 frame dword
1
Mic2 In
1
2 frame dword
PCM In
PCM2 In
PCM Out
2
2
4
1 frames per dword
1 frames per dword
4
6, 4 or 2
24
1 frames per dword (2 –16 bits ch),
1 frame per 2 dword (2 –20 bits ch)
1 frame per 2 dword (4 –16 bits ch)
1 frames per 4 dword (4 –20 bits ch)
1 frames per 3 dword (6 – 16 bits ch.)
1 frames per 6 dword (2 –20 bits ch)
2 frames per dword
Modem In
1
1
2
2
32 bits
32 bits
Modem Out
2 frames per dword
NOTES:
1. One audio frame worth of data for the specific DMA channel.
3.5
Multiple Codec/Driver Support
The ICH5 AC ’97 controller is capable of supporting a three-codec implementation. Under this
implementation all codecs share the SDATA_OUT signal while independent SDATA_IN[0:2] are
used by the codec to supply data to the controller. ICH5 allows for a compatible behavior, where
the three SDATA_IN are used, these signals are logically OR’d inside the digital controller,
effectively creating one digital input data stream. However, ICH5 also allows for an independent
SDATA_IN functionality. In this case, the SDATA_IN Map Register (SDM) MBBAR + 80h is
used to steer the content of the input slots to the appropriate controller DMA engine. This
capability also allows for a more reliable enumeration algorithm of the available codecs.
AC ’97 Programmer’s Reference Manual
27
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Table 12. SDM Register Description
Bit
Type
Reset
Description
PCM In 2, Microphone In 2 Data In Line (D21L): When the SE bit is set, these bits
indicate which SDATA_IN line should be used by the hardware for decoding the
input slots for PCM In 2 and Microphone In 2. When the SE bit is cleared, the value
of these bits is irrelevant, and PCM In 2 and Mic In 2 DMA engines are not
available.
7:6
RW
00
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
11 Reserved
PCM In 1, Microphone In 1 Data In Line (DI1L): When the SE bit is set, these bits
indicates which SDATA_IN line should be used by the hardware for decoding the
input slots for PCM In 1 and Microphone In 1. When the SE bit is cleared, the value
of these bits are irrelevant, and the PCM In 1 and Mic In 1 engines use the OR’d
SDATA_IN lines.
5:4
RW
00
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
11 Reserved
Steer Enable (SE): When set, the SDATA_IN lines are treated separately and not
OR’d together before being sent to the DMA engines. When cleared, the
SDATA_IN lines are OR’d together, and the “Microphone In 2” and “PCM In 2”
DMA engines are not available.
3
2
RW
RO
0
0
Reserved
Last Codec Read Data Input (LDI): When a codec register is read, this indicates
which SDATA_IN the read data returned on. Software can use this to determine
how the codecs are mapped. The values are:
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
11 Reserved
1:0
RO
00
3.5.1
Codec Register Shadowing
Codec register reads are presented in the AC-link in the next available frame after the controller
receives the I/O transaction. Data will be returned to the controller pending codec availability. To
avoid longer latencies than necessary, the codec must return data in the next available frame.
Multiple frame transactions impose large system latencies, to the detriment of system performance.
Even when data is returned in the frame immediately after the read request is presented in the AC-
link, the minimum latency is still on the order of 40 µs. To minimize the effect on the system
caused by long latencies in the AC-link, software drivers must maintain a copy of the codec
register in memory (shadow) and use this data instead of accessing the codec.
28
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Shadowing in memory is effective as long as the codec itself does not change the value of the
registers. Therefore, the status of the GPIOs configured as inputs on the most recent frame is
accessible to software by reading the register at offset 54h in the modem codec I/O space. Only the
16 MSBs are used to return GPI status. Reads from 54h will not be transmitted across the link.
Instead, data received in slot 12 is stored internally in the controller, and the data from the most
recent slot 12 is returned on reads from offset 54h.
The Powerdown in codec offset 26h and 3Eh status registers are not supported by an automatic
shadowing mechanism, as is the case for offset 54h. However, these registers are sparingly used.
These registers are read only during power down status determination.
Finally, codec ready status is required during system initialization. It is automatically reflected in
the Global Status Register at MBBAR + 30h (MBAR + 40h) bit 8 for the SDATA_IN0 codec, bit
9 for the SDATA_IN1 codec and bit 28 for theSDATA_IN2 codec. These three bits need not be
saved in memory.
3.5.2
Codec Access Synchronization
All codec register writes are posted transactions in the ICH5 AC ’97 controller. The ICH5 AC ’97
controller will indicate transaction completion to the host processor immediately following the
request even when the transaction is actually pending for completion in the AC-link. This is done
to improve system performance. However, it also imposes restrictions in the driver(s) operation.
Also, register reads present synchronization issues.
Before a codec register access is initiated, the driver must check the status of the Codec access in
Progress (CAIP) bit 0 in the Codec Access Register at MBBAR + 34h (MBAR + 44h.) If no write
is in progress, this bit will be ‘0’ and the act of reading the register sets this bit to ‘1’. This reserves
the driver the right to perform the I/O read or write access. Once the write is complete, hardware
automatically clears the bit. The driver must also clear this bit if it decides not to perform a codec
I/O write after having read this bit. If the bit is already set, it indicates that another driver is
performing a codec I/O writes across the link and the driver should try again later.
3.5.3
Data Request Synchronization in Audio Split
Configurations
To support more than 2 channels of audio output, the AC ’97 Component Specification, Revision
2.1 allows for a configuration where up to three audio codecs work concurrently to provide
surround capabilities (refer to AC ’97 Component Specification, Revision 2.3) To maintain data on
demand capabilities the Intel controller, when configured for 4 or 6 audio channels, will wait for
all the appropriate Slot Request bits to be set before sending data in the SDATA_OUT slots. This
allows for a simple FIFO synchronization of the attached codecs.
If the codecs on the link are not compatible, or are not known to be compatible, with respect to
sample rate conversion algorithms and FIFO depth requirements (for instance, all codecs being the
same revision of the same model from the same vendor), Variable Rate support should not be
used, and a fixed sample rate of 48 MHz is recommended to maintain synchronization across the
codecs in use.
AC ’97 Programmer’s Reference Manual
29
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.6
Power Management
Power management of the driver/codec interaction requires careful sequencing in the ICH5 AC ’97
environment. In the ICH5 AC ’97 environment it is possible to have two drivers sharing the same
AC-link interface for two separate codecs or a single driver controlling two separate audio codecs.
A driver forcing an aggressive sleep state in the link could have functional repercussions on the
pairing codec. The Deep Sleep state in a device following ACPI compliance requirements is the
D3 State. When a driver is requested to set its device to the D3 State, the driver should enter the
most aggressive power saving mode possible. The D3 State is also often the precursor to a system
wide core power removal. Therefore several considerations must be taken into account to maintain
the device functionality and wake-up capability.
3.6.1
Codec Topologies
The procedure to be taken by an ICH5 AC ’97 device driver varies depending on the system
configuration. The following table enumerates the possible codec combinations supported by the
ICH5 AC ’97 controller.
The ICH5 audio/modem controller supports a maximum of three codecs. If there is more than one
audio codec, then the remaining codecs must proceed to the different power states at the same
time. The following system implementations are possible.
Table 13. Dual Codecs Topologies
Config.
1
AC
(Primary)
(Primary)
(Primary)
(Primary)
(Primary)
(Primary)
(Primary)
2
3
4
5
6
7
MC
AMC
AC
Possible D3 state interactions
Possible D3 State interactions
Driver interaction concern
+
+
+
+
MC
AC
(Secondary)
(Secondary)
(Secondary)
(Secondary)
AC
AMC
AC
AC
Possible D3 State Interactions
Possible D3 State Interactions
AMC
Note: The configuration above could be further limited by ICH5 AC ’97 riser card configuration
and loading. Refer to the Audio/Modem I/O Riser Specification for details.
It is evident that Configurations 1 and 2, above, require no driver synchronization between ICH5
AC ’97 codecs. Configuration 1 and 2 are single codec topologies, and therefore an aggressive
power saving mode is possible including disabling of the actual AC-link without concern of
affecting paired codec functionality.
Configuration 3 is a single codec topology that provides both functions audio and modem. In this
configuration driver interaction is also critical if a separate set of drivers are in control of the audio
and modem functions.
Configuration 4, however, is a two-codec topology. In this configuration an aggressive power
saving mode requires detailed attention to cross interactions and the effect on AC-link
functionality.
30
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Configuration 5 is a two-codec audio topology. In this configuration concerns are on the proper
power down sequence. However, no driver interaction is expected as only the audio driver
executes power management functions.
Configuration 6 is also a two-codec topology with split audio and integrated modem support. This
is the most complex interaction, as two different sets of driver will be operating in a complex
topology.
Configuration 7 is identical to configuration 6, with the primary and secondary codecs switched.
In order to power manage ICH5 AC ’97 codecs, there are two sets of PR bits that drivers need to
manage. One set is at offset MMBAR + 26h in the audio function, mapped to offset 26h in the
primary codec, and the second set is at MMBAR + 3Eh, mapped to offset 3Eh in the modem
function. Notice that register 3Eh does not provide link down functionality, this is provided in
register 56h bit 12, (MLNK) modem link.
3.6.1.1
Tertiary Codec Topologies
Table 12 lists configurations using a primary and secondary codec. ICH5 also supports
configurations involving a third (tertiary) codec. It is important to note that three codec
configurations are an extension of the corresponding two codec versions and have the same D3
interactions and issues. Therefore, the configurations, algorithms and pseudo-code described for
the secondary codec also apply and can be used for configurations that involve three codecs.
3.6.2
Power Management Transition Maps
The following paragraphs relate power management transition maps in the constraints of an ACPI
system environment. The tables below map codec PR bits transitions to specific ACPI “D” states
for the device.
The following considerations were made in the generation of the following tables:
• Power management is defined in the framework of a desktop system. Further power savings
are possible by implementing more aggressive power management typical of mobile
environment policies (see aggressive power management section below). However these
power savings are a trade off involving driver complexities and functional restrictions.
• Selection of a specific power policy below is pending the proper identification of the topology
by the driver(s).
• Secondary codec is provided with external clocking mechanism and is not dependent on
BIT_CLK to drive internal state machines when in power down mode.
• After warm or cold reset the device driver will bring all PR(x) bits to D0 state.
• Transition from/to any Dx state is accomplished by setting/resetting all appropriate PR(x) bit
simultaneously. Codec should not place limitations on the PR(x) bits transition sequence
represented above.
• Audio Codec Reg. 26h D15 EAPD (formerly PR<7> enable/disable function) is newly
defined as control for an external audio power amp. Audio codec should provide an audio
amp output pin (GPO) that provides off/on capability following this bit set/reset status.
• The modem tables assume Caller-ID capability during wake-up on ring, so Vref is on during
D3.
AC ’97 Programmer’s Reference Manual
31
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
• Modem D3 configuration is dependent on wake-up on ring event enable. If wake-up on ring is
enabled, GPIO cannot go down in D3.
Note: When a codec section is powered back on the Powerdown Control/Status register (index 26h)
should be read to verify that the section is ready before attempting any further operations.
Configuration Number 1: Single Audio Codec (Primary):
Table 14. Power State Mapping for Audio Single or Dual (Split) Codec Desktop Transition
PR<0:5> + (EAPD)
+12
+5
from
+12
+3.3
Digital
+3.3
Vaux
Digital
Comments
E
A
P
D
C
L
AC-
Mixer
Mixer
2
D
A
C
A
D
C
Link
Vref.
K
Device
State
7
5
4
3
1
0
D0
0
0
0
0
0
1
0
0
0
1
1
0
1
1
1
0
On
On
On
On
Off
On
On
On
On
On
All on
D1
D2
D3
0
1
1
0
0
1
0
0
1
1
1
1
On
On
Off
On
On
Off
-DAC, -ADC
-Mix, -Amp
-Clock, -Vref
Configuration Number 2: Single Modem Codec (Primary):
Table 15. Power State Mapping for Modem Single Codec Desktop Transition
PR<A:D> + MLNK
+12
+5
from
+12
+3.3
Digital
+3.3
Vaux
Digital
Comments
(other power control (PRx) bits do not apply for Intel® ICH5
implementation)
Sdata_In
D
A
C
1
A
D
C
1
Vref
GPIO
Device State
D0
MLNK
D
C
B
A
0
0
0
1
0
1
1
1
0
1
1
1
0
0
On
On
On
On
On
On
On
All on
D1
0
0
0
0
0
0
On
On
Off
On
On
Off
On
On
Off
-DAC, -ADC
Same as D1
-Sdata_In,
D2
D3
(wake-up on ring)
D3
1
1
1
1
1
Off
Off
Off
On
-Sdata_In,
-Vref, -GPIO
32
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Configuration Numbers 3 to 6: Dual Function Single or Dual Codec
Configurations:
Table 16. Power State Mapping for Audio in Dual Codec Desktop Transition
PR<0:5> + (EAPD)
+12
+5
from
+12
+3.3
Digital
+3.3
Vaux
Digital
Comments
E
A
P
D
C
L
AC-
Mixer
Vref.
Mixer
2
D
A
C
A
D
C
Link
K
Device
State
7
5
4
3
1
0
D0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
0
0
1
1
1
On
On
On
Off
On
On
On
Off
On
On
On
Off
On
All on
D1
D2
D3
0
1
1
0
0
0
1
1
1
On
On
On
-DAC, -ADC
-Mix, -Amp
-Clock, -Vref
NOTES:
1. PR(4) link down and PR(5) internal clocks disable are NOT recommended for desktop configuration.
Setting these to power control bits could affect modem operation in an AC + MC configuration.
2. In a mobile system configuration, PR(4) and PR(5) could be used to provide further power savings.
Driver designers should use D3 state codec semaphores in the ICH5 AC ’97 controller to determine
audio or modem codecs power status before setting PR(4) and PR(5) bits. Please refer to ICH5 AC ’97
External Architecture Specification for details. The miniport driver developed for the ICH5 AC ’97
controller does not provide this capability.
3. In a dual audio codec transition, PR bits must be set in both of the codec registers. The primary audio
power management register set is always located MMBAR + 26h, the secondary audio codec power
management register set is located at MMBAR + A6h. Configuration software must sequence power
down to the secondary codec first and then the primary codec. The process is reversed at resume when
the primary codec is first restored and then the secondary.
AC ’97 Programmer’s Reference Manual
33
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
Table 17. Power State Mapping for Modem in Dual Codec Desktop Transition
PR<A:D> + MLNK
+12
+5
from
+12
+3.3
Digital
+3.3
Vaux
Digital
Comments
(other power control (PRx) bits do not apply for Intel® ICH5
implementation)
Sdata_In
D
A
C
1
A
D
C
1
Vref
GPIO
Device State
D0
MLNK
D
C
B
A
0
0
1
1
1
0
0
0
On
On
On
Off
On
On
On
Off
On
On
On
Off
On
On
On
On
All on
D1
D2
0
0
1
1
1
1
0
0
0
0
0
0
-DAC, -ADC
Same as D1
-Sdata_In,
D3
(wake-up on
ring)
D3
1
1
1
1
1
Off
Off
Off
On
-Sdata_In,
-Vref, -GPIO
Table 15 and Table 16 above, represent the recommended Power Transition Tables for a Desktop
System. The tables above preclude the need for a driver to provide codec topology detection
simplifying the initialization sequence. These tables do not provide the maximum power saving.
However, they are believed to provide sufficient power saving for the Desktop applications. The
OEM and IHV are free to provide further differentiation by allowing the deeper power savings
obtained by identifying the codec Topology.
3.6.3
Power Management Topology Considerations
A set of drivers could always assume Configuration Numbers 3 and 4, above, and establish their
power management policy based on Table 15 and Table 16. These are the safest configurations
with a semi-aggressive power management style consistent with a desktop environment. However,
even in a desktop environment, further power savings are possible when in Single Codec
Configurations Numbers 1 and 2. For the tables above to be implemented, the audio driver needs
to be able to determine the AC-link topology configuration.
3.6.3.1
Determining the Presence of Secondary and Tertiary Codecs
To determine that optional secondary and tertiary codecs are present, the driver needs to check
three Codec Ready bits located in the Global Status Register at:
Codec Ready:
I/O Address:
MBBAR + 30h (MBAR +40h) bits 8,9,28
If two of these three bits are set to 1, it indicates that a secondary codec is active in the AC-link.
If all three of these bits are set to 1, it indicates that a tertiary codec is active in the AC-link.
34
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.6.3.2
Determining the Presence of a Modem Function
In the case of an AMC configuration, only the primary codec ready bit will be indicated. In order
to determine proper power down configuration, the audio driver needs to determine the presence
of modem functionality in the codec. The audio driver could check the Extended Modem ID
register at:
Extended Modem ID: I/O Address:
MMBAR + 3Ch
The content of this register will be FFh if no modem function is present.
3.6.4
3.6.5
Resume Context Recovery
When the system is placed in a powerdown state (S3 or greater) power is removed from the ICH5
AC ’97 controller. In this state DMA registers lose information regarding current position and
pointer values. The device driver must be able to save the context of all DMA engines before
acknowledging a D3 state. Device drivers must assume that D3 state request precedes a total
system powerdown causing context for the DMA engines to be lost. Upon system power resume,
the device driver must restore the DMA engine registers to the values saved prior to the suspend
event.
Aggressive Power Management
As indicated in previous sections it is possible to go into a more aggressive power savings mode
by carefully synchronizing audio and modem driver interactions over the AC-link. This aggressive
power savings is usually found in mobile environments where battery power is critical.
Driver synchronization is required in a dual codec configuration where the audio driver could
cause a link down power condition by setting the PR4 and PR5 bits in the audio codec register.
When PR4 and PR5 are set, the AC-link base clock BIT_CLK is stopped. If this action occurs
while the modem codec is still in operating mode, it will cause malfunctions and possibly a system
hang.
To avoid this and similar situations, the audio and modem driver could follow a protocol using the
provided audio and modem D3 state bit semaphores, AD3 for audio and MD3 for modem. These
bits are located at:
Codec Write Semaphore Registers:
NABMAR +30h Audio I/O Space and MBAR + 40h Modem I/O Space
bit 16 for Audio (AD3)
bit 17 for Modem (MD3)
ICH5 AC ’97 drivers should set the appropriate bit after setting the codec in a D3 state. The audio
codec could use this semaphore to determine if the modem codec is already in a D3 state and shut
down the link by also asserting PR4 and PR5 in the power management register in the audio
function/codec. The following sections review in detail the sequence of events for drivers/codec
entering a D3 state and a resume to D0.
AC ’97 Programmer’s Reference Manual
35
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.6.5.1
Primary Audio Requested to D3
The audio power management procedure attempting to get the audio codec to D3 state.
If MD3 == true
{
// (sleeping?)
Audio_Power_Manage_Reg = D3 + PR4 + PR5;
// yes, sleep plus AC Link down
}
Else
{
Audio_Power_Manage_Reg = D3; // No, sleep keeping link up
}
AD3 = true;
// set to "audio sleeping"
// setting the flag last avoids race condition during
// D0->D3 transition.
3.6.5.2
3.6.5.3
Secondary Modem Requested to D3
The modem power management procedure will try to get the modem codec to D3 state.
Secondary_codec = D3 + MLNK // yes, sleep plus SDATA_IN1 low
MD3 = true
// setting the flag last avoids race condition during D0->D3
// transition.
// MLNK corresponds to register Reg. 56h bit 12 (D12)
Secondary Modem Requested to D0
The modem power management procedure will try to get the modem codec to D0 state.
MD3 = false
// set to "modem awake"
// Setting the flag first avoid race condition during D3->D0
// transition
If Modem_ready == True
{
Modem_Power_Manage_Reg = D0 // Bring back to fully awake,
}
If AD3 == true
{
// (audio sleeping?)
Link_reset()
// cause a warm or cold reset
// wait for modem ready
While (!Modem_ready)
{
read modem codec ready bit every 400 ms
}
Modem_Power_Manage_Reg = D0 // Bring back to awake,
}
36
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
3.6.5.4
Audio Primary Requested to D0
The audio power management procedure will attempt to get the audio codec to D0 state.
AD3 = false // set to "audio awake"
// Setting the flag first avoid race condition during D3->D0
// transition
If Audio_ready == True
{
Audio_Power_Manage_Reg = D0;
// Bring back to fully awake,
}
If MD3 == true;
// (modem sleeping?)
{
Link_reset();
// cause a warm or cold reset
// wait for modem ready
While (!Audio_ready);
{
read audio codec ready bit every 100ms;
}
Audio_Power_Manage_Reg = D0; // Bring back to awake,
}
3.6.5.5
Using a Cold or Warm Reset
In the pseudo code above there are several references to resetting the AC-link using
“Link_reset()”. Drivers need to differentiate if the system enters a suspend event where core power
is removed from the system before deciding to execute a Cold or Warm reset. A device is in a “D3
hot” state after the device is set in the lowest power consumption mode and core power is
maintained. A device is in a “D3 cold” state when the device is set in the lowest power
consumption mode and core power is removed.
In the ICH5 AC ’97 implementation when core power is removed the cold reset bit is reset “0”
This bit is located at:
MBBAR + 2Ch and MBAR + 3Ch
bit 1 ICH5 AC ’97 Cold Reset#.
A driver requested to resume to a D0 state from a D3 state must check the status of the ICH5 AC
’97 cold reset bit. If this bit has a value of “0” the driver will set it to “1” to de-assert the
AC_RESET# signal in the link, thus completing a cold reset. If the Cold Reset bit is set to “1” then
a warm rest is required if the AC-link is down by the procedures indicated under aggressive power
management. To execute an ICH5 AC ’97 warm reset the driver must set to “1” the ICH5 AC ’97
warm reset bit located at:
MBBAR + 2Ch and MBAR + 3Ch
bit 2 ICH5 AC ’97 Warm Reset#
AC ’97 Programmer’s Reference Manual
37
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Controller Theory of Operation
R
A pseudo code representation is as follows:
void Link_reset(void)
{
If Cold_Reset# == True // AC_RESET# asserted, D3 when cold!
{
Cold_Reset# = False; // De-assert AC_RESET# Wake-up!
Warm_reset = True; // D3 is Hot! Do warm reset
}
Else
{
}
}
38
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Surround Audio Support
R
4 Surround Audio Support
The AC ’97 Component Specification allows for up to six channels of audio supported in the AC-
link. The audio device driver must determine the number of audio channels available in the
codec(s) and properly enable the ICH5 AC ’97 controller to support those channels in the link.
4.1
Determine Codec’s Audio Channels
Upon determination of the link topology, system software must proceed to resolve the total
number of audio channels available in the codec(s). Appendix A of the AC ’97 Component
Specification, Revision 2.1 defines codec register index 28h to indicate the presence of surround,
center and LFE channels as follows: Extended Audio ID Register (Index 28h).
Table 18. Extended Audio ID Register
Bit D6:
CDAC=1 indicates optional PCM Center DAC is supported
Bit D7:
Bit D8:
Bit D9:
SDAC=1 indicates optional PCM Surround L and R DACs are supported
LDAC=1 indicates optional PCM LFE DAC is supported
AMAP=1 indicates optional slot/DAC mappings based on Codec ID (Refer to the AC ’97
Component Specification, Revision 2.1, Appendix D for description)
Bit D15-D14:
ID1, ID0 is a 2-bit field which indicates the Codec configuration: Primary is 00;
Secondary is 01, 10, or 11 (Refer to the AC ’97 Component Specification, Revision 2.1
Appendix C for details)
The AC ’97 Component Specification, Revision 2.3, Section 5.8.2, provides detailed information
on the usage model for multiple audio channels. This specification assumes the proper use of the
AMAP bit describes the partition of the channels exposing critical functionality. If AMAP bit is
not set to “1” a generic driver will not be able to determine the proper codec to slot distribution for
a split audio codec configuration.
Based on Table 32 of the AC ’97 Component Specification, Revision 2.3, the following table
describes the available codec topology to audio channel distribution for ICH5 AC ’97 controller.
Table 19. Single Codec Audio Channel Distribution
Single Audio Codec Configuration
Primary
Total Audio Channels
L/R
2
4
6
L/R; S-L/R
L/R; S-L/R; C/LFE
AC ’97 Programmer’s Reference Manual
39
Download from Www.Somanuals.com. All Manuals Search And Download.
Surround Audio Support
R
Table 20. Multiple Codec Audio Channel Distribution
Split Audio Codec Configuration
Primary
Secondary
Tertiary
Total Channels
L/R
L/R
L/R
-
-
-
-
2
4
6
S-L/R
S-L/R;
C/LFE
L/R
S-L/R
C/LFE
6
Legend:
L/R:
Left Stereo Channel (Slot 3); Right Stereo Channel (Slot 4)
S-L/R:
C/LFE:
(-):
Surround Left Channel (Slot 7); Surround Right Channel (Slot 8)
Center Channel (Slot 6); Low Frequency Enhancement “subwoofer” (Slot 9)
Not Applicable for this configuration could be used for simultaneous S/PIDF output
4.2
Enabling Intel® ICH5 AC ’97 Controller Audio
Channels
The ICH5 indicates how many channels supports in its Global Status Register. The ICH5 AC ’97
controller defaults to PCM stereo after system reset or suspend-resume from S3, S4 or S5. Audio
drivers can determine the total number of channels and re-configure the controller to support either
4 or 6 channel audio for PCM Out only. PCM In and PCM2 In are not configurable and are always
set for 2 -channel input. PCM MIC In and PCM2 MIC In are also not configurable and are always
single channel (monaural.) The total numbers of audio channels supported are indicated at:
MBBAR + 30h: Global Status Registers.
Table 21. CM 4/6 –PCM Channels Capability Bits
Bit
Description
21:20
PCM 4/6 Capability:: These read-only bits indicate the capability to support more than 2 channels
for the PCM OUT. These bits will both be 1 to indicate that the Intel® ICH5 supports both 4 and 6-
channel PCM output.
The ICH5 AC ’97 controller also provides support for an independent DMA channel to provide
simultaneous S/PDIF output stream. This allows for concurrent PCM surround out with AC3
compress over S/PDIF interface. ICH5 AC ’97 controller follows slot assignments described in
Section 5.4.2.1 and Table 13 of the AC ’97 Component Specification, Revision 2.3.
System software enables the number of channels it intends to provide to the codec at:
MBBAR + 2Ch: Global Control Registers.
40
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Surround Audio Support
R
Table 22. AC-Link PCM 4/6 -Channels Enable Bits
21:20
PCM 4/6 Enable: Enables
the PCM Output to be in 4
channel or 6-channel
mode.
PCM Slots Enable:
(PCM OUT DMA)
S/PDIF Slots Enable:
(S/PDIF Out DMA)
00 = 2 channel mode
(default).
3, 4 (L and R)
7, 8
01 = 4 channel mode.
10 = 6 channel mode
3, 4, 7, 8 (L, R, RL and RR)
6, 9
3, 4, 7, 8, 6, 9 (L, R, RL, RR, C and
LFE)
10, 11
11 = Reserved
(undefined)
(undefined)
AC ’97 Programmer’s Reference Manual
41
Download from Www.Somanuals.com. All Manuals Search And Download.
Surround Audio Support
R
This page is intentionally left blank.
42
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
20-Bits PCM Support
R
5 20-Bits PCM Support
The ICH5 AC ’97 controller provides support for 16- or 20-bit PCM out. Software can determine
if 20-bit samples are supported in the controller by reading the sample capabilities bits in
GLOB_STA registers as follows: MBBAR + 30h: Global Status Registers.
Table 23. Sample Capabilities
Bit
23:22
Description
Sample Capabilities: Indicates the capability to support greater than 16-bit audio.
00 = 16-bit Audio only supported (ICH1, ICH2, and ICH3 value)
01 = 16 and 20-bit Audio supported (ICH5 value)
10 = Reserved (for 24-bit audio support)
11 = Reserved
After determination of the controller capabilities, software can enable 20 –bits formats by
programming the GLOB_CNT register as follows: MBBAR + 2Ch: Global Control Registers.
Table 24. PCM Out Mode Selector
Bit
Description
PCM Out Mode (POM): Enables the PCM out channel to use 16 or 20-bits. This does not affect
microphone, microphone2, PCM In, PCM2 In, or S/PDIF DMA. When greater than 16-bits audio is
used, the data structures are aligned as 32-bits per sample, with the upper order bits representing
the data, and the lower order bits as don’t care.
23:22
00 = 16 bit audio (default)
01 = 20 bit audio
10 = 24-bit audio (not supported. If set, indeterminate behavior will result.
11 = Reserved. If set, indeterminate behavior will result.
Note: Software must ensure that the PCM out DMA engine is stop and a new descriptor initialized
before changing the value of PCM Out mode. These bits must not be modified when the PCM Out
engine is running.
AC ’97 Programmer’s Reference Manual
43
Download from Www.Somanuals.com. All Manuals Search And Download.
20-Bits PCM Support
R
This page is intentionally left blank.
44
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Independent S-P/DIF Output Capability
R
6 Independent S-P/DIF Output
Capability
The ICH5 AC’97 controller provides an independent DMA engine for S-P/DIF output that
operates independently of the six channels PCM Out stream. This allows the S-P/DIF data stream
to be independent of the PCM stream, allowing usage models such as playing a DVD movie with
output to S-P/DIF while at the same time using PCM In and Out in a telephony application.
The S-P/DIF DMA engine is initialized and is programmed in the same manner as the other DMA
engines available, as described in Section 3.2.
Data from the S-P/DIF DMA engine may be output on several different pairs of slots, depending
on the codec configuration. The SSM bits in the Global Control register control on which slots the
S/P-DIF data is transmitted, as defined below. The default value (00) for this register is a reserved
value, and so these bits must be appropriately programmed before the DMA engine is used.
These bits are reset on controller reset, and are not affected by the reset of the S-P/DIF DMA
engine.
Table 25. Global Control Register S-P/DIF Slot Map Bits
Bit
Type
Reset
Description
S/PDIF Slot Map (SSM): If the run/pause bus master bit (bit 0 of offset
2Bh) is set, then the value in these bits indicate which slots S/PDIF data is
transmitted on. Software must ensure that the programming here does not
conflict with the PCM channels being used. If there is a conflict,
unpredictable behavior will result – the hardware will not check.
Bits
00
Output Slots for S/PDIF Data
31:30
RW
00
Reserved
7 & 8
01
10
6 & 9
11
10 & 11
AC ’97 Programmer’s Reference Manual
45
Download from Www.Somanuals.com. All Manuals Search And Download.
Independent S-P/DIF Output Capability
R
This page is intentionally left blank.
46
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Support for Double Rate Audio
R
7 Support for Double Rate Audio
The ICH5 AC’97 controller has the capability of supporting a stereo 96 kHz stream using the
AC’97 Double Rate Audio (DRA) support. This capability is enabled by programming the
controller to use four-channel mode, which will place data on slots 3, 4, 7, and 8. A codec that is
capable of treating the stream as PCM Left, Right, Left+1, and Right+1 data will interpret this as
96 kHz stream, providing higher quality audio.
Note that the current AC ’97 Component Specification, Revision 2.3 provides support for Double
Rate on slots 3, 4, 10, and 11, a mode that is not supported by the ICH5 controller. Codecs will
need to additionally accept data on slots 3, 4, 7, and 8 to utilize DRA with the ICH5.
AC ’97 Programmer’s Reference Manual
47
Download from Www.Somanuals.com. All Manuals Search And Download.
Support for Double Rate Audio
R
This page is intentionally left blank.
48
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Independent Input Channels Capability
R
8 Independent Input Channels
Capability
ICH5 AC ’97 controller provides capability for two DMA channels dedicated to independent PCM
and Microphone audio streams. These allow improved features that enable applications such as
audio mobile docking and microphone arrays. Before the DMA transfer can occur software must
determine the proper codec topology in the AC-link in order to program proper volume values and
other relevant properties.
8.1
Link Topology Determination
While the SDATA_Out lines are shared by all AC ’97 Component Specification, Revision 2.3-
compliant codecs, the input DMA engines must be properly steered to specific SDATA_IN[0:2]
lines on the link. Software must determine the specific codec ID assignment to the
SDATA_IN[0:2] lines to properly adjust codec properties for operation. Software must fill a table
similar to the following:
Table 26. Topology Descriptor
Input Channels
SDATA_IN[0:2]
Codec ID[00:10]
PCM IN & MIC
?
?
?
?
PCM IN 2 & MIC 2
Software uses a recurrent algorithm using the SDATA_IN Map Register to determine the values
for the table above.
MBBAR + 80h: SDATA_IN Map Register.
Table 27. SDATA_IN Map
Bit
Description
PCM In 2, Microphone In 2 Data In Line (D21L): When the SE bit is set, these bits indicates which
SDATA_IN line should be used by the hardware for decoding the input slots for PCM In 2 and
Microphone In 2. When the SE bit is cleared, the value of these bits are irrelevant, and PCM In 2 and
Mic In 2 DMA engines are not available.
7:6
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
11 Reserved
PCM In 1, Microphone In 1 Data In Line (DI1L): When the SE bit is set, these bits indicates which
SDATA_IN line should be used by the hardware for decoding the input slots for PCM In 1 and
Microphone In 1. When the SE bit is cleared, the value of these bits are irrelevant, and the PCM In 1
5:4
and Mic In 1 engines use the OR’d SDATA_IN lines.
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
AC ’97 Programmer’s Reference Manual
49
Download from Www.Somanuals.com. All Manuals Search And Download.
Independent Input Channels Capability
R
Bit
Description
11 Reserved
Steer Enable (SE): When set, the SDATA_IN lines are treated separately and not OR’d together before
being sent to the DMA engines. When cleared, the SDATA_IN lines are OR’d together, and the
“Microphone In 2” and “PCM In 2” DMA engines are not available.
3
2
Reserved
Last Codec Read Data Input (LDI): When a codec register is read, this indicates which SDATA_IN the
read data returned on. Software can use this to determine how the codecs are mapped. The values
are:
1:0
00 SDATA_IN0
01 SDATA_IN1
10 SDATA_IN2
11 Reserved
Software must follow the following steps to determine the codec topology:
1. Determine codec present by reading the codec ready bits GLOB_STA Global Status Register.
MBBAR + 30h: SDATA_IN Map Register.
Table 28. Codec Ready Bits
Bit
Description
28
9
Tertiary Codec Ready (TRI) – RO. Provides the state of codec ready bit on SDATA_IN[2]
Secondary Codec Ready (TRI) – RO. Provides the state of codec ready bit on SDATA_IN[1]
Primary Codec Ready (PRI) – RO. Provides the state of codec ready bit on SDATA_IN[0]
8
2. Once codec present is determined, software will determine the ID of the codec attached to
each SDATA_IN line in used by reading any codec register at codec ID 00, 01 or 10. As
indicated in Table29below and determine the returning SDATA_IN line by reading bits 1:0 in
SDATA_IN Map registers as shown in Table 27. SDATA_IN Map, above.
Table 29. MMBAR: Mixer Base Address Register
Codec ID 00 (offset)
Codec ID 00 (Offset)
Codec ID 00 (Offset)
00h to 7Fh
80h to FFh
100-7Fh
3. Base on the codec assignment and the specific application software will map the specific
DMA engines to the appropriate SDATA_IN[0:2] lines by programming [7:6] for PCM/MIC
and [5:4] for PCM/MIC2 in SDATA_IN MAP register as per Table 27.
4. Finally software will enable the steering mechanism by asserting bit [3] in SDATA_IN Map
register before initiating a data transfer.
50
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Modem Driver
R
9 Intel® ICH5 AC ’97 Modem Driver
The AC ’97 Component Specification allows for a modem codec to be connected to the AC-link
interface. This allows for the development of a software stack that provides modem functionality,
i.e. a soft modem. Currently there is no a single definition of how a soft-modem should be
implemented under Microsoft operating systems as is the case for audio in a WDM environment.
Soft modem vendors have developed a variety of implementations for Microsoft Windows* 95,
Windows* 98, Windows NT* 4.0 and Windows NT 5.0 operating systems. The design problems
are not trivial for the soft-modem developer. This document does not attempt to describe solutions
for each of these environments, but focuses instead on facilitating the development of the
driver/hardware interface. At the time of this specification, Microsoft and Intel are engaging with
the industry to define a common interface for the WDM environment.
9.1
Robust Host-Based Generation of a Synchronous
Data Stream
This section presents a method for synchronous modem data to be reliably generated on the host
processor of a computer system where the host processor is running a non real-time operating
system whose maximum response latency (interrupt, thread, etc.) exceeds the period at which the
host processor generates consecutive buffers of modem data. For the purposes of this discussion
we will assume that the host processor periodically, in response to interrupts, generates a buffer of
modem data in memory, which is then utilized or consumed in a synchronous fashion by hardware.
This modem data would comprise a sequence of digital representations of the analog signal to be
transmitted over a phone line in accordance with one of a variety of modem protocols, baud rates,
etc., and could be transmitted to the ICH5 AC ’97 DMA engines via the buffer descriptor list as
described in Section 3.2.
We will also assume, for the sake of simplicity, that the data are double buffered, so that failure to
generate new data before the next period will result in stream underflow from the hardware’s
viewpoint, but other scenarios including multiply buffered designs as well as non-periodic
processing models can be accommodated. The algorithm works by providing good data followed
by spurious data, which is chosen or computed so as to be adequate to maintain connection with
the other modem by, for example, transitioning seamlessly with respect to the phase of the carrier
frequency and the baud rate, thereby avoiding a retrain. This enables the datapumps of the two
modems to maintain synchronization in the face of infrequent hold-offs from processing
experienced by the datapump of the host-based transmitting modem. The spurious data will, of
course, cause a packet retransmission or other action by the controller, but to the receiving modem
the incoming data signal will be indistinguishable from one corrupted by line conditions.
AC ’97 Programmer’s Reference Manual
51
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Modem Driver
R
The first invocation of the host based modem task provides an initial buffer and one or more
buffers of spurious data (henceforth, spurious buffers). The task chooses or computes each of the
spurious buffer(s) based on signal state at end of immediately preceding buffer. Note that these
buffers do not have to be computed on the fly but can be precomputed and indexed into at run
time. Subsequent invocations overwrite the previously provided spurious data with good data so
that under normal conditions the spurious data is never used or consumed by the DMA engine. In
the event that the host based modem task does not generate the next buffer in time for the DMA
engine to begin consuming it the DMA engine is able to begin consuming the spurious buffer and
thereby maintain seamless connection with the other modem’s datapump.
9.1.1
Spurious Data Algorithm
The following pseudo code presents a conceptual view the algorithm. LastState()is a
function of which returns a unique integer as a function of, for example, the carrier phase and baud
position of the last sample in the buffer. In an actual implementation this value would be computed
during the course of generating the buffer. The SpuriousBufferListis an array of
precomputed spurious buffers.
while (1)
{
compute next buffer;
pNextBuffer = &buffer;
pSpuriousBuffer = &(SpuriousBufferList[LastState(buffer)]);
wait for timer interrupt;
}
In this simplified scenario the device grabs the pNextBufferaddress and stores it locally, using
it to request the samples in the buffer one at a time. At the same time the device copies the
pSpuriousBufferinto pNextBufferso that when it is done with the current buffer it will
get the spurious buffer unless the host software runs and overwrites pNextBufferwith a pointer
to good data. In the next section we show how to implement the spurious data algorithm within the
context of the ICH5 AC ’97 buffer descriptor interface to hardware.
9.1.2
Intel® ICH5 AC ’97 Spurious Data Implementation
The following pseudo code presents a modified version of the routine that prepares buffers and
inserts them into the ICH5 AC ’97 buffer descriptor list. In contrast to the version of this routine
given in Section 3.2.3, in this version tailpoints to the last good (i.e., non-spurious) buffer in
the list. Furthermore, because the ICH5 AC ’97 DMA engine pre-fetches the next buffer descriptor
we split the buffer generated by the datapump into two parts, with the second as small as practical
and denote this size as MinBufferLength(here assumed to be 8 samples = 4 DWORDS = 500
µs. at 16 kHz.). For simplicity we assume that only a single buffer is generated by the datapump at
a time and we ignore checking for the end of the descriptor list (i.e., the addition is implicitly
modulo 32).
52
AC ’97 Programmer’s Reference Manual
Download from Www.Somanuals.com. All Manuals Search And Download.
Intel® ICH5 AC ’97 Modem Driver
R
while (tail <= Prefetched_Index)
{
tail++; // Happens IFF Spurious Data was used
}
if ( ((tail <= LastValidIndex) || (tail
== free))
&&(((tail+1) <= LastValidIndex) || ((tail+1) == free)) )
{
Descriptor.BufferPtr[tail] = &buffer;
Descriptor.BufferLength[tail] =
length(buffer) – MinBufferLength;
Descriptor.BufferPtr[tail+1] =
&buffer + length(buffer) – MinBufferLength;
Descriptor.BufferLength[tail+1] =
MinBufferLength;
tail += 2;
}
else
{
;
//error: no space for this data buffer
}
if ((tail <= LastValid index) || (tail == free))
Descriptor.BufferPtr[tail] =
&(SpuriousBufferList[LastState(buffer)]);
Descriptor.BufferLength[tail] =
SpuriousBufferLength[LastState(buffer)];
LastValidIndex = tail;
//Note: tail is NOT incremented, so next time we’ll overwrite
//
//
this descriptor, which is the whole point of this
algorithm
}
else
{
LastValidIndex = tail-1; //warning: no space for spurious
// data buffer
}
The above implementation can be improved upon in a number of ways. First, rather than adding a
single (large) spurious buffer, a number of smaller ones could be chained together. In this way, the
amount of spurious data actually transmitted would be reduced while still maintaining a given level
of protection against long latencies for the host-based software. Additionally, the implementation
could be extended to handle multiple buffers at once, inserting several buffers in a row and only
splitting the last one and then appending a spurious buffer or buffers. Finally, the descriptor list is
a circular buffer and a real implementation would have to check tailand tail+1against
base_address + 31 * 8.
AC ’97 Programmer’s Reference Manual
53
Download from Www.Somanuals.com. All Manuals Search And Download.
|