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.
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 . |
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 |
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.
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.
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 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.
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.