2 pci enumeration, 3 pci device drivers, 1 driver binding protocol for pci device drivers – Intel Extensible Firmware Interface User Manual

Page 471

Advertising
background image

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
Driver’s 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 Driver’s
responsibility to call

Attributes()

to enable the I/O, Memory, and Bus Master decodes.

Advertising