VMB5000 FAQs
- Code 10 Error occurs when I try to communicate to my card / the DC100 demo board
- Why do I errors when using my card in some desktops?
Code 10 Error Messages
This error code in Device Manager indicates that the driver failed to start. This indicates that the driver has detected an installation that is invalid for correct operation and so has terminated with this error code. Usually for VMB based installations with the vmbinfce.sys driver, it indicates that the inf file is invalid. Please download the latest latest version of the reference kit software and create a new inf file for your hardware, then try again.
Why do I get errors using my card in some desktop PCs?
In some desktops with PCMCIA card readers built in, problems can occur with cards based on the VMB5000. The card is not recognised when it is inserted. This problem is not specific to the VMB, it happens with all 16-bit PCMCIA cards.
Why does this only happen on Desktops?
The difference between laptops and desktop PC's IRQ connection schemes are largely historical and go back to the days of the ISA bus. ISA bus slots had direct connections to the IRQ 0 to IRQ 15 of the 2 x 8259A interrupt controllers (see wikipedia for more information).
More recently the 8259 has been superseded by what is called an APIC or IOAPIC with direct connection to the microprocessor and integration in the south bridge chipset of the PC. These IRQ's I'll call "ISA-IRQ's". ISA-IRQ's cannot be shared very easily since they are EDGE triggered.
On the PCI bus there are only 4 PCI IRQ's routed from the PCI bus connectors on a motherboard (marked INTA, INTB, INTC and INTD) to the IOAPIC/South bridge chipset. These are usually arranged in a "round robin" connection method on the motherboard so that each slot is connected to one of the other IRQ's in turn ensuring adjacent PCI cards do not have to share the same interrupt and so shares the IRQ handling load. The BIOS IRQ routing table defines the actual connection pattern used for each PCI slot on a particular motherboard. These IRQ's I'll call "PCI-IRQ's". Normal PCI devices only have an INTA connection, the device relies on the motherboard routing pattern to ensure that the INTA on the PCI slot is shared with a minimal set of other PCI devices, but it must be able to and will have to share the IRQ (which is LEVEL triggered so it's easy to do this).
A PCMCIA controller can support routing the IRQ signal from the PCMCIA bus to almost any of the old ISA-IRQ's, or to the PCI-IRQ INTA through it's IO pins and is configured by the pcmcia driver via it's internal registers to do this.
On a laptop, all the IO pins on the PCMCIA controller chip can be connected to appropriate pins on the south bridge chip or the PCI bus INTA pin (the chip is on the motherboard so it's easy).
For a PCI-PCMCIA adapter, what is important is what happens at the PCI bus connector, where only the 4 PCI-IRQ's are available. As there are no ISA-IRQ's available on the PCI bus, the IRQ output pins on the PCMCIA controller are left NC, and only the PCI-IRQ INTA is connected. This means that the pcmcia driver must know beforehand that the ISA-IRQ's are not available, otherwise when it configures the registers, the NC ISA-IRQ pin that it just configured is left flapping about in the breeze. On Elan's PSeries adapters, all IRQ's are routed (wire-or'd) through INTA and the pseries.sys driver fixes this routing failure by handling the PCI-IRQ and using the internal registers of the PCMCIA controller to identify the source of the IRQ and forwarding it to the appropriate device driver.
On Windows XP, the default IRQ routing for PCMCIA cards is to use the PCI-IRQ INTA, this means that it just works (even without the pseries driver). By default, Windows 2000 uses ISA_IRQ routing and so fails to route the IRQ correctly with PCI-PCMCIA adapter boards unless the DisableIsaToPciRouting=0 registry setting is made.
Solution
Use the registry setting on this FAQ to change the IRQ routing.