mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg: introduce PCDs for describing PCI address spaces
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16893 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
93deff5aca
commit
e48f1f15b0
|
@ -152,6 +152,68 @@
|
||||||
gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0|UINT32|0x00000024
|
gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x0|UINT32|0x00000024
|
||||||
gArmPlatformTokenSpaceGuid.PcdPL031RtcPpmAccuracy|300000000|UINT32|0x00000022
|
gArmPlatformTokenSpaceGuid.PcdPL031RtcPpmAccuracy|300000000|UINT32|0x00000022
|
||||||
|
|
||||||
|
#
|
||||||
|
# Inclusive range of allowed PCI buses.
|
||||||
|
#
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciBusMin|0x0|UINT32|0x0000003E
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciBusMax|0x0|UINT32|0x0000003F
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bases, sizes and translation offsets of IO and MMIO spaces, respectively.
|
||||||
|
# Note that "IO" is just another MMIO range that simulates IO space; there
|
||||||
|
# are no special instructions to access it.
|
||||||
|
#
|
||||||
|
# The base addresses PcdPciIoBase, PcdPciMmio32Base and PcdPciMmio64Base are
|
||||||
|
# specific to their containing address spaces. In order to get the physical
|
||||||
|
# address for the CPU, for a given access, the respective translation value
|
||||||
|
# has to be added.
|
||||||
|
#
|
||||||
|
# The translations always have to be initialized like this, using UINT64:
|
||||||
|
#
|
||||||
|
# UINT64 IoCpuBase; // mapping target in 64-bit cpu-physical space
|
||||||
|
# UINT64 Mmio32CpuBase; // mapping target in 64-bit cpu-physical space
|
||||||
|
# UINT64 Mmio64CpuBase; // mapping target in 64-bit cpu-physical space
|
||||||
|
#
|
||||||
|
# PcdPciIoTranslation = IoCpuBase - PcdPciIoBase;
|
||||||
|
# PcdPciMmio32Translation = Mmio32CpuBase - (UINT64)PcdPciMmio32Base;
|
||||||
|
# PcdPciMmio64Translation = Mmio64CpuBase - PcdPciMmio64Base;
|
||||||
|
#
|
||||||
|
# because (a) the target address space (ie. the cpu-physical space) is
|
||||||
|
# 64-bit, and (b) the translation values are meant as offsets for *modular*
|
||||||
|
# arithmetic.
|
||||||
|
#
|
||||||
|
# Accordingly, the translation itself needs to be implemented as:
|
||||||
|
#
|
||||||
|
# UINT64 UntranslatedIoAddress; // input parameter
|
||||||
|
# UINT32 UntranslatedMmio32Address; // input parameter
|
||||||
|
# UINT64 UntranslatedMmio64Address; // input parameter
|
||||||
|
#
|
||||||
|
# UINT64 TranslatedIoAddress; // output parameter
|
||||||
|
# UINT64 TranslatedMmio32Address; // output parameter
|
||||||
|
# UINT64 TranslatedMmio64Address; // output parameter
|
||||||
|
#
|
||||||
|
# TranslatedIoAddress = UntranslatedIoAddress +
|
||||||
|
# PcdPciIoTranslation;
|
||||||
|
# TranslatedMmio32Address = (UINT64)UntranslatedMmio32Address +
|
||||||
|
# PcdPciMmio32Translation;
|
||||||
|
# TranslatedMmio64Address = UntranslatedMmio64Address +
|
||||||
|
# PcdPciMmio64Translation;
|
||||||
|
#
|
||||||
|
# The modular arithmetic performed in UINT64 ensures that the translation
|
||||||
|
# works correctly regardless of the relation between IoCpuBase and
|
||||||
|
# PcdPciIoBase, Mmio32CpuBase and PcdPciMmio32Base, and Mmio64CpuBase and
|
||||||
|
# PcdPciMmio64Base.
|
||||||
|
#
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciIoBase|0x0|UINT64|0x00000040
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciIoSize|0x0|UINT64|0x00000041
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciIoTranslation|0x0|UINT64|0x00000042
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio32Base|0x0|UINT32|0x00000043
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio32Size|0x0|UINT32|0x00000044
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio32Translation|0x0|UINT64|0x00000045
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio64Base|0x0|UINT64|0x00000046
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio64Size|0x0|UINT64|0x00000047
|
||||||
|
gArmPlatformTokenSpaceGuid.PcdPciMmio64Translation|0x0|UINT64|0x00000048
|
||||||
|
|
||||||
[PcdsFixedAtBuild.ARM]
|
[PcdsFixedAtBuild.ARM]
|
||||||
# Stack for CPU Cores in Secure Monitor Mode
|
# Stack for CPU Cores in Secure Monitor Mode
|
||||||
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase|0|UINT32|0x00000007
|
gArmPlatformTokenSpaceGuid.PcdCPUCoresSecMonStackBase|0|UINT32|0x00000007
|
||||||
|
|
Loading…
Reference in New Issue