1b4315306SDan Handley /* 2e02f469fSSathees Balya * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. 3b4315306SDan Handley * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 5b4315306SDan Handley */ 6e02f469fSSathees Balya #ifndef V2M_DEF_H 7e02f469fSSathees Balya #define V2M_DEF_H 8b4315306SDan Handley 903987d01SAntonio Nino Diaz #include <xlat_tables_compat.h> 10b4315306SDan Handley 11b4315306SDan Handley /* V2M motherboard system registers & offsets */ 12e02f469fSSathees Balya #define V2M_SYSREGS_BASE UL(0x1c010000) 13e02f469fSSathees Balya #define V2M_SYS_ID UL(0x0) 14e02f469fSSathees Balya #define V2M_SYS_SWITCH UL(0x4) 15e02f469fSSathees Balya #define V2M_SYS_LED UL(0x8) 16e02f469fSSathees Balya #define V2M_SYS_NVFLAGS UL(0x38) 17e02f469fSSathees Balya #define V2M_SYS_NVFLAGSSET UL(0x38) 18e02f469fSSathees Balya #define V2M_SYS_NVFLAGSCLR UL(0x3c) 19e02f469fSSathees Balya #define V2M_SYS_CFGDATA UL(0xa0) 20e02f469fSSathees Balya #define V2M_SYS_CFGCTRL UL(0xa4) 21e02f469fSSathees Balya #define V2M_SYS_CFGSTATUS UL(0xa8) 22b4315306SDan Handley 23e02f469fSSathees Balya #define V2M_CFGCTRL_START BIT_32(31) 24e02f469fSSathees Balya #define V2M_CFGCTRL_RW BIT_32(30) 25b4315306SDan Handley #define V2M_CFGCTRL_FUNC_SHIFT 20 26e02f469fSSathees Balya #define V2M_CFGCTRL_FUNC(fn) ((fn) << V2M_CFGCTRL_FUNC_SHIFT) 27e02f469fSSathees Balya #define V2M_FUNC_CLK_GEN U(0x01) 28e02f469fSSathees Balya #define V2M_FUNC_TEMP U(0x04) 29e02f469fSSathees Balya #define V2M_FUNC_DB_RESET U(0x05) 30e02f469fSSathees Balya #define V2M_FUNC_SCC_CFG U(0x06) 31e02f469fSSathees Balya #define V2M_FUNC_SHUTDOWN U(0x08) 32e02f469fSSathees Balya #define V2M_FUNC_REBOOT U(0x09) 33b4315306SDan Handley 344da6f6cdSSathees Balya /* NVFLAGS in the V2M motherboard which is preserved after a watchdog reset */ 354da6f6cdSSathees Balya #define V2M_SYS_NVFLAGS_ADDR (V2M_SYSREGS_BASE + V2M_SYS_NVFLAGS) 364da6f6cdSSathees Balya 37b4315306SDan Handley /* 38b4315306SDan Handley * V2M sysled bit definitions. The values written to this 39b4315306SDan Handley * register are defined in arch.h & runtime_svc.h. Only 40b4315306SDan Handley * used by the primary cpu to diagnose any cold boot issues. 41b4315306SDan Handley * 42b4315306SDan Handley * SYS_LED[0] - Security state (S=0/NS=1) 43b4315306SDan Handley * SYS_LED[2:1] - Exception Level (EL3-EL0) 44b4315306SDan Handley * SYS_LED[7:3] - Exception Class (Sync/Async & origin) 45b4315306SDan Handley * 46b4315306SDan Handley */ 47b4315306SDan Handley #define V2M_SYS_LED_SS_SHIFT 0x0 48b4315306SDan Handley #define V2M_SYS_LED_EL_SHIFT 0x1 49b4315306SDan Handley #define V2M_SYS_LED_EC_SHIFT 0x3 50b4315306SDan Handley 51*f21c6321SAntonio Nino Diaz #define V2M_SYS_LED_SS_MASK U(0x1) 52*f21c6321SAntonio Nino Diaz #define V2M_SYS_LED_EL_MASK U(0x3) 53*f21c6321SAntonio Nino Diaz #define V2M_SYS_LED_EC_MASK U(0x1f) 54b4315306SDan Handley 55b4315306SDan Handley /* V2M sysid register bits */ 56b4315306SDan Handley #define V2M_SYS_ID_REV_SHIFT 28 57b4315306SDan Handley #define V2M_SYS_ID_HBI_SHIFT 16 58b4315306SDan Handley #define V2M_SYS_ID_BLD_SHIFT 12 59b4315306SDan Handley #define V2M_SYS_ID_ARCH_SHIFT 8 60b4315306SDan Handley #define V2M_SYS_ID_FPGA_SHIFT 0 61b4315306SDan Handley 62*f21c6321SAntonio Nino Diaz #define V2M_SYS_ID_REV_MASK U(0xf) 63*f21c6321SAntonio Nino Diaz #define V2M_SYS_ID_HBI_MASK U(0xfff) 64*f21c6321SAntonio Nino Diaz #define V2M_SYS_ID_BLD_MASK U(0xf) 65*f21c6321SAntonio Nino Diaz #define V2M_SYS_ID_ARCH_MASK U(0xf) 66*f21c6321SAntonio Nino Diaz #define V2M_SYS_ID_FPGA_MASK U(0xff) 67b4315306SDan Handley 68b4315306SDan Handley #define V2M_SYS_ID_BLD_LENGTH 4 69b4315306SDan Handley 70b4315306SDan Handley 71b4315306SDan Handley /* NOR Flash */ 72*f21c6321SAntonio Nino Diaz #define V2M_FLASH0_BASE UL(0x08000000) 73*f21c6321SAntonio Nino Diaz #define V2M_FLASH0_SIZE UL(0x04000000) 74*f21c6321SAntonio Nino Diaz #define V2M_FLASH_BLOCK_SIZE UL(0x00040000) /* 256 KB */ 75b4315306SDan Handley 76*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_BASE UL(0x1c000000) 77*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_SIZE UL(0x03000000) 78b4315306SDan Handley 79b4315306SDan Handley /* PL011 UART related constants */ 80*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_UART0_BASE UL(0x1c090000) 81*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_UART1_BASE UL(0x1c0a0000) 82*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_UART2_BASE UL(0x1c0b0000) 83*f21c6321SAntonio Nino Diaz #define V2M_IOFPGA_UART3_BASE UL(0x1c0c0000) 84b4315306SDan Handley 85b4315306SDan Handley #define V2M_IOFPGA_UART0_CLK_IN_HZ 24000000 86b4315306SDan Handley #define V2M_IOFPGA_UART1_CLK_IN_HZ 24000000 87b4315306SDan Handley #define V2M_IOFPGA_UART2_CLK_IN_HZ 24000000 88b4315306SDan Handley #define V2M_IOFPGA_UART3_CLK_IN_HZ 24000000 89b4315306SDan Handley 90b49b3221SRyan Harkin /* SP804 timer related constants */ 91*f21c6321SAntonio Nino Diaz #define V2M_SP804_TIMER0_BASE UL(0x1C110000) 92*f21c6321SAntonio Nino Diaz #define V2M_SP804_TIMER1_BASE UL(0x1C120000) 93b4315306SDan Handley 94540a5ba8SJuan Castillo /* SP810 controller */ 95*f21c6321SAntonio Nino Diaz #define V2M_SP810_BASE UL(0x1c020000) 96*f21c6321SAntonio Nino Diaz #define V2M_SP810_CTRL_TIM0_SEL BIT_32(15) 97*f21c6321SAntonio Nino Diaz #define V2M_SP810_CTRL_TIM1_SEL BIT_32(17) 98*f21c6321SAntonio Nino Diaz #define V2M_SP810_CTRL_TIM2_SEL BIT_32(19) 99*f21c6321SAntonio Nino Diaz #define V2M_SP810_CTRL_TIM3_SEL BIT_32(21) 100540a5ba8SJuan Castillo 10191fad655SSandrine Bailleux /* 10291fad655SSandrine Bailleux * The flash can be mapped either as read-only or read-write. 10391fad655SSandrine Bailleux * 10491fad655SSandrine Bailleux * If it is read-write then it should also be mapped as device memory because 10591fad655SSandrine Bailleux * NOR flash programming involves sending a fixed, ordered sequence of commands. 10691fad655SSandrine Bailleux * 10791fad655SSandrine Bailleux * If it is read-only then it should also be mapped as: 10891fad655SSandrine Bailleux * - Normal memory, because reading from NOR flash is transparent, it is like 10991fad655SSandrine Bailleux * reading from RAM. 11091fad655SSandrine Bailleux * - Non-executable by default. If some parts of the flash need to be executable 11191fad655SSandrine Bailleux * then platform code is responsible for re-mapping the appropriate portion 11291fad655SSandrine Bailleux * of it as executable. 11391fad655SSandrine Bailleux */ 1147b4c1405SJuan Castillo #define V2M_MAP_FLASH0_RW MAP_REGION_FLAT(V2M_FLASH0_BASE,\ 1157b4c1405SJuan Castillo V2M_FLASH0_SIZE, \ 1167b4c1405SJuan Castillo MT_DEVICE | MT_RW | MT_SECURE) 1177b4c1405SJuan Castillo 1187b4c1405SJuan Castillo #define V2M_MAP_FLASH0_RO MAP_REGION_FLAT(V2M_FLASH0_BASE,\ 119b4315306SDan Handley V2M_FLASH0_SIZE, \ 12091fad655SSandrine Bailleux MT_RO_DATA | MT_SECURE) 121b4315306SDan Handley 122b4315306SDan Handley #define V2M_MAP_IOFPGA MAP_REGION_FLAT(V2M_IOFPGA_BASE,\ 123b4315306SDan Handley V2M_IOFPGA_SIZE, \ 124b4315306SDan Handley MT_DEVICE | MT_RW | MT_SECURE) 125b4315306SDan Handley 126e29efeb1SAntonio Nino Diaz /* Region equivalent to V2M_MAP_IOFPGA suitable for mapping at EL0 */ 127e29efeb1SAntonio Nino Diaz #define V2M_MAP_IOFPGA_EL0 MAP_REGION_FLAT( \ 128e29efeb1SAntonio Nino Diaz V2M_IOFPGA_BASE, \ 129e29efeb1SAntonio Nino Diaz V2M_IOFPGA_SIZE, \ 130e29efeb1SAntonio Nino Diaz MT_DEVICE | MT_RW | MT_SECURE | MT_USER) 131b4315306SDan Handley 132b4315306SDan Handley 133e02f469fSSathees Balya #endif /* V2M_DEF_H */ 134