]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
ArmPlatformPkg/PL180MciDxe: check PrimeCell ID before initializing
[mirror_edk2.git] / ArmPlatformPkg / Drivers / PL180MciDxe / PL180Mci.c
index 411a61ed040fecb63956710c681bf96d55b4550f..688cd8a98ced2b540ced7c4c7c7bfd5174ef86c4 100644 (file)
@@ -521,6 +521,22 @@ PL180MciDxeInitialize (
   EFI_STATUS    Status;\r
   EFI_HANDLE    Handle;\r
 \r
+  DEBUG ((EFI_D_WARN, "Probing ID registers at 0x%lx for a PL180\n",\r
+    MCI_PERIPH_ID_REG0));\r
+\r
+  // Check if this is a PL180\r
+  if (MmioRead8 (MCI_PERIPH_ID_REG0) != MCI_PERIPH_ID0 ||\r
+      MmioRead8 (MCI_PERIPH_ID_REG1) != MCI_PERIPH_ID1 ||\r
+      MmioRead8 (MCI_PERIPH_ID_REG2) != MCI_PERIPH_ID2 ||\r
+      MmioRead8 (MCI_PERIPH_ID_REG3) != MCI_PERIPH_ID3 ||\r
+      MmioRead8 (MCI_PCELL_ID_REG0)  != MCI_PCELL_ID0  ||\r
+      MmioRead8 (MCI_PCELL_ID_REG1)  != MCI_PCELL_ID1  ||\r
+      MmioRead8 (MCI_PCELL_ID_REG2)  != MCI_PCELL_ID2  ||\r
+      MmioRead8 (MCI_PCELL_ID_REG3)  != MCI_PCELL_ID3) {\r
+\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   Handle = NULL;\r
 \r
   MCI_TRACE ("PL180MciDxeInitialize()");\r