INFO: Explanation of CardBus Registry Entries In PCMCIA.INF (201018)



The information in this article applies to:

  • Microsoft Windows 98

This article was previously published under Q201018

SUMMARY

The Pcmcia.inf file included in Windows 98 has several registry entries used specifically by the CardBus socket services driver (Cbss.vxd). This article describes how Cbss.vxd uses each of these registry values.

MORE INFORMATION

CBSSCompatID

Cbss.vxd has built-in support for a wide variety of CardBus controllers, and recognizes these controllers by their PCI vendor and product IDs. In the case where a new controller is compatible with one of the controllers supported by Cbss.vxd, an INF can specify a CBSSCompatID value to indicate which CardBus controller it is compatible with. A valid CBSSCompatID in an INF's AddReg section looks like the following example:
HKR,,CBSSCompatID, 3, 4c, 10, 15, ac
				
In this example, the 4c and 10 indicate that the compatible CardBus controller has a PCI vendor ID of 104C (TI in this case) and the 15 and ac indicate the compatible device's product ID is AC15 (the TI 1131 CardBus controller in this case).

CBSSCSContextRanges

CBSSCSContextRanges is used to tell Cbss.vxd which parts of the CardBus controller's configuration space should be preserved between D0 and lower device power states (for example, when Windows suspends and when Windows resumes). It consists of WORD pairs indicating offset and length. The following example shows what a valid CBSSCSContextRanges entry looks like in an INF's AddReg section:
HKR,,CBSSCSContextRanges,3,3e,00,02,00,44,00,04,00,80,00,1f,00
				
This example indicates that 2 bytes at offset 3E, 4 bytes at offset 44, and 1F bytes at offset 80 of the controller's configuration space should be saved during Windows boot and then restored at Windows shut down.

CBSSCBContextRanges

CBSSCBContextRanges is used to tell Cbss.vxd which CardBus registers on the CardBus controller should be preserved between D0 and lower device power states (for example, when Windows suspends and when Windows resumes). It consists of WORD pairs indicating offset and length. The following example shows what a valid CBSSCBContextRanges entry looks like in an INF's AddReg section:
HKR,,CBSSCBContextRanges,3,00,00,14,00,20,00,04,00
				
This example indicates that 14h bytes located at offset 0 and 4 bytes located at offset 20h of the base address register on the CardBus controller should be saved during Windows boot, and then restored at Windows shut down.

CBSSEXCAContextRanges

CBSSEXCAContextRanges is used to tell Cbss.vxd which ExCA registers on the CardBus controller should be preserved between D0 and lower device power states (for example, when Windows suspends and when Windows resumes). It consists of WORD pairs indicating offset and length. The following example shows what a valid CBSSEXCAContextRanges entry looks like in an INF's AddReg section:
HKR,,CBSSEXCAContextRanges,3,02,00,45,00,03,01,01,00
				
This example indicates that 45h bytes of ExCA register space located at offset 2 and 1 byte of ExCA register space located at offset 103h should be saved during Windows boot and then restored at Windows shutdown.

CBSSIRQMap

CBSSIRQMap is used to tell Cbss.vxd which IRQs can be generated by the CardBus controller, and how they are routed to the interrupt controller. Normally, Cbss.vxd can detect IRQ routing by simply triggering each interrupt on the controller and checking if the IRQ was asserted on the interrupt controller. In some cases, however, this detection method can produce erroneous results. In this case, the INF can use the CBSSIRQMap registry value to specify exactly how the IRQs are routed from the CardBus controller to the interrupt controller. The following example shows how the CBSSIRQMap registry value appears in the INF's AddReg section:
HKR,,CBSSIRQMap,3,00,00,00,03,04,05,00,07,00,09,0A,0B,0C,00,0E,0F
				
The CBSSIRQMap consists of 16 ordered hexadecimal byte values that correspond to each of the possible 16 interrupts in the system. If the value for an IRQ is 0, it indicates that the interrupt is not routed to the interrupt controller. If the value is non-zero, it indicates that the interrupt is routed to the interrupt controller, and the value indicates which IRQ on the interrupt controller it is routed to.

Modification Type:MinorLast Reviewed:12/17/2004
Keywords:kbinfo KB201018