Intel Extensible Firmware Interface User Manual

Page 432

Advertising
background image

Extensible Firmware Interface Specification

12-14

12/01/02

Version 1.10

Description

The

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

provides the basic Memory, I/O, PCI

configuration, and DMA interfaces that are used to abstract accesses to PCI controllers. There is
one

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

instance for each PCI root bridge in a system.

Embedded systems, desktops, and workstations will typically only have one PCI root bridge. High-
end servers may have multiple PCI root bridges. A device driver that wishes to manage a PCI bus
in a system will have to retrieve the

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

instance that is

associated with the PCI bus to be managed. A device handle for a PCI Root Bridge will minimally
contain an

EFI_DEVICE_PATH

instance and an

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

instance. The PCI bus driver can look at the

EFI_DEVICE_PATH

instances to determine which

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

instance to use.

Bus mastering PCI controllers can use the DMA services for DMA operations. There are three

basic types of bus mastering DMA that is supported by this protocol. These are DMA reads by a
bus master, DMA writes by a bus master, and common buffer DMA. The DMA read and write
operations may need to be broken into smaller chunks. The caller of

Map()

must pay attention to

the number of bytes that were mapped, and if required, loop until the entire buffer has been
transferred. The following is a list of the different bus mastering DMA operations that are
supported, and the sequence of

EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL

APIs that are used

for each DMA operation type. See “Related Definitions” above for the definition of the different
DMA operation types.

Advertising