SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi\r
SECTION UI = "DDRInfoDxe"\r
}\r
+\r
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf\r
}\r
\r
INF MdeModulePkg/Core/Dxe/DxeMain.inf\r
SECTION PE32 = sdm845Pkg/Binary/845/DDRInfoDxe/DDRInfoDxe.efi
SECTION UI = "DDRInfoDxe"
}
+
+ INF sdm845Pkg/Drivers/sdm845Dxe/sdm845Dxe.inf
+
}
INF MdeModulePkg/Core/Dxe/DxeMain.inf
#include <Protocol/EmbeddedGpio.h>
#include <Protocol/LoadedImage.h>
#include <Protocol/PlatformBootManager.h>
+#include <Protocol/QcomSmem.h>
#include "sdm845Dxe.h"
VOID InitPeripherals(IN VOID)
{
+ EFI_STATUS Status;
+ EFI_QCOM_SMEM_PROTOCOL *pEfiSmemProtocol = NULL;
+ UINT32 Size = 0;
+ UINTN *pAddr;
+
// Lock the QcomWdogTimer in a cage on certain devices
MmioWrite32(0x17980008, 0x000000);
DEBUG((EFI_D_WARN, "\n \v The Dog has been locked in a cage :)\v"));
+
+ Status = gBS->LocateProtocol(
+ &gQcomSMEMProtocolGuid, NULL, (VOID **)&pEfiSmemProtocol);
+
+ Status = pEfiSmemProtocol->SmemGetAddr(137, &Size, (VOID **)&pAddr);
+ if (EFI_ERROR(Status)) {
+ DEBUG((EFI_D_ERROR, "%a: SmemGetAddr failed. %r\n", __FUNCTION__, Status));
+ }
+
+ DEBUG((EFI_D_ERROR, "%a: SmemGetAddr result: 0x%p\n", __FUNCTION__, pAddr));
+ // gBS->Stall(5000000);
}
/**
EmbeddedPkg/EmbeddedPkg.dec
MdeModulePkg/MdeModulePkg.dec
MdePkg/MdePkg.dec
+ sdm845Pkg/sdm845Pkg.dec
[LibraryClasses]
BaseMemoryLib
gEfiDevicePathFromTextProtocolGuid
gEfiLoadedImageProtocolGuid
gEfiCpuArchProtocolGuid
+ gQcomSMEMProtocolGuid
[Guids]
gEfiEndOfDxeEventGroupGuid