diff options
-rw-r--r-- | ArmPkg/Library/ArmDmaLib/ArmDmaLib.c | 18 | ||||
-rw-r--r-- | ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf | 2 |
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
|