Version 1.02 12/12/00 137
6Device I/O Protocol
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.

6.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.