1ab36d097STejas Patel /* 2619bc13eSMichal Simek * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved. 3e497421dSTanmay Shah * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved. 409ac1ca2SMaheedhar Bollapalli * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved. 5ab36d097STejas Patel * 6ab36d097STejas Patel * SPDX-License-Identifier: BSD-3-Clause 7ab36d097STejas Patel */ 8ab36d097STejas Patel 9ab36d097STejas Patel #ifndef VERSAL_DEF_H 10ab36d097STejas Patel #define VERSAL_DEF_H 11ab36d097STejas Patel 1253adebadSManish V Badarkhe #include <plat/arm/common/smccc_def.h> 13ab36d097STejas Patel #include <plat/common/common_def.h> 14ab36d097STejas Patel 15079c6e24SAkshay Belsare #define PLATFORM_MASK GENMASK(27U, 24U) 16079c6e24SAkshay Belsare #define PLATFORM_VERSION_MASK GENMASK(31U, 28U) 17079c6e24SAkshay Belsare 18e497421dSTanmay Shah /* number of interrupt handlers. increase as required */ 19b802b278SMaheedhar Bollapalli #define MAX_INTR_EL3 2U 20ab36d097STejas Patel /* List all consoles */ 216d413983SMichal Simek #define VERSAL_CONSOLE_ID_none 0 22ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011 1 23ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_0 1 24ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_1 2 25ab36d097STejas Patel #define VERSAL_CONSOLE_ID_dcc 3 26d629db24SPrasad Kummari #define VERSAL_CONSOLE_ID_dtb 4 27ab36d097STejas Patel 2804a48335SMichal Simek #define CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE) 29ab36d097STejas Patel 30d533f58dSPrasad Kummari /* Runtime console */ 31d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011 1 32d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011_0 1 33d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011_1 2 34d533f58dSPrasad Kummari #define RT_CONSOLE_ID_dcc 3 35d533f58dSPrasad Kummari #define RT_CONSOLE_ID_dtb 4 36d533f58dSPrasad Kummari 37d533f58dSPrasad Kummari #define RT_CONSOLE_IS(con) (RT_CONSOLE_ID_ ## con == CONSOLE_RUNTIME) 38d533f58dSPrasad Kummari 3909ac1ca2SMaheedhar Bollapalli /* List of platforms */ 40*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_SILICON 0U 41*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_SPP 1U 42*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_EMU 2U 43*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_QEMU 3U 44*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_COSIM 7U 45ab36d097STejas Patel 46ab36d097STejas Patel /* Firmware Image Package */ 47ab36d097STejas Patel #define VERSAL_PRIMARY_CPU 0 48ab36d097STejas Patel 49ab36d097STejas Patel /******************************************************************************* 50ab36d097STejas Patel * memory map related constants 51ab36d097STejas Patel ******************************************************************************/ 524b232404SMaheedhar Bollapalli #define DEVICE0_BASE U(0xFF000000) 534b232404SMaheedhar Bollapalli #define DEVICE0_SIZE U(0x00E00000) 544b232404SMaheedhar Bollapalli #define DEVICE1_BASE U(0xF9000000) 554b232404SMaheedhar Bollapalli #define DEVICE1_SIZE U(0x00800000) 56ab36d097STejas Patel 57ab36d097STejas Patel /******************************************************************************* 58ab36d097STejas Patel * IRQ constants 59ab36d097STejas Patel ******************************************************************************/ 60*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_IRQ_SEC_PHY_TIMER 29U 617ff4d4fbSPrasad Kummari #define ARM_IRQ_SEC_PHY_TIMER 29 62ab36d097STejas Patel 63ab36d097STejas Patel /******************************************************************************* 645a8ffeabSTejas Patel * CCI-400 related constants 655a8ffeabSTejas Patel ******************************************************************************/ 668a131571SSaivardhan Thatikonda #define PLAT_ARM_CCI_BASE UL(0xFD000000) 674b232404SMaheedhar Bollapalli #define PLAT_ARM_CCI_SIZE U(0x00100000) 685a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4 695a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 5 705a8ffeabSTejas Patel 715a8ffeabSTejas Patel /******************************************************************************* 72ab36d097STejas Patel * UART related constants 73ab36d097STejas Patel ******************************************************************************/ 744b232404SMaheedhar Bollapalli #define VERSAL_UART0_BASE U(0xFF000000) 754b232404SMaheedhar Bollapalli #define VERSAL_UART1_BASE U(0xFF010000) 76ab36d097STejas Patel 77d629db24SPrasad Kummari #if CONSOLE_IS(pl011) || CONSOLE_IS(dtb) 7804a48335SMichal Simek # define UART_BASE VERSAL_UART0_BASE 79d533f58dSPrasad Kummari # define UART_TYPE CONSOLE_PL011 8004a48335SMichal Simek #elif CONSOLE_IS(pl011_1) 8104a48335SMichal Simek # define UART_BASE VERSAL_UART1_BASE 82d533f58dSPrasad Kummari # define UART_TYPE CONSOLE_PL011 83d533f58dSPrasad Kummari #elif CONSOLE_IS(dcc) 84d533f58dSPrasad Kummari # define UART_BASE 0x0 85d533f58dSPrasad Kummari # define UART_TYPE CONSOLE_DCC 866d413983SMichal Simek #elif CONSOLE_IS(none) 876d413983SMichal Simek # define UART_TYPE CONSOLE_NONE 88ab36d097STejas Patel #else 89ab36d097STejas Patel # error "invalid VERSAL_CONSOLE" 90ab36d097STejas Patel #endif 91ab36d097STejas Patel 92d533f58dSPrasad Kummari /* Runtime console */ 93d533f58dSPrasad Kummari #if defined(CONSOLE_RUNTIME) 94d533f58dSPrasad Kummari #if RT_CONSOLE_IS(pl011) || RT_CONSOLE_IS(dtb) 95d533f58dSPrasad Kummari # define RT_UART_BASE VERSAL_UART0_BASE 96d533f58dSPrasad Kummari # define RT_UART_TYPE CONSOLE_PL011 97d533f58dSPrasad Kummari #elif RT_CONSOLE_IS(pl011_1) 98d533f58dSPrasad Kummari # define RT_UART_BASE VERSAL_UART1_BASE 99d533f58dSPrasad Kummari # define RT_UART_TYPE CONSOLE_PL011 100d533f58dSPrasad Kummari #elif RT_CONSOLE_IS(dcc) 101d533f58dSPrasad Kummari # define RT_UART_BASE 0x0 102d533f58dSPrasad Kummari # define RT_UART_TYPE CONSOLE_DCC 103d533f58dSPrasad Kummari #else 104d533f58dSPrasad Kummari # error "invalid CONSOLE_RUNTIME" 105d533f58dSPrasad Kummari #endif 106d533f58dSPrasad Kummari #endif 107d533f58dSPrasad Kummari 108ab36d097STejas Patel /******************************************************************************* 109ab36d097STejas Patel * Platform related constants 110ab36d097STejas Patel ******************************************************************************/ 11104a48335SMichal Simek #define UART_BAUDRATE 115200 112ab36d097STejas Patel 113ab36d097STejas Patel /* Access control register defines */ 114*1cbf6c4aSSaivardhan Thatikonda #define ACTLR_EL3_L2ACTLR_BIT (1U << 6) 115*1cbf6c4aSSaivardhan Thatikonda #define ACTLR_EL3_CPUACTLR_BIT (1U << 0) 116ab36d097STejas Patel 117ab36d097STejas Patel /* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/ 1184b232404SMaheedhar Bollapalli #define CRF_BASE U(0xFD1A0000) 1194b232404SMaheedhar Bollapalli #define CRF_SIZE U(0x00600000) 120ab36d097STejas Patel 121ab36d097STejas Patel /* CRF registers and bitfields */ 122ab36d097STejas Patel #define CRF_RST_APU (CRF_BASE + 0X00000300) 123ab36d097STejas Patel 124*1cbf6c4aSSaivardhan Thatikonda #define CRF_RST_APU_ACPU_RESET (1U << 0) 125*1cbf6c4aSSaivardhan Thatikonda #define CRF_RST_APU_ACPU_PWRON_RESET (1U << 10) 126ab36d097STejas Patel 127f000744eSPrasad Kummari /* IOU SCNTRS */ 128f000744eSPrasad Kummari #define IOU_SCNTRS_BASE U(0xFF140000) 129*1cbf6c4aSSaivardhan Thatikonda #define IOU_SCNTRS_BASE_FREQ_OFFSET 0x20U 130f000744eSPrasad Kummari 131ab36d097STejas Patel /* APU registers and bitfields */ 1325d1c211eSAbhyuday Godhasara #define FPD_APU_BASE 0xFD5C0000U 1335d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0 (FPD_APU_BASE + 0x20U) 1345d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_L_0 (FPD_APU_BASE + 0x40U) 1355d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_H_0 (FPD_APU_BASE + 0x44U) 1365d1c211eSAbhyuday Godhasara #define FPD_APU_PWRCTL (FPD_APU_BASE + 0x90U) 137ab36d097STejas Patel 1385d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0_VINITHI_SHIFT 8U 1395d1c211eSAbhyuday Godhasara #define APU_0_PWRCTL_CPUPWRDWNREQ_MASK 1U 1405d1c211eSAbhyuday Godhasara #define APU_1_PWRCTL_CPUPWRDWNREQ_MASK 2U 141ab36d097STejas Patel 14231ce893eSVenkatesh Yadav Abbarapu /* PMC registers and bitfields */ 1435d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_BASE 0xF1110000U 1445d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_GLOB_GEN_STORAGE4 (PMC_GLOBAL_BASE + 0x40U) 14531ce893eSVenkatesh Yadav Abbarapu 146ab36d097STejas Patel #endif /* VERSAL_DEF_H */ 147