mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/PciHostBridgeLib.h: add address Translation
Add Translation field to PCI_ROOT_BRIDGE_APERTURE. Translation is used to represent the difference between device address and host address, if they are not the same on some platforms. In UEFI 2.7, "Address Translation Offset" is "Offset to apply to the Starting address to convert it to a PCI address". This means: Translation = device address - host address So we also use the above calculation for this Translation field to keep consistent. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Heyi Guo <heyi.guo@linaro.org> Signed-off-by: Yi Li <phoenix.liyi@huawei.com> Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
e33305ea6c
commit
5bb1866e53
|
@ -20,8 +20,27 @@
|
||||||
// (Base > Limit) indicates an aperture is not available.
|
// (Base > Limit) indicates an aperture is not available.
|
||||||
//
|
//
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
//
|
||||||
|
// Base and Limit are the device address instead of host address when
|
||||||
|
// Translation is not zero
|
||||||
|
//
|
||||||
UINT64 Base;
|
UINT64 Base;
|
||||||
UINT64 Limit;
|
UINT64 Limit;
|
||||||
|
//
|
||||||
|
// According to UEFI 2.7, Device Address = Host Address + Translation,
|
||||||
|
// so Translation = Device Address - Host Address.
|
||||||
|
// On platforms where Translation is not zero, the subtraction is probably to
|
||||||
|
// be performed with UINT64 wrap-around semantics, for we may translate an
|
||||||
|
// above-4G host address into a below-4G device address for legacy PCIe device
|
||||||
|
// compatibility.
|
||||||
|
//
|
||||||
|
// NOTE: The alignment of Translation is required to be larger than any BAR
|
||||||
|
// alignment in the same root bridge, so that the same alignment can be
|
||||||
|
// applied to both device address and host address, which simplifies the
|
||||||
|
// situation and makes the current resource allocation code in generic PCI
|
||||||
|
// host bridge driver still work.
|
||||||
|
//
|
||||||
|
UINT64 Translation;
|
||||||
} PCI_ROOT_BRIDGE_APERTURE;
|
} PCI_ROOT_BRIDGE_APERTURE;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Reference in New Issue