mirror of https://github.com/acidanthera/audk.git
EmbeddedPkg/CoherentDmaLib: add support for non-1:1 DMA translation
Bring CoherentDmaLib in line with ArmDmaLib, and add support for defining a static offset between the host's and the bus master's view of memory. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
7385d2543e
commit
0bcb801067
|
@ -205,3 +205,10 @@
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common, PcdsDynamic.common]
|
[PcdsFixedAtBuild.common, PcdsDynamic.common]
|
||||||
gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L""|VOID*|0x00000055
|
gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L""|VOID*|0x00000055
|
||||||
|
|
||||||
|
#
|
||||||
|
# Value to add to a host address to obtain a device address, using
|
||||||
|
# unsigned 64-bit integer arithmetic. This means we can rely on
|
||||||
|
# truncation on overflow to specify negative offsets.
|
||||||
|
#
|
||||||
|
gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset|0x0|UINT64|0x0000058
|
||||||
|
|
|
@ -19,6 +19,14 @@
|
||||||
#include <Library/MemoryAllocationLib.h>
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
|
||||||
|
|
||||||
|
STATIC
|
||||||
|
PHYSICAL_ADDRESS
|
||||||
|
HostToDeviceAddress (
|
||||||
|
IN VOID *Address
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return (PHYSICAL_ADDRESS)(UINTN)Address + PcdGet64 (PcdDmaDeviceOffset);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Provides the DMA controller-specific addresses needed to access system memory.
|
Provides the DMA controller-specific addresses needed to access system memory.
|
||||||
|
@ -50,7 +58,7 @@ DmaMap (
|
||||||
OUT VOID **Mapping
|
OUT VOID **Mapping
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
*DeviceAddress = (PHYSICAL_ADDRESS)(UINTN)HostAddress;
|
*DeviceAddress = HostToDeviceAddress (HostAddress);
|
||||||
*Mapping = NULL;
|
*Mapping = NULL;
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,3 +31,6 @@
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
DebugLib
|
DebugLib
|
||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
|
|
||||||
|
[Pcd]
|
||||||
|
gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset
|
||||||
|
|
Loading…
Reference in New Issue