beautypg.com

Description, Status codes returned – Intel Extensible Firmware Interface User Manual

Page 488

background image

Extensible Firmware Interface Specification

12-70

12/01/02

Version 1.10

Description

The

Mem.Read()

, and

Mem.Write()

functions enable a driver to access controller registers in

the PCI memory 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
some platforms, width requests of

EfiPciIoWidthUint64

do not work.

If

Width

is

EfiPciIoWidthUint8

,

EfiPciIoWidthUint16

,

EfiPciIoWidthUint32

,

or

EfiPciIoWidthUint64

, then both

Address

and

Buffer

are incremented for each of the

Count

operations performed.

If

Width

is

EfiPciIoWidthFifoUint8

,

EfiPciIoWidthFifoUint16

,

EfiPciIoWidthFifoUint32

, or

EfiPciIoWidthFifoUint64

, then only

Buffer

is

incremented for each of the

Count

operations performed. The read or write operation is

performed

Count

times on the same

Address

.

If

Width

is

EfiPciIoWidthFillUint8

,

EfiPciIoWidthFillUint16

,

EfiPciIoWidthFillUint32

, or

EfiPciIoWidthFillUint64

, then only

Address

is incremented for each of the

Count

operations performed. The read or write operation is

performed

Count

times from the first element of

Buffer

.

All the PCI transactions generated by this function are guaranteed to be completed before
this function returns. All the PCI write transactions generated by this function will follow the
write ordering and completion rules defined in the PCI Specification. However, if the memory-
mapped I/O region being accessed by this function has the

EFI_PCI_ATTRIBUTE_MEMORY_CACHED

attribute set, then the transactions will follow the

ordering rules defined by the processor architecture.

Status Codes Returned

EFI_SUCCESS

The data was read from or written to the PCI controller.

EFI_INVALID_PARAMETER

Width

is invalid.

EFI_INVALID_PARAMETER

Buffer

is

NULL

.

EFI_UNSUPPORTED

BarIndex

not valid for this PCI controller.

EFI_UNSUPPORTED

The address range specified by

Offset

,

Width

, and

Count

is not

valid for the PCI BAR specified by

BarIndex

.

EFI_OUT_OF_RESOURCES

The request could not be completed due to a lack of resources.