Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
Protocols PCI Bus Support
Version 1.10 12/01/02 12-53
12.3.2.2 PCI Enumeration
The PCI Enumeration process is a platform-specific operation that depends on the properties of the
chipset that produces the PCI bus. As a result, details on PCI Enumeration are outside the scope of
this document. A PCI Bus Driver requires that PCI Enumeration has been performed, so it either
needs to have been done prior to the PCI Bus Driver starting, or it must be part of the PCI Bus
Drivers implementation.
12.3.3 PCI Device Drivers
PCI Device Drivers manage PCI Controllers. Device handles for PCI Controllers are created by
PCI Bus Drivers. A PCI Device Driver is not allowed to create any new device handles. Instead, it
attaches protocol instance to the device handle of the PCI Controller. These protocol instances are
I/O abstractions that allow the PCI Controller to be used in the preboot environment. The most
common I/O abstractions are used to boot an EFI compliant OS.
12.3.3.1 Driver Binding Protocol for PCI Device Drivers
The Driver Binding Protocol contains three services. These are Supported(), Start(), and
Stop()
. Supported() tests to see if the PCI Device Driver can manage a device handle. A
PCI Device Driver can only manage device handles that contain the Device Path Protocol and the
PCI I//O Protocol, so a PCI Device Driver must look for these two protocols on the device handle
that is being tested. In addition, it needs to check to see if the device handle represents a PCI
Controller that the PCI Device Driver knows how to manage. This is typically done by using the
services of the PCI I/O Protocol to read the PCI Configuration Header for the PCI Controller, and
looking at the VendorId, DeviceId, and SubsystemId fields.
The Start() function tells the PCI Device Driver to start managing a PCI Controller. A PCI
Device Driver is not allowed to create any new device handles. Instead, it installs one or more
addition protocol instances on the device handle for the PCI Controller. A PCI Device Driver is not
allowed to modify the resources allocated to a PCI Controller. These resource allocations are
owned by the PCI Bus Driver or some other firmware component that initialized the PCI Bus prior
to the execution of the PCI Bus Driver. This means that the PCI BARs (Base Address Registers)
and the configuration of any PCI to PCI bridge controllers must not be modified by a PCI Device
Driver. A PCI Bus Driver will leave a PCI Device in a disabled state. It is a PCI Device Drivers
responsibility to call Attributes()
to enable the I/O, Memory, and Bus Master decodes.