Plug and Play Design for CardBus

This section summarizes the Plug and Play requirements for CardBus cards. CardBus was designed as a combination of the PC Card 16 and PCI. The goal is to gain the benefits of PCI in a PC Card format. Consistent with this goal, Windows support for CardBus places specific requirements on CardBus cards.

14. Configuration Space meets Common Silicon Guidelines
Required

The Common Silicon Guidelines are defined in Section 2.6 of the PC Card Standard Guidelines, Volume 10.

The standard for CardBus defines a PCI-like Configuration Space that is not fully compliant with the PCI specification. Specifically, under the CardBus standard, card vendors do not have to implement certain critical fields in the Configuration Space (described in the PC Card standard as allocated). In the PC Card standard guidelines for silicon common to both PCI and CardBus products, the implementation of these fields is recommended.

However, to maintain compatibility with existing PCI system software and drivers for PC 98, Windows will support only CardBus cards whose Configuration Space is designed to meet the Common Silicon Guidelines. This is a requirement because CardBus configuration is performed by the PCI software, which knows how to deal with all aspects of PCI topology configuration, including bridging. Without the allocated fields, the cards cannot be fully treated as PCI devices and therefore cannot be supported under Windows.

The required allocated fields are listed in the following table.

Required Allocated Fields
Field Description and comments
Vendor ID This read-only field contains a unique ID (in PCI space) for the card manufacturer. The PCI SIG allocates unique IDs.
Device ID
Revision ID
These read-only fields are vendor-assigned values that uniquely identify the device (among all vendors of PCI or CardBus products).
Class Code This read-only field is defined in PCI 2.1. It describes what type of device the card is.
Max_Lat
Min_Gnt
These read-only fields specify the desired settings for Latency Timer values according to PCI 2.1. A value of 0 indicates the device has no major requirements for the settings of Latency Timers.
Interrupt Line This register must be read-write and must not be connected to anything, just as on PCI cards. This register is used to store the current IRQ routing for the device.

15. RESERVED fields comply with PCI 2.1
Required

The CardBus specification also lists two RESERVED fields (offset 2C in the Configuration Space), which have since been defined in PCI 2.1. These fields are also required on CardBus cards for Windows compatibility.

Required RESERVED Fields
Field Description
Subsystem ID If different from Device ID
Subsystem Vendor ID If different from Vendor ID

16. CardBus card implements required and recommended tuples
Required

For CardBus, Windows also requires the same set of card tuples recommended in the PC Card guidelines, as summarized in the following table.

Required CardBus Tuples
Tuple ID Tuple code Comments
04h cistpl_config_cb
05h cistpl_cftable_entry_cb
07h cistpl_bar
13h cistpl_linktarget Required as first tuple in PC Card standard.
15h cistpl_vers_1
20h cistpl_manfid
FFh cistpl_end Required as end-of-chain tuple in PC Card standard.
21h cistpl_funcid Recommended in PC Card standard; required for PC 98.