Plug and Play Guidelines for High Definition Audio Devices - 10

Plug and Play Guidelines for High Definition Audio Devices

October 5, 2004

Abstract

This paper provides information about audio devices and drivers for the Microsoft® Windows® family of operating systems. It provides guidelines for providing PlugandPlay support for audio devices that are compatible with the Intel® High Definition Audio specification and meet the additional requirements of Microsoft's Universal Audio Architecture (UAA). As part of the UAA initiative, Microsoft provides a list of PlugandPlay guidelines for identifying High Definition Audio codec and bus controller devices. These guidelines, which are presented in this document, allow an HDAudio device to be identified with greater precision than was possible with the PlugandPlay device-identification system for AC'97 devices. By following these guidelines, hardware and system vendors can provide an improved user experience by more accurately identifying the HDAudio devices in the system and ensuring that the PlugandPlay manager has the information it needs to load the appropriate drivers for those devices.

This information applies for the following operating systems:
Microsoft Windows 2000
Microsoft Windows XP
Microsoft Windows Server™ 2003
Microsoft Windows Vista™

Future versions of this preview information will be provided in the WindowsDriver Kit (WDK).

The current version of this paper is maintained on the Web at:
http://www.microsoft.com/whdc/device/audio/default.mspx

Contents

Introduction 3

HD Audio Bus Controllers 3

Plug and Play Requirements for HD Audio Bus Controllers: 3

HD Audio Codecs 4

Plug and Play Requirements for HD Audio Codecs: 7

INF Files for HD Audio Codecs 7

INF File Requirements for HDAudio Codec Devices: 9

References 9

Disclaimer


This is a preliminary document and may be changed substantially prior to final commercial release of the software described herein.

The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.

This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.

Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, email address, logo, person, place or event is intended or should be inferred.

© 2003-2004 Microsoft Corporation. All rights reserved.

Microsoft, Windows, Windows Server, and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Intel High Definition Audio Disclaimer

The information in this document is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by Intel Corporation. Intel assumes no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document.

CERTAIN INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life saving, life sustaining applications. Intel may make changes to specifications and product descriptions at any time, without notice.

Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.

This document contains information on products in the design phase of development. Do not finalize a design with this information.


Introduction

This document provides information about audio devices and drivers for the Microsoft® Windows® family of operating systems.

As part of its Universal Audio Architecture (UAA) initiative, Microsoft has developed a set of PlugandPlay guidelines for identifying High Definition (HD) Audio codec and bus controller devices. These guidelines, which are presented in this document, allow an HDAudio device to be identified with greater precision than was possible with the PlugandPlay device-identification system for AC'97 devices.

In the next version of Windows, Microsoft Windows Vista™, Microsoft will include UAA driver support for HDAudio codec and bus controller devices that meet the UAA requirements. In addition, Microsoft will provide versions of these UAA drivers that can be installed in Microsoft Windows2000, Microsoft WindowsXP, and Microsoft WindowsServer™2003.

UAA-compatible HDAudio devices can rely entirely on the operating system for driver support. Alternately, if a hardware vendor sells an HDAudio device that is UAA-compatible, but wants to provide value-added features that are not supported by the UAA class drivers, the vendor can supply a custom function driver to enable these features.

By following the PlugandPlay guidelines in this document, hardware and system vendors can provide an improved user experience by more accurately identifying the HDAudio devices in the system and ensuring that the PlugandPlay manager has the information it needs to load the appropriate drivers for those devices.

Improved device identification helps to prevent the loading of an inappropriate driver that might make use of an HDAudio device difficult or impossible, or that might prevent certain hardware features from functioning correctly. System vendors have the option of providing custom drivers to enable value-added features that might be available only on a specific set of system configurations. Through their INF files, vendors can identify precisely which systems require custom driver support. For all other systems, they can rely entirely on the operating system for driver support.

The following sections present guidelines for incorporating PlugandPlay support into HDAudio bus controllers and codecs, and for specifying PlugandPlay information in the INF files that install HDAudio devices.

HD Audio Bus Controllers

HDAudio bus controllers are identified by their class ID. Providing additional PlugandPlay information for an HDAudio controller is optional, and the Microsoft HDAudio bus driver may or may not use the additional information, depending on the bus-interface type.

Plug and Play Requirements for HD Audio Bus Controllers:

·  The HDAudio bus controller must follow Microsoft's guidelines with respect to the various PlugandPlay device identifiers for the bus that connects the controller to the PC system (for example, the PlugandPlay device-identification rules for the PCI or PCIExpress bus).

·  HDAudio bus controllers that attach to PCI or PCIExpress buses must expose the High Definition Audio PCI class and subclass ID value, 0x0403. The correct enumeration of an HDAudio controller by the Microsoft PCI enumerator depends on its use of this ID value. If the HDAudio controller does not expose the correct class and subclass ID, the system will not load the Microsoft HDAudio bus driver and subsequently no HDAudio function drivers will load on that machine.

·  An HDAudio controller that attaches to a particular interface bus might be capable of providing additional PlugandPlay device-identification information that is defined by the interface specification. Currently, the Microsoft HDAudio bus driver uses only the class and subclass ID and does not make use of this additional, interface-specific information (for example, the identity of the manufacturer of the HDAudio controller).

HD Audio Codecs

The term HDAudio codec refers to any device that attaches to the HDAudio Link and is controlled by an HDAudio controller.

During device enumeration, the Microsoft HDAudio bus driver queries an HDAudio codec for hardware identification information that it then provides to the Windows PlugandPlay manager. In response to commands from the bus driver, an HDAudio codec must be prepared to supply the following information:

·  16-bit vendor ID

·  16-bit device ID

·  32-bit subsystem ID

·  16-bit extended revision ID

The bus driver requires the codec to provide all four IDs. In particular, the extended revision ID is not optional.

This section describes the usage of these four PlugandPlay identifiers (vendor ID, device ID, subsystem ID, and extended revision ID) and presents guidelines that hardware and system vendors should follow in selecting values for these identifiers. Device, board, and system vendors should identify their codecs with sufficient precision to meet WHQL requirements and to enable proper driver-update functionality through Windows Update or other, third-party driver-distribution resources on the Web.

The 16-bit vendor ID and 16-bit device ID together identify the model of the HDAudio codec device (integrated circuit). The vendor ID identifies the vendor for the codec device. The codec vendor must obtain the vendor ID from the PCI Special Interest Group (PCI-SIG). The device ID distinguishes the codec model from other codec models made by the vendor. Both IDs are contained in the 32-bit Vendor ID response format (described in the Intel® HDAudio specification), as shown in the following figure.

Figure 1. Vendor ID Response Format

If codec devices with the same vendor ID and device ID are used in several different board or system designs, the 32-bit subsystem ID helps to further identify the codec by distinguishing among the various system implementations of the supporting logic or codec SKU for the codec.

An HDAudio codec stores the subsystem ID in its 32-bit Subsystem ID register (described in the HDAudio specification), which is shown in the following figure.

Figure 2. Subsystem ID Register

In contrast to the 16-bit vendor ID and 16-bit device ID in Figure1, which together identify an HDAudio codec device (integrated circuit), the 32-bit subsystem ID in Figure2 identifies the board or system implementation that contains the codec device.

Board or systems vendors should use the entire 32-bit subsystem ID, which includes both the 24-bit board-implementation ID field and 8-bit assembly ID field, to identify the SKU of the board or system that contains the HDAudio codec. A vendor can use the fields in the subsystem ID to allow a custom HDAudio function driver to identify variations among codec board or system implementations with a high degree of precision.

If a board or system vendor provides custom drivers for several codec implementations, the subsystem ID can precisely determine which driver loads on each implementation. However, even vendors who do not supply custom drivers must follow the guidelines for valid subsystem IDs to prevent the loading of inappropriate drivers, which can result in system instability and bad user experiences. By providing valid subsystem IDs, vendors can ensure that their codecs will continue to meet "Designed for Windows" logo requirements in the future.

After booting up, the system BIOS loads the Subsystem ID register in the codec with a value that identifies the specific motherboard or system implementation that contains the codec. To make device identification more robust, the Subsystem ID register must power up with a default value in case the system BIOS fails for any reason to initialize the register. The register contents must not be undefined.

The default value, which is stored in the integrated circuitry of the codec device, loads automatically into the Subsystem ID register when the device powers up. The selection of an appropriate default value is left to the discretion of the codec device manufacturer, but the value must be nonzero and must not vary from one power-up to the next. The device manufacturer should devise an identification system that guarantees a unique default subsystem ID for each variation of a codec device that has the same device ID.

Note that providing a default subsystem ID that is unique for each codec device variation does not eliminate the need for a unique revision ID (see Figure 3). Typically, the system overwrites the default subsystem ID, following the guidelines in this document, and only the revision ID remains to distinguish among variations of the same codec device.

Through the system BIOS, the system can overwrite the codec vendor's default subsystem ID with a value that more precisely identifies the audio subsystem that the system designer has implemented. Note that several motherboard or system implementations might use the same codec model (identified by the vendor ID and device ID in Figure 1), and the value that the system BIOS writes to the 24-bit board-implementation ID field (overwriting this portion of the default subsystem ID) should distinguish the current motherboard or system implementation from the other implementations. In other words, after the BIOS has overwritten the Subsystem ID register, the combination of 16-bit vendor ID, 16-bit device ID, and 24-bit board-implementation ID should uniquely identify a particular motherboard or system implementation.

The 8-bit assembly ID is available to the codec, board, or system vendor for use in identifying any pin-strapping options or other board-specific identification information that might affect the selection or configuration of a function driver. For example, the assembly ID might identify the HDAudio codec implementation on a particular retail add-in card. Typically, the encoding of the assembly ID is based on a proprietary scheme devised by the vendor.

In the case of a codec on an add-in card, the BIOS typically does not overwrite the Subsystem ID register (or any other register) in the codec. Even if the BIOS can detect the presence of the add-in card, it might not recognize the card or be able to determine an appropriate value to write to the Subsystem ID register. For example, the codec device or card might have been designed after the BIOS was written. If the BIOS does not write to the Subsystem ID register, driver selection must be based on the default subsystem ID, and the assembly ID in bits 0-7 of the register is necessary to distinguish the add-in card model from other add-in card models that might incorporate the same codec device.