Elan Logo
Search:
Telephone : +44 1489 579 799 email:
sales@elandigitalsystems.com
HOME PRODUCTS BUY ABOUT US SUPPORT DOWNLOADS CUSTOM CONTACT US SITEMAP

"Code 12" Errors with PCI to PCI Bridges

If you have a P-Series card reader and are experiencing Code 12 failures in Windows 2000 or XP that are caused by poor PCI-to-PCI bridge enumeration by the BIOS, you may install a registry patch to get round the problem. Since the fix involves patching the PCI configuration space with "hard coded" values for dynamically allocated (by the BIOS) memory and IO address ranges, this fix may not work on your particular system, or may fail if another PCI device is introduced at a later date. It may also cause devices to fail to work properly or fail to start, so please apply it with care - make sure you have backed up your PC first!

We have made available below patches that we have written for specific systems.

If you apply a patch and then have problems with other PCI devices in your system, then you can disable the patch by applying this registry patch file

More Information

This problem does not effect CardBus controllers "mounted" on the primary PCI bus (Bus number 0). Usually the code 12 failure is caused by the BIOS failing to configure an IO or Memory window through the PCI bridge. For successful operation of the CardBus controller in Windows, the PCI bridge must have more than 0x100000 bytes of memory and 0x1000 bytes of IO configured through any PCI bridge(s) to each CardBus controller, from the primary PCI bus all the way through any PCI bridges between the CardBus controller and the primary PCI bus.

You can use the PSeries diagnostics utility to discover the PCI bus number that the CardBus controller is placed on and then, using the PCI secondary and subordinate bus numbers, trace back to the PCI bridge that is causing the problem.

Detailed Description of the Fix

The PSeries driver reads three values from the registry and uses them to configure the PCI-to-PCI bridge in the PC. These parameters are as follows, and are located under the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pseries\Parameters key.

PCIBridgeHandle - this is the PCI configuration space handle of the PCI-to-PCI bridge, as reported by pdiag.exe. Setting this registry entry to 0 or deleting it will stop the patch from executing.

PCIBridgeIO - the lower 16 bits of this parameter is written to the PCI bridge register at PCI configuration space offset 0x1C

PCIBridgeMemory -this 32 bit parameter is written to the PCI bridge register at PCI configuration space offset 0x20

No checks are made by the PSeries driver to ensure that the values are correct in any way; if you choose incorrect values you could cause your system to crash, behave unpredictably or fail to start, so please be careful.

For more information about the correct values to load into these registers, you can  see the "PCI-to-PCI Bridge Architecture Specification Revision 1.1" available from http://www.pcisig.com. The PSeries diagnostics output will give you more detailed information about the configuration of your particular PC.

Pre-prepared patch files:

We at Elan have prepared registry patch files for the default configurations of the following motherboards; if you have not installed any other PCI device, then the appropriate patch file should work for you

To install the patch you must have administrator privileges.  Extract the zipped reg file using Winzip or a similar utility and double click on it, then follow the on-screen instructions to apply the registry patch.

Elan holds no responsibility for any loss of data caused by this information.

For the AsusA7N66-VM

For the AsusA7N8X-VM

For the Intel 815EEA2