1dfd5bfb0SChandni Cherukuri /* 2cc266bcdSChandni Cherukuri * Copyright (c) 2020-2023, Arm Limited. All rights reserved. 3dfd5bfb0SChandni Cherukuri * 4dfd5bfb0SChandni Cherukuri * SPDX-License-Identifier: BSD-3-Clause 5dfd5bfb0SChandni Cherukuri */ 6dfd5bfb0SChandni Cherukuri 7dfd5bfb0SChandni Cherukuri #ifndef MORELLO_DEF_H 8dfd5bfb0SChandni Cherukuri #define MORELLO_DEF_H 9dfd5bfb0SChandni Cherukuri 10dfd5bfb0SChandni Cherukuri /* Non-secure SRAM MMU mapping */ 11dfd5bfb0SChandni Cherukuri #define MORELLO_NS_SRAM_BASE UL(0x06000000) 12dfd5bfb0SChandni Cherukuri #define MORELLO_NS_SRAM_SIZE UL(0x00010000) 13dfd5bfb0SChandni Cherukuri #define MORELLO_MAP_NS_SRAM MAP_REGION_FLAT( \ 14dfd5bfb0SChandni Cherukuri MORELLO_NS_SRAM_BASE, \ 15dfd5bfb0SChandni Cherukuri MORELLO_NS_SRAM_SIZE, \ 16dfd5bfb0SChandni Cherukuri MT_DEVICE | MT_RW | MT_SECURE) 17dfd5bfb0SChandni Cherukuri 18*10fd85d8SWerner Lewis /* SDS Firmware version defines */ 19*10fd85d8SWerner Lewis #define MORELLO_SDS_FIRMWARE_VERSION_STRUCT_ID U(2) 20*10fd85d8SWerner Lewis #define MORELLO_SDS_FIRMWARE_VERSION_OFFSET U(0) 21*10fd85d8SWerner Lewis #ifdef TARGET_PLATFORM_FVP 22*10fd85d8SWerner Lewis # define MORELLO_SDS_FIRMWARE_VERSION_SIZE U(8) 23*10fd85d8SWerner Lewis #else 24*10fd85d8SWerner Lewis # define MORELLO_SDS_FIRMWARE_VERSION_SIZE U(16) 25*10fd85d8SWerner Lewis #endif 26*10fd85d8SWerner Lewis 27dfd5bfb0SChandni Cherukuri /* SDS Platform information defines */ 28dfd5bfb0SChandni Cherukuri #define MORELLO_SDS_PLATFORM_INFO_STRUCT_ID U(8) 29dfd5bfb0SChandni Cherukuri #define MORELLO_SDS_PLATFORM_INFO_OFFSET U(0) 304a7a9dafSsah01 #ifdef TARGET_PLATFORM_FVP 314a7a9dafSsah01 # define MORELLO_SDS_PLATFORM_INFO_SIZE U(8) 324a7a9dafSsah01 #else 33cc266bcdSChandni Cherukuri # define MORELLO_SDS_PLATFORM_INFO_SIZE U(26) 344a7a9dafSsah01 #endif 3542ea8d67SManoj Kumar #define MORELLO_MAX_DDR_CAPACITY U(0x1000000000) 364a7a9dafSsah01 #define MORELLO_MAX_REMOTE_CHIP_COUNT U(16) 37dfd5bfb0SChandni Cherukuri 389b8c431eSChandni Cherukuri #define MORELLO_SCC_SERVER_MODE U(0) 399b8c431eSChandni Cherukuri #define MORELLO_SCC_CLIENT_MODE_MASK U(1) 409b8c431eSChandni Cherukuri #define MORELLO_SCC_C1_TAG_CACHE_EN_MASK U(4) 419b8c431eSChandni Cherukuri #define MORELLO_SCC_C2_TAG_CACHE_EN_MASK U(8) 429b8c431eSChandni Cherukuri 43dfd5bfb0SChandni Cherukuri /* Base address of non-secure SRAM where Platform information will be filled */ 4442ea8d67SManoj Kumar #define MORELLO_PLATFORM_INFO_BASE UL(0x06000000) 45dfd5bfb0SChandni Cherukuri 462d39b397SManoj Kumar /* DMC memory status registers */ 479b8c431eSChandni Cherukuri #define MORELLO_DMC0_MEMC_STATUS_REG UL(0x4E000000) 489b8c431eSChandni Cherukuri #define MORELLO_DMC1_MEMC_STATUS_REG UL(0x4E100000) 492d39b397SManoj Kumar 502d39b397SManoj Kumar #define MORELLO_DMC_MEMC_STATUS_MASK U(7) 512d39b397SManoj Kumar 522d39b397SManoj Kumar /* DMC memory command registers */ 539b8c431eSChandni Cherukuri #define MORELLO_DMC0_MEMC_CMD_REG UL(0x4E000008) 549b8c431eSChandni Cherukuri #define MORELLO_DMC1_MEMC_CMD_REG UL(0x4E100008) 559b8c431eSChandni Cherukuri 569b8c431eSChandni Cherukuri /* DMC capability control register */ 579b8c431eSChandni Cherukuri #define MORELLO_DMC0_CAP_CTRL_REG UL(0x4E000D00) 589b8c431eSChandni Cherukuri #define MORELLO_DMC1_CAP_CTRL_REG UL(0x4E100D00) 599b8c431eSChandni Cherukuri 609b8c431eSChandni Cherukuri /* DMC tag cache control register */ 619b8c431eSChandni Cherukuri #define MORELLO_DMC0_TAG_CACHE_CTL UL(0x4E000D04) 629b8c431eSChandni Cherukuri #define MORELLO_DMC1_TAG_CACHE_CTL UL(0x4E100D04) 639b8c431eSChandni Cherukuri 649b8c431eSChandni Cherukuri /* DMC tag cache config register */ 659b8c431eSChandni Cherukuri #define MORELLO_DMC0_TAG_CACHE_CFG UL(0x4E000D08) 669b8c431eSChandni Cherukuri #define MORELLO_DMC1_TAG_CACHE_CFG UL(0x4E100D08) 679b8c431eSChandni Cherukuri 689b8c431eSChandni Cherukuri /* DMC memory access control register */ 699b8c431eSChandni Cherukuri #define MORELLO_DMC0_MEM_ACCESS_CTL UL(0x4E000D0C) 709b8c431eSChandni Cherukuri #define MORELLO_DMC1_MEM_ACCESS_CTL UL(0x4E100D0C) 719b8c431eSChandni Cherukuri 729b8c431eSChandni Cherukuri #define MORELLO_DMC_MEM_ACCESS_DIS (1UL << 16) 739b8c431eSChandni Cherukuri 749b8c431eSChandni Cherukuri /* DMC memory address control register */ 759b8c431eSChandni Cherukuri #define MORELLO_DMC0_MEM_ADDR_CTL UL(0x4E000D10) 769b8c431eSChandni Cherukuri #define MORELLO_DMC1_MEM_ADDR_CTL UL(0x4E100D10) 779b8c431eSChandni Cherukuri 789b8c431eSChandni Cherukuri /* DMC memory address control 2 register */ 799b8c431eSChandni Cherukuri #define MORELLO_DMC0_MEM_ADDR_CTL2 UL(0x4E000D14) 809b8c431eSChandni Cherukuri #define MORELLO_DMC1_MEM_ADDR_CTL2 UL(0x4E100D14) 819b8c431eSChandni Cherukuri 829b8c431eSChandni Cherukuri /* DMC special control register */ 839b8c431eSChandni Cherukuri #define MORELLO_DMC0_SPL_CTL_REG UL(0x4E000D18) 849b8c431eSChandni Cherukuri #define MORELLO_DMC1_SPL_CTL_REG UL(0x4E100D18) 852d39b397SManoj Kumar 862d39b397SManoj Kumar /* DMC ERR0CTLR0 registers */ 879b8c431eSChandni Cherukuri #define MORELLO_DMC0_ERR0CTLR0_REG UL(0x4E000708) 889b8c431eSChandni Cherukuri #define MORELLO_DMC1_ERR0CTLR0_REG UL(0x4E100708) 892d39b397SManoj Kumar 902d39b397SManoj Kumar /* DMC ECC in ERR0CTLR0 register */ 912d39b397SManoj Kumar #define MORELLO_DMC_ERR0CTLR0_ECC_EN U(9) 922d39b397SManoj Kumar 932d39b397SManoj Kumar /* DMC ERR2STATUS register */ 949b8c431eSChandni Cherukuri #define MORELLO_DMC0_ERR2STATUS_REG UL(0x4E000790) 959b8c431eSChandni Cherukuri #define MORELLO_DMC1_ERR2STATUS_REG UL(0x4E100790) 962d39b397SManoj Kumar 972d39b397SManoj Kumar /* DMC memory commands */ 982d39b397SManoj Kumar #define MORELLO_DMC_MEMC_CMD_CONFIG U(0) 992d39b397SManoj Kumar #define MORELLO_DMC_MEMC_CMD_READY U(3) 1002d39b397SManoj Kumar 101468a6016SWerner Lewis /* SDS Platform information struct definition */ 102468a6016SWerner Lewis #ifdef TARGET_PLATFORM_FVP 103468a6016SWerner Lewis /* 104468a6016SWerner Lewis * Platform information structure stored in SDS. 105468a6016SWerner Lewis * This structure holds information about platform's DDR 106468a6016SWerner Lewis * size 107468a6016SWerner Lewis * - Local DDR size in bytes, DDR memory in main board 108468a6016SWerner Lewis */ 109468a6016SWerner Lewis struct morello_plat_info { 110468a6016SWerner Lewis uint64_t local_ddr_size; 111468a6016SWerner Lewis } __packed; 112468a6016SWerner Lewis #else 113468a6016SWerner Lewis /* 114468a6016SWerner Lewis * Platform information structure stored in SDS. 115468a6016SWerner Lewis * This structure holds information about platform's DDR 116468a6016SWerner Lewis * size which is an information about multichip setup 117468a6016SWerner Lewis * - Local DDR size in bytes, DDR memory in main board 118468a6016SWerner Lewis * - Remote DDR size in bytes, DDR memory in remote board 119468a6016SWerner Lewis * - remote_chip_count 120468a6016SWerner Lewis * - multichip mode 121468a6016SWerner Lewis * - scc configuration 122468a6016SWerner Lewis * - silicon revision 123468a6016SWerner Lewis */ 124468a6016SWerner Lewis struct morello_plat_info { 125468a6016SWerner Lewis uint64_t local_ddr_size; 126468a6016SWerner Lewis uint64_t remote_ddr_size; 127468a6016SWerner Lewis uint8_t remote_chip_count; 128468a6016SWerner Lewis bool multichip_mode; 129468a6016SWerner Lewis uint32_t scc_config; 130468a6016SWerner Lewis uint32_t silicon_revision; 131468a6016SWerner Lewis } __packed; 132468a6016SWerner Lewis #endif 133468a6016SWerner Lewis 134*10fd85d8SWerner Lewis /* SDS Firmware revision struct definition */ 135*10fd85d8SWerner Lewis #ifdef TARGET_PLATFORM_FVP 136*10fd85d8SWerner Lewis /* 137*10fd85d8SWerner Lewis * Firmware revision structure stored in SDS. 138*10fd85d8SWerner Lewis * This structure holds information about firmware versions. 139*10fd85d8SWerner Lewis * - SCP firmware version 140*10fd85d8SWerner Lewis * - SCP firmware commit 141*10fd85d8SWerner Lewis */ 142*10fd85d8SWerner Lewis struct morello_firmware_version { 143*10fd85d8SWerner Lewis uint32_t scp_fw_ver; 144*10fd85d8SWerner Lewis uint32_t scp_fw_commit; 145*10fd85d8SWerner Lewis } __packed; 146*10fd85d8SWerner Lewis #else 147*10fd85d8SWerner Lewis /* 148*10fd85d8SWerner Lewis * Firmware revision structure stored in SDS. 149*10fd85d8SWerner Lewis * This structure holds information about firmware versions. 150*10fd85d8SWerner Lewis * - SCP firmware version 151*10fd85d8SWerner Lewis * - SCP firmware commit 152*10fd85d8SWerner Lewis * - MCC firmware version 153*10fd85d8SWerner Lewis * - PCC firmware version 154*10fd85d8SWerner Lewis */ 155*10fd85d8SWerner Lewis struct morello_firmware_version { 156*10fd85d8SWerner Lewis uint32_t scp_fw_ver; 157*10fd85d8SWerner Lewis uint32_t scp_fw_commit; 158*10fd85d8SWerner Lewis uint32_t mcc_fw_ver; 159*10fd85d8SWerner Lewis uint32_t pcc_fw_ver; 160*10fd85d8SWerner Lewis } __packed; 161*10fd85d8SWerner Lewis #endif 162*10fd85d8SWerner Lewis 163*10fd85d8SWerner Lewis /* Compile time assertions to ensure the size of structures are of the required bytes */ 164468a6016SWerner Lewis CASSERT(sizeof(struct morello_plat_info) == MORELLO_SDS_PLATFORM_INFO_SIZE, 165468a6016SWerner Lewis assert_invalid_plat_info_size); 166468a6016SWerner Lewis 167*10fd85d8SWerner Lewis CASSERT(sizeof(struct morello_firmware_version) == MORELLO_SDS_FIRMWARE_VERSION_SIZE, 168*10fd85d8SWerner Lewis assert_invalid_firmware_version_size); 169*10fd85d8SWerner Lewis 170dfd5bfb0SChandni Cherukuri #endif /* MORELLO_DEF_H */ 171