16.08.2012 Views

Intel® 945G/945GZ/945GC/ 945P/945PL Express Chipset Family ...

Intel® 945G/945GZ/945GC/ 945P/945PL Express Chipset Family ...

Intel® 945G/945GZ/945GC/ 945P/945PL Express Chipset Family ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Register Description<br />

The PCI <strong>Express</strong> enhanced configuration mechanism uses a flat memory-mapped address space to<br />

access device configuration registers. This address space is reported by the system firmware to the<br />

operating system. The PCIEXBAR register defines the base address for the block of addresses<br />

below 4 GB for the configuration space associated with busses, devices, and functions that are<br />

potentially a part of the PCI <strong>Express</strong> root complex hierarchy. The PCIEXBAR register contains<br />

controls to limit the size of this reserved memory-mapped space; 256 MB is the amount of<br />

address space required to reserve space for every bus, device, and function is currently available.<br />

Options for 128 MB and 64 MB are available to free up those addresses for other uses. In these<br />

cases the number of busses and all of their associated devices and functions are limited to 128 or<br />

64 busses respectively.<br />

The PCI <strong>Express</strong> configuration transaction header includes an additional 4 bits<br />

(ExtendedRegisterAddress[3:0]) between the function number and register address fields to<br />

provide indexing into the 4 KB of configuration space allocated to each potential device. For PCI<br />

compatible configuration requests, the Extended Register Address field must be all zeros.<br />

Figure 3-3. Memory Map-to-PCI <strong>Express</strong>* Device Configuration Space<br />

FFFFFFFh<br />

1FFFFFh<br />

FFFFFh<br />

0h<br />

Located By PCI<br />

<strong>Express</strong> Base<br />

Address<br />

Bus 255<br />

Bus 1<br />

Bus 0<br />

FFFFFh<br />

FFFFh<br />

7FFFh<br />

Device 31<br />

Device 1<br />

Device 0<br />

Function 7<br />

MemMap_PCI<strong>Express</strong><br />

54 Intel ® 82<strong>945G</strong>/82<strong>945G</strong>Z/82<strong>945G</strong>C GMCH and 82<strong>945P</strong>/82<strong>945P</strong>L MCH Datasheet<br />

7FFFh<br />

1FFFh<br />

FFFh<br />

Function 1<br />

Function 0<br />

FFFh<br />

FFh<br />

3Fh<br />

PCI <strong>Express</strong>*<br />

Extended<br />

Configuration<br />

Space<br />

PCI<br />

Compatible<br />

Config Space<br />

PCI<br />

Compatible<br />

Config Header<br />

As with PCI devices, each PCI <strong>Express</strong> device is selected based on decoded address information<br />

that is provided as a part of the address portion of configuration request packets. A PCI <strong>Express</strong><br />

device will decode all address information fields (bus, device, function, and extended address<br />

numbers) to provide access to the correct register.<br />

To access this space (steps 1, 2, and 3 are completed only once by BIOS):<br />

1. use the PCI compatible configuration mechanism to enable the PCI <strong>Express</strong> enhanced<br />

configuration mechanism by writing 1 to bit 0 of the PCIEXBAR register.<br />

2. use the PCI compatible configuration mechanism to write an appropriate PCI <strong>Express</strong><br />

base address into the PCIEXBAR register .<br />

3. calculate the host address of the register you wish to set using (PCI <strong>Express</strong> base +<br />

(bus number * 1 MB) + (device number * 32 KB) + (function number * 4 KB) +<br />

(1 B * offset within the function) = host address).<br />

4. use a memory write or memory read cycle to the calculated host address to write or read<br />

that register.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!