]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/ArmVExpressPkg/Include/VExpressMotherBoard.h
ArmPkg/AsmMacroIoLib: force word alignment for functions
[mirror_edk2.git] / ArmPlatformPkg / ArmVExpressPkg / Include / VExpressMotherBoard.h
index 6ed56ab64f431ea3c0b77e39ab73983053a0f5cd..38691c35828b16637f0fc111879c2fe00b129685 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 *  Header defining Versatile Express constants (Base addresses, sizes, flags)\r
 *\r
-*  Copyright (c) 2011, ARM Limited. All rights reserved.\r
+*  Copyright (c) 2011-2015, ARM Limited. All rights reserved.\r
 *\r
 *  This program and the accompanying materials\r
 *  are licensed and made available under the terms and conditions of the BSD License\r
@@ -23,6 +23,8 @@
 ************************************************************************************/\r
 \r
 // Define MotherBoard SYS flags offsets (from ARM_VE_BOARD_PERIPH_BASE)\r
+#define ARM_VE_SYS_ID_REG                         (ARM_VE_BOARD_PERIPH_BASE + 0x00000)\r
+#define ARM_VE_SYS_SW_REG                         (ARM_VE_BOARD_PERIPH_BASE + 0x00004)\r
 #define ARM_VE_SYS_LED_REG                        (ARM_VE_BOARD_PERIPH_BASE + 0x00008)\r
 #define ARM_VE_SYS_FLAGS_REG                      (ARM_VE_BOARD_PERIPH_BASE + 0x00030)\r
 #define ARM_VE_SYS_FLAGS_SET_REG                  (ARM_VE_BOARD_PERIPH_BASE + 0x00030)\r
@@ -31,6 +33,8 @@
 #define ARM_VE_SYS_FLAGS_NV_SET_REG               (ARM_VE_BOARD_PERIPH_BASE + 0x00038)\r
 #define ARM_VE_SYS_FLAGS_NV_CLR_REG               (ARM_VE_BOARD_PERIPH_BASE + 0x0003C)\r
 #define ARM_VE_SYS_FLASH                          (ARM_VE_BOARD_PERIPH_BASE + 0x0004C)\r
+#define ARM_VE_SYS_CFGSWR_REG                     (ARM_VE_BOARD_PERIPH_BASE + 0x00058)\r
+#define ARM_VE_SYS_MISC                           (ARM_VE_BOARD_PERIPH_BASE + 0x00060)\r
 #define ARM_VE_SYS_PROCID0_REG                    (ARM_VE_BOARD_PERIPH_BASE + 0x00084)\r
 #define ARM_VE_SYS_PROCID1_REG                    (ARM_VE_BOARD_PERIPH_BASE + 0x00088)\r
 #define ARM_VE_SYS_CFGDATA_REG                    (ARM_VE_BOARD_PERIPH_BASE + 0x000A0)\r
 #define ARM_VE_SYS_CFGSTAT_REG                    (ARM_VE_BOARD_PERIPH_BASE + 0x000A8)\r
 \r
 // SP810 Controller\r
+#ifndef SP810_CTRL_BASE\r
 #define SP810_CTRL_BASE                           (ARM_VE_BOARD_PERIPH_BASE + 0x01000)\r
-\r
-// Uart0\r
-#define PL011_CONSOLE_UART_BASE                   (ARM_VE_BOARD_PERIPH_BASE + 0x09000)\r
-\r
-// SP805 Watchdog on motherboard\r
-#define SP805_WDOG_MOTHERBOARD_BASE               (ARM_VE_BOARD_PERIPH_BASE + 0x0F000)\r
-\r
-// SP804 Timer Bases\r
-#define SP804_TIMER0_BASE                         (ARM_VE_BOARD_PERIPH_BASE + 0x11000)\r
-#define SP804_TIMER1_BASE                         (ARM_VE_BOARD_PERIPH_BASE + 0x11020)\r
-#define SP804_TIMER2_BASE                         (ARM_VE_BOARD_PERIPH_BASE + 0x12000)\r
-#define SP804_TIMER3_BASE                         (ARM_VE_BOARD_PERIPH_BASE + 0x12020)\r
-\r
-// PL031 Real Time Clock\r
-#define PL031_RTC_BASE                            (ARM_VE_BOARD_PERIPH_BASE + 0x17000)\r
+#endif\r
 \r
 // PL111 Colour LCD Controller - motherboard\r
 #define PL111_CLCD_MOTHERBOARD_BASE               (ARM_VE_BOARD_PERIPH_BASE + 0x1F000)\r
 // VRAM offset for the PL111 Colour LCD Controller on the motherboard\r
 #define VRAM_MOTHERBOARD_BASE                     (ARM_VE_SMB_PERIPH_BASE   + 0x00000)\r
 \r
-#define ARM_VE_SYS_PROC_ID_MASK                   (0xFF << 24)\r
-#define ARM_VE_SYS_PROC_ID_UNSUPPORTED            (0xFF << 24)\r
-#define ARM_VE_SYS_PROC_ID_CORTEX_A9              (0x0C << 24)\r
-#define ARM_VE_SYS_PROC_ID_CORTEX_A5              (0x12 << 24)\r
-#define ARM_VE_SYS_PROC_ID_CORTEX_A15             (0x14 << 24)\r
-\r
+#define ARM_VE_SYS_PROC_ID_HBI                    0xFFF\r
+#define ARM_VE_SYS_PROC_ID_MASK                   (UINT32)(0xFFU << 24)\r
+#define ARM_VE_SYS_PROC_ID_UNSUPPORTED            (UINT32)(0xFFU << 24)\r
+#define ARM_VE_SYS_PROC_ID_CORTEX_A9              (UINT32)(0x0CU << 24)\r
+#define ARM_VE_SYS_PROC_ID_CORTEX_A5              (UINT32)(0x12U << 24)\r
+#define ARM_VE_SYS_PROC_ID_CORTEX_A15             (UINT32)(0x14U << 24)\r
+#define ARM_VE_SYS_PROC_ID_CORTEX_A7              (UINT32)(0x18U << 24)\r
+#define ARM_VE_SYS_PROC_ID_CORTEX_A12             (UINT32)(0x1CU << 24)\r
+\r
+// Boot Master Select:\r
+// 0 = Site 1 boot master\r
+// 1 = Site 2 boot master\r
+#define ARM_VE_SYS_MISC_MASTERSITE                (1 << 14)\r
 //\r
 // Sites where the peripheral is fitted\r
 //\r
 // Can not access the battery backed-up hardware clock on the Versatile Express motherboard\r
 #define SYS_CFG_RTC                               VIRTUAL_SYS_CFG(ARM_VE_UNSUPPORTED,1)\r
 \r
+//\r
+// System ID\r
+//\r
+// All RTSM VE models have the same System ID : 0x225F500\r
+//\r
+// FVP models have a different System ID.\r
+// Default Base model System ID : 0x00201100\r
+// [31:28] Rev     - Board revision:          0x0     = Rev A\r
+// [27:16] HBI     - HBI board number in BCD: 0x020   = v8 Base Platform\r
+// [15:12] Variant - Build variant of board:  0x1     = Variant B. (GIC 64k map)\r
+// [11:8]  Plat    - Platform type:           0x1     = Model\r
+// [7:0]   FPGA    - FPGA build, BCD coded:   0x00\r
+//\r
+//HBI = 010 = Foundation Model\r
+//HBI = 020 = Base Platform\r
+//\r
+// And specifically, the GIC register banks start at the following\r
+// addresses:\r
+//              Variant = 0             Variant = 1\r
+//GICD          0x2c001000              0x2f000000\r
+//GICC          0x2c002000              0x2c000000\r
+//GICH          0x2c004000              0x2c010000\r
+//GICV          0x2c006000              0x2c020000\r
+\r
+#define ARM_FVP_BASE_BOARD_SYS_ID       (0x00200100)\r
+#define ARM_FVP_FOUNDATION_BOARD_SYS_ID (0x00100100)\r
+\r
+#define ARM_FVP_SYS_ID_REV_MASK        (UINT32)(0xFUL   << 28)\r
+#define ARM_FVP_SYS_ID_HBI_MASK        (UINT32)(0xFFFUL << 16)\r
+#define ARM_FVP_SYS_ID_VARIANT_MASK    (UINT32)(0xFUL   << 12)\r
+#define ARM_FVP_SYS_ID_PLAT_MASK       (UINT32)(0xFUL   << 8 )\r
+#define ARM_FVP_SYS_ID_FPGA_MASK       (UINT32)(0xFFUL  << 0 )\r
+#define ARM_FVP_GIC_VE_MMAP            0x0\r
+#define ARM_FVP_GIC_BASE_MMAP          (UINT32)(1 << 12)\r
+\r
+// The default SYS_IDs. These can be changed when starting the model.\r
+#define ARM_RTSM_SYS_ID                (0x225F500)\r
+#define ARM_FVP_BASE_SYS_ID            (ARM_FVP_BASE_BOARD_SYS_ID | ARM_FVP_GIC_BASE_MMAP)\r
+#define ARM_FVP_FOUNDATION_SYS_ID      (ARM_FVP_FOUNDATION_BOARD_SYS_ID | ARM_FVP_GIC_BASE_MMAP)\r
+\r
 #endif /* VEXPRESSMOTHERBOARD_H_ */\r