\r
// Motherboard Peripheral and On-chip peripheral\r
#define ARM_VE_BOARD_PERIPH_BASE 0x1C010000\r
+#define ARM_VE_BOARD_SYS_ID 0x0000\r
+#define ARM_VE_BOARD_SYS_PCIE_GBE_L 0x0074\r
+#define ARM_VE_BOARD_SYS_PCIE_GBE_H 0x0078\r
+\r
+#define ARM_VE_BOARD_SYS_ID_REV(word) ((word >> 28) & 0xff)\r
\r
// NOR Flash 0\r
#define ARM_VE_SMB_NOR0_BASE 0x08000000\r
EFI_ACPI_ARM_CREATOR_REVISION /* UINT32 CreatorRevision */ \\r
}\r
\r
+//\r
+// Hardware platform identifiers\r
+//\r
+#define JUNO_REVISION_PROTOTYPE 0\r
+#define JUNO_REVISION_R0 1\r
+#define JUNO_REVISION_R1 2\r
+#define JUNO_REVISION_R2 3\r
+#define JUNO_REVISION_UKNOWN 0xFF\r
+\r
+//\r
+// We detect whether we are running on a Juno r0, r1 or r2\r
+// board at runtime by checking the value of board SYS_ID\r
+//\r
+#define GetJunoRevision(JunoRevision) \\r
+{ \\r
+ UINT32 SysId; \\r
+ SysId = MmioRead32 (ARM_VE_BOARD_PERIPH_BASE+ARM_VE_BOARD_SYS_ID); \\r
+ JunoRevision = ARM_VE_BOARD_SYS_ID_REV( SysId ); \\r
+}\r
+\r
#define JUNO_WATCHDOG_COUNT 2\r
\r
// Define if the exported ACPI Tables are based on ACPI 5.0 spec or latest\r
// assigned to the PCI Gigabyte Ethernet device.\r
//\r
\r
-#define ARM_JUNO_SYS_PCIGBE_L (ARM_VE_BOARD_PERIPH_BASE + 0x74)\r
-#define ARM_JUNO_SYS_PCIGBE_H (ARM_VE_BOARD_PERIPH_BASE + 0x78)\r
+#define ARM_JUNO_SYS_PCIGBE_L (ARM_VE_BOARD_PERIPH_BASE + ARM_VE_BOARD_SYS_PCIE_GBE_L)\r
+#define ARM_JUNO_SYS_PCIGBE_H (ARM_VE_BOARD_PERIPH_BASE + ARM_VE_BOARD_SYS_PCIE_GBE_H)\r
\r
#endif\r