Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
Version 1.10 12/01/02 18-1
18
Protocols-DeviceI/OProtocol
This chapter defines the Device I/O protocol. This protocol is used by code, typically drivers,
running in the EFI boot services environment to access memory and I/O. In particular, functions
for managing PCI buses are defined here although other bus types may be supported in a similar
fashion as extensions to this specification.
The services defined in this chapter have been superceded by the services described in Chapter 12.
Both the PCI Root Bridge I/O Protocol and the PCI I/O Protocol provide a more complete set of
services for managing PCI devices. The PCI Root Bridge I/O Protocol and PCI I/O Protocol are
not defined in the EFI 1.02 Specification. If an EFI image is required to be compliant with the EFI
1.02 Specification, then the Device I/O Protocol is the only option for these types of I/O services.
If an EFI image is required to be compliant with the EFI 1.10 Specification, then the PCI Root
Bridge I/O Protocol or the PCI I/O Protocol must be used for these types of I/O services.
18.1 Device I/O Overview
The interfaces provided in the DEVICE_IO protocol are for performing basic operations to
memory, I/O, and PCI configuration space. The DEVICE_IO protocol can be thought of as the bus
driver for the system. The system provides abstracted access to basic system resources to allow a
driver to have a programmatic method to access these basic system resources.
The DEVICE_IO protocol allows for future innovation of the platform. It abstracts device-
specific code from the system memory map. This allows system designers to greatly change
the system memory map without impacting platform independent code that is consuming basic
system resources.
It is important to note that this specification ties these interfaces into a single protocol solely for the
purpose of simplicity. Other similar bus- or device-specific protocols that “programmatic child
drivers” may require can easily be added by using a new protocol GUID. For example, a
comprehensive USB-specific host controller protocol interface could be defined for child drivers.
These drivers would perform a LocateDevicePath()
to obtain the proper USB interface set,
from somewhere up the device path, just as a PCI-based device driver would do with the
DEVICE_IO protocol to gain access to the PCI configuration space interfaces.