6.2.1
DEVICE_IO.Mem(), .Io(), and .Pci()
Summary
Enable a driver to access device registers in the appropriate memory or I/O space.
Prototype
typedef
EFI_STATUS
(EFIAPI *EFI_DEVICE_IO) (
IN struct EFI_DEVICE_IO_INTERFACE
IN EFI_IO_WIDTH
IN UINT64
IN UINTN
IN OUT VOID
);
Parameters
This
Width
Address
Count
Buffer
Description
The DEVICE_IO.Mem(), .Io(), and
registers in the appropriate memory or I/O space.
The I/O operations are carried out exactly as requested. The caller is responsible for any alignment
and I/O width issues which the bus, device, platform, or type of I/O might require. For example on
IA-32 platforms, width requests of
For
and Io(), the address field is the bus relative address as seen by the device on the bus.
Mem()
For
and
Mem()
Io()
For Pci(), the address field is encoded as shown in Table 6-1. The caller must align the register
number being accessed to be on a proper width boundary.
Version 1.02
A pointer to the
EFI_DEVICE_IO_INTERFACE
EFI_DEVICE_IO_INTERFACE
Signifies the width of the I/O operations. Type
defined in Section 6.2.
The base address of the I/O operations. The caller is responsible for
aligning the
Address
The number of I/O operations to perform. Bytes moved is
Count, starting at Address.
For read operations, the destination buffer to store the results. For write
operations, the source buffer to write data from.
.Pci()
IO_UINT64
the caller must align the starting address to be on a proper width boundary.
*This,
Width,
Address,
Count,
*Buffer
is defined in Section 6.2.
EFI_IO_WIDTH
if required.
functions enable a driver to access device
do not work.
12/12/00
Device I/O Protocol
instance. Type
is
size *
Width
141
Need help?
Do you have a question about the Extensible Firmware Interface and is the answer not in the manual?