Revision: 18307
http://sourceforge.net/p/edk2/code/18307
Author: abiesheuvel
Date: 2015-08-25 13:11:02 +0000 (Tue, 25 Aug 2015)
Log Message:
-----------
ArmPlatformPkg/PL180MciDxe: check PrimeCell ID before initializing
To deal gracefully with the absence of the PL180 hardware on
the Foundation model, check the PrimeCell ID before proceeding
with the installation.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
Modified Paths:
--------------
trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.h
Modified: trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c 2015-08-25
09:51:07 UTC (rev 18306)
+++ trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c 2015-08-25
13:11:02 UTC (rev 18307)
@@ -521,6 +521,22 @@
EFI_STATUS Status;
EFI_HANDLE Handle;
+ DEBUG ((EFI_D_WARN, "Probing ID registers at 0x%lx for a PL180\n",
+ MCI_PERIPH_ID_REG0));
+
+ // Check if this is a PL180
+ if (MmioRead8 (MCI_PERIPH_ID_REG0) != MCI_PERIPH_ID0 ||
+ MmioRead8 (MCI_PERIPH_ID_REG1) != MCI_PERIPH_ID1 ||
+ MmioRead8 (MCI_PERIPH_ID_REG2) != MCI_PERIPH_ID2 ||
+ MmioRead8 (MCI_PERIPH_ID_REG3) != MCI_PERIPH_ID3 ||
+ MmioRead8 (MCI_PCELL_ID_REG0) != MCI_PCELL_ID0 ||
+ MmioRead8 (MCI_PCELL_ID_REG1) != MCI_PCELL_ID1 ||
+ MmioRead8 (MCI_PCELL_ID_REG2) != MCI_PCELL_ID2 ||
+ MmioRead8 (MCI_PCELL_ID_REG3) != MCI_PCELL_ID3) {
+
+ return EFI_NOT_FOUND;
+ }
+
Handle = NULL;
MCI_TRACE ("PL180MciDxeInitialize()");
Modified: trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.h
===================================================================
--- trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.h 2015-08-25
09:51:07 UTC (rev 18306)
+++ trunk/edk2/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.h 2015-08-25
13:11:02 UTC (rev 18307)
@@ -51,7 +51,24 @@
#define MCI_SELECT_REG (MCI_SYSCTL + 0x044)
#define MCI_FIFOCOUNT_REG (MCI_SYSCTL + 0x048)
#define MCI_FIFO_REG (MCI_SYSCTL + 0x080)
+#define MCI_PERIPH_ID_REG0 (MCI_SYSCTL + 0xFE0)
+#define MCI_PERIPH_ID_REG1 (MCI_SYSCTL + 0xFE4)
+#define MCI_PERIPH_ID_REG2 (MCI_SYSCTL + 0xFE8)
+#define MCI_PERIPH_ID_REG3 (MCI_SYSCTL + 0xFEC)
+#define MCI_PCELL_ID_REG0 (MCI_SYSCTL + 0xFF0)
+#define MCI_PCELL_ID_REG1 (MCI_SYSCTL + 0xFF4)
+#define MCI_PCELL_ID_REG2 (MCI_SYSCTL + 0xFF8)
+#define MCI_PCELL_ID_REG3 (MCI_SYSCTL + 0xFFC)
+#define MCI_PERIPH_ID0 0x80
+#define MCI_PERIPH_ID1 0x11
+#define MCI_PERIPH_ID2 0x04
+#define MCI_PERIPH_ID3 0x00
+#define MCI_PCELL_ID0 0x0D
+#define MCI_PCELL_ID1 0xF0
+#define MCI_PCELL_ID2 0x05
+#define MCI_PCELL_ID3 0xB1
+
#define MCI_POWER_OFF 0
#define MCI_POWER_UP BIT1
#define MCI_POWER_ON (BIT1 | BIT0)
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits