Hardware Design

When designing ISA Plug and Play, Plug and Play BIOS's, or other Plug and Play compatible hardware, the vendor must consider the supporting software requirements. The primary rule is that a logical device must be functionally independent.

If you need to maintain compatibility with existing driver sets, you must use the logical device breakdown and resource sets described in the following topics.

Logical Devices

The defined resource sets of the supported multimedia devices provide a logical device breakdown and account for the sometimes hidden dependencies inherent in the hardware design.

To determine if you should define a logical device, you must answer the question: "Does the resource set describe an independently functional device?" If yes, create a logical device. If no, you will need to merge these resources with the other components required to start and/or support this device.

The reason for this requirement is that there is no bus-independent method for a driver to determine the association of one logical device with another or which physical device contains the logical device. This reasserts the definition of a logical device: a logical device is functionally independent.

For example, a sound card could contain many functions: a 16-bit audio component (including internal FM synthesis and external MIDI), a joystick adapter, a SCSI adapter, and a second independent DAC for compatibility with other cards. The immediate response is to define a logical device for each of the functionally independent components. This is not necessary if the device is software-configurable, however. Instead of allowing each child component to configure the device independently, the parent retrieves the entire resource set and applies the configuration to the hardware. The Configuration Manager creates the child devices using subsets of the resources of the parent. Although this example is a special case, it serves the purpose of demonstrating the sometimes subtle dependencies of hardware devices.

Following is a list of general rules to use when determining if a resource set is an independent logical device:

Internal hardware mixer dependencies

The most common example of this is the support of the FM synthesis device. Plug and Play devices most often include this I/O resource with the "audio" logical device. Most of the legacy device drivers shipped with Windows 95 adjust their mixer resources on the basis of whether an associated FM device is present. The determination of the FM association is the inclusion or exclusion of the I/O resource for the FM synthesis chip in "audio" logical device resource set.

Interrupt sharing

An example of this strategy is Creative Lab's Sound Blaster 16-bit audio series. The MPU-401, 8-bit ADC/DAC and 16-bit ADC/DAC share a single interrupt. Consequently, the logical device descriptor for the Sound Blaster 16 includes the resources for the MPU-401 and wave audio devices.

Multiple register planes using a single I/O path

The dependency of these designs is the I/O path (ADC/DAC). For example, the register planes provide the hardware interface for Sound Blaster compatibility and Windows Sound System compatibility, but are mutually exclusive such that register planes contend for the I/O path. Thus, the register planes are not functionally independent. Appropriate management of these register planes requires hardware contention management per device node.

DSP based solutions

These devices require special consideration when designing the logical device structure. For more information, see .


Resource Organization

The following table contains specific resource ordering for specific components of each device.

Note

The resource sets for following multimedia devices are order dependent, particularly within a class of resource. The drivers included with Windows 95 parse the resource set based on class, size and ordinal of the resource.

The location of these components in I/O space is not a criterion for the parsing algorithm. This allows the device to "float" in I/O space when all optimal resource settings are in conflict.

Device ID

Manufacturer

Product

Resource Descriptor

Example

*AZT1605

Aztech Labs

Sound Galaxy Nova 16

I/O size 16

microcontroller

I/O size 8

WSS compatible

I/O size 4

YMF262

IRQ (SB compat.)

IRQ (WSS compat.)

DMA (SB compat.)

DMA (WSS compat.)

220-22F

530-537

388-38B

3, 5, 7 or 9

7, 9, 10 or 11

0, 1 or 3

0, 1 or 3

*AZT1608

Aztech Labs

Sound Galaxy Pro 16

TBD

*AZT2316

Aztech Labs

Sound Galaxy Washington 16

same as *AZT1605

*ESS1481

ESS Technology, Inc.

ES1488 AudioDrive

I/O size 16

microcontroller

I/O size 2 or 4

Yamaha 3812 or

YMF262

IRQ

DMA

220-22F

388-38B

3, 5, 7. or 9

1 or 3

*ESS1681

ESS Technology, Inc.

ES1688 AudioDrive

I/O size 16

microcontroller

I/O size 4

YMF262 compat.

I/O size 2

MPU-401 compat

IRQ

IRQ

(MPU-401 compat)

DMA

220-22F

388-38B

330-331

5, 7, 9 or 10

5, 7, 9, 10, or 11

1 or 3

*ESS4881

ESS Technology, Inc.

ES488 AudioDrive

I/O size 16

microcontroller

I/O size 2 or 4

Yamaha 3812 or

YMF262 compat.

IRQ

DMA

220-22F

388-38B

3, 5, 7 or 9

1 or 3

*ESS6881

ESS Technology, Inc.

ES688 AudioDrive

I/O size 16

microcontroller

I/O size 4

YMF262 compat.

IRQ

DMA

220-22F

388-38B

5, 7, 9 or 10

1 or 3

*PNPB000

Creative Labs

Sound Blaster 1.0

I/O size 16

microcontroller

I/O size 16

(alias of 220-22F)

IRQ

DMA

220-22F

380-38F

3, 5, 7 or 9

1

*PNPB001

Creative Labs

Sound Blaster 2.0

I/O size 16

microcontroller

I/O size 2

Yamaha 3812

IRQ

DMA

220-22F

388-389

3, 5, 7 or 9

1

*PNPB002

Creative Labs

Sound Blaster Pro

I/O size 16

microcontroller

I/O size 2 or 4

Yamaha 3812 or

YMF262

IRQ

DMA

220-22F

388-38B

3, 5, 7 or 9

1

*PNPB003

Creative Labs

Sound Blaster 16 / AWE 32

I/O size 16,

microcontroller

I/O size 2

MPU-401 compat.

I/O size 4

YMF262

IRQ

DMA (byte)

DMA (word)

220-22F

330-331

388-38B

5, 7, 9 or 10

0, 1 or 3

5, 6 or 7

*PNPB004

Media Vision

Thunder Board

same as *PNPB001

*PNPB005

Ad Lib

Ad Lib OPL2 (Yamaha 3812)

I/O size 2

388-389

*PNPB006

Roland

MPU-401

I/O size 2

IRQ

330-331

3, 4, 5, 7, 9 or 10

*PNPB007

Microsoft

Windows Sound System

I/O size 4 or 8

I/O size 4

IRQ

DMA

534-537

388-38B

7, 9, 10 or 11

0, 1 or 3

*PNPB008

Compaq

Business Audio

same as *PNPB007

*PNPB00B

Media Vision

Pro Audio 3D

I/O size 1

wake-up port /

joystick

I/O size 2

ID & control registers

I/O size 16

microcontroller

I/O size 4

YMF 262

I/O size 2

MPU-401 compat.

IRQ

IRQ

(MPU-401 compat.)

DMA (byte)

DMA (word)

201-201

380-381

220-22F

388-38B

330-331

3, 5, 7, 9 or 10

3, 5, 7 or 9

1 or 3

5 or 7

*PNPB00D

Media Vision

Pro Audio Spectrum 16

contact Microsoft

*PNPB00E

Media Vision

Pro Audio Spectrum 16 with SCSI (Zilog chipset)

contact Microsoft

*PNPB00F

Media Vision

Jazz - 16 or Pro Audio Deluxe

same as *PNPB00B

*PNPB010

Orchid

Vidiola

I/O size 2

memory size 32k

IRQ

500-501

d8000-dffff

5, 7, 10, 11, 12, 14

or 15

*PNPB020

Ad Lib / Yamaha

YMF262 (OPL3)

I/O size 4

388-38B

*PNPB02F

Microsoft

Generic Joystick

I/O size 1

201-201


Windows Sound System Resource Descriptors

Plug and Play implementations of the Windows Sound System designs should not include the "AutoSelect" range (for example: 530-533) in the base I/O resource descriptor. The reported range for the base address should be the CODEC only. Thus, a resource set for an ISA Plug and Play implementation of a WSS compatible device would contain:

If the implementation provides additional hardware support for Sound Blaster compatibility and shares the DAC/ADC I/O path and IRQ/DMA resources with the WSS register plane (such as the Crystal Semiconductor CS4232 design), the resource set should contain both the CODEC and the Sound Blaster compatibility resources, as follows:

Again, please note that the above I/O resources structures are order-dependent. The standard device drivers shipped with Windows 95 handle the above cases correctly.

ESS AudioDrive Resource Descriptors

If your hardware implementation uses the ESS reference designs without modification, you may use the listed ESS device IDs as compatible device tags. However, if your implementation deviates from the ESS reference design, particularly with IRQ and DMA steering, you will need to create your own .INF files and include special IRQ/DMA steering information in these files. Please contact ESS Technology, Inc. or the Microsoft Hardware Vendor Relations Group for further information.

Shared Resources

When a design requires shared resources between functions such as an IRQ between the audio and SCSI functions on a PCMCIA design, the .INF file for the device implements multiple function definitions which allow child devices to be created from subsets of the parent's resources.

DSP Based Solutions

DSP-based solutions face numerous obstacles when implemented as ISA Plug and Play devices:

The solution to these problems is to include all the resources in a single device function and using the multiple function support in Windows 95 to create the child devices from a subset of the resources. The "multiple function" specification, as described elsewhere in the Windows 95 DDK, allows a parent/child relationship between device nodes.

For an example of multiple function support, please investigate the parent/child relationships established in WAVE.INF for the Media Vision Pro Audio Spectrum 16 cards (device IDs *PNPB00D and *PNPB00E).

An alternative solution is to write a private enumerator for your DSP based device. Please contact the Microsoft Hardware Vendor Relationship Group for details.

Plug and Play BIOS Considerations

Be sure to register appropriate device IDs and resource structures in your Plug and Play BIOS for machines with on-board multimedia devices. In other words, just because an on-board device is compatible with Sound Blaster does not mean that the BIOS should report the *PNPB001 device ID.

To determine the appropriate IDs, first determine the chipset manufacturer (such as Analog Devices, Creative Labs, ESS, and so on) and then match the resource IDs using the table provided in . You may report the device ID from this table or you may register your own ID and report the device ID from the table as a compatible ID. However, if you register your own device ID and this ID is not included in the standard .INF files or is not included in the OEM's implementation of Windows 95, the user will be prompted with a dialog box and given the option to select the compatible device or select from a list of other devices.

If the device is partially software configurable (such as the Windows Sound System or ES688 and ES1688 reference designs), you have some options for the reported device structure:

Note that BIOS is expected to configure these software configurable resources to match the resulting configuration.