summaryrefslogtreecommitdiffstats
path: root/ArmPkg
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-11-12 14:02:25 +0100
committerLeif Lindholm <leif.lindholm@linaro.org>2016-11-30 16:41:55 +0000
commitde2ec785e2b11798a3ca7aaf653bc76576d947b0 (patch)
treeea855078327d06291e6adc6fd09d126e3f4a1847 /ArmPkg
parent35718840efe3a29c981b5b0f4d2f617f9a1f2c2e (diff)
downloadedk2-de2ec785e2b11798a3ca7aaf653bc76576d947b0.tar.gz
edk2-de2ec785e2b11798a3ca7aaf653bc76576d947b0.tar.bz2
edk2-de2ec785e2b11798a3ca7aaf653bc76576d947b0.zip
ArmPkg/ArmDmaLib: use DMA buffer alignment from CPU arch protocol
Instead of depending on ArmLib to retrieve the CWG directly, use the DMA buffer alignment exposed by the CPU arch protocol. This removes our dependency on ArmLib, which makes the library a bit more architecture independent. While we're in there, rename gCpu to mCpu to better reflect its local scope, and reflow some lines that we're modifying anyway. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'ArmPkg')
-rw-r--r--ArmPkg/Library/ArmDmaLib/ArmDmaLib.c18
-rw-r--r--ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf2
2 files changed, 8 insertions, 12 deletions
diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
index 4476e8b461..e836feff1e 100644
--- a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
+++ b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c
@@ -22,7 +22,6 @@
#include <Library/UncachedMemoryAllocationLib.h>
#include <Library/IoLib.h>
#include <Library/BaseMemoryLib.h>
-#include <Library/ArmLib.h>
#include <Protocol/Cpu.h>
@@ -36,8 +35,7 @@ typedef struct {
-EFI_CPU_ARCH_PROTOCOL *gCpu;
-UINTN gCacheAlignment = 0;
+STATIC EFI_CPU_ARCH_PROTOCOL *mCpu;
/**
Provides the DMA controller-specific addresses needed to access system memory.
@@ -90,8 +88,8 @@ DmaMap (
return EFI_OUT_OF_RESOURCES;
}
- if ((((UINTN)HostAddress & (gCacheAlignment - 1)) != 0) ||
- ((*NumberOfBytes & (gCacheAlignment - 1)) != 0)) {
+ if ((((UINTN)HostAddress & (mCpu->DmaBufferAlignment - 1)) != 0) ||
+ ((*NumberOfBytes & (mCpu->DmaBufferAlignment - 1)) != 0)) {
// Get the cacheability of the region
Status = gDS->GetMemorySpaceDescriptor (*DeviceAddress, &GcdDescriptor);
@@ -153,7 +151,8 @@ DmaMap (
DEBUG_CODE_END ();
// Flush the Data Cache (should not have any effect if the memory region is uncached)
- gCpu->FlushDataCache (gCpu, *DeviceAddress, *NumberOfBytes, EfiCpuFlushTypeWriteBackInvalidate);
+ mCpu->FlushDataCache (mCpu, *DeviceAddress, *NumberOfBytes,
+ EfiCpuFlushTypeWriteBackInvalidate);
}
Map->HostAddress = (UINTN)HostAddress;
@@ -217,7 +216,8 @@ DmaUnmap (
//
// Make sure we read buffer from uncached memory and not the cache
//
- gCpu->FlushDataCache (gCpu, Map->HostAddress, Map->NumberOfBytes, EfiCpuFlushTypeInvalidate);
+ mCpu->FlushDataCache (mCpu, Map->HostAddress, Map->NumberOfBytes,
+ EfiCpuFlushTypeInvalidate);
}
}
@@ -317,11 +317,9 @@ ArmDmaLibConstructor (
EFI_STATUS Status;
// Get the Cpu protocol for later use
- Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&gCpu);
+ Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&mCpu);
ASSERT_EFI_ERROR(Status);
- gCacheAlignment = ArmCacheWritebackGranule ();
-
return Status;
}
diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf
index 95c13006ea..31de3cfd82 100644
--- a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf
+++ b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf
@@ -37,8 +37,6 @@
UncachedMemoryAllocationLib
IoLib
BaseMemoryLib
- ArmLib
-
[Protocols]
gEfiCpuArchProtocolGuid