1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2020-2023, Arm Limited. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef MORELLO_DEF_H 8*91f16700Schasinglulu #define MORELLO_DEF_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu /* Non-secure SRAM MMU mapping */ 11*91f16700Schasinglulu #define MORELLO_NS_SRAM_BASE UL(0x06000000) 12*91f16700Schasinglulu #define MORELLO_NS_SRAM_SIZE UL(0x00010000) 13*91f16700Schasinglulu #define MORELLO_MAP_NS_SRAM MAP_REGION_FLAT( \ 14*91f16700Schasinglulu MORELLO_NS_SRAM_BASE, \ 15*91f16700Schasinglulu MORELLO_NS_SRAM_SIZE, \ 16*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 17*91f16700Schasinglulu 18*91f16700Schasinglulu /* SDS Firmware version defines */ 19*91f16700Schasinglulu #define MORELLO_SDS_FIRMWARE_VERSION_STRUCT_ID U(2) 20*91f16700Schasinglulu #define MORELLO_SDS_FIRMWARE_VERSION_OFFSET U(0) 21*91f16700Schasinglulu #ifdef TARGET_PLATFORM_FVP 22*91f16700Schasinglulu # define MORELLO_SDS_FIRMWARE_VERSION_SIZE U(8) 23*91f16700Schasinglulu #else 24*91f16700Schasinglulu # define MORELLO_SDS_FIRMWARE_VERSION_SIZE U(16) 25*91f16700Schasinglulu #endif 26*91f16700Schasinglulu 27*91f16700Schasinglulu /* SDS Platform information defines */ 28*91f16700Schasinglulu #define MORELLO_SDS_PLATFORM_INFO_STRUCT_ID U(8) 29*91f16700Schasinglulu #define MORELLO_SDS_PLATFORM_INFO_OFFSET U(0) 30*91f16700Schasinglulu #ifdef TARGET_PLATFORM_FVP 31*91f16700Schasinglulu # define MORELLO_SDS_PLATFORM_INFO_SIZE U(8) 32*91f16700Schasinglulu #else 33*91f16700Schasinglulu # define MORELLO_SDS_PLATFORM_INFO_SIZE U(26) 34*91f16700Schasinglulu #endif 35*91f16700Schasinglulu #define MORELLO_MAX_DDR_CAPACITY U(0x1000000000) 36*91f16700Schasinglulu #define MORELLO_MAX_REMOTE_CHIP_COUNT U(16) 37*91f16700Schasinglulu 38*91f16700Schasinglulu #define MORELLO_SCC_SERVER_MODE U(0) 39*91f16700Schasinglulu #define MORELLO_SCC_CLIENT_MODE_MASK U(1) 40*91f16700Schasinglulu #define MORELLO_SCC_C1_TAG_CACHE_EN_MASK U(4) 41*91f16700Schasinglulu #define MORELLO_SCC_C2_TAG_CACHE_EN_MASK U(8) 42*91f16700Schasinglulu 43*91f16700Schasinglulu /* Base address of non-secure SRAM where Platform information will be filled */ 44*91f16700Schasinglulu #define MORELLO_PLATFORM_INFO_BASE UL(0x06000000) 45*91f16700Schasinglulu 46*91f16700Schasinglulu /* DMC memory status registers */ 47*91f16700Schasinglulu #define MORELLO_DMC0_MEMC_STATUS_REG UL(0x4E000000) 48*91f16700Schasinglulu #define MORELLO_DMC1_MEMC_STATUS_REG UL(0x4E100000) 49*91f16700Schasinglulu 50*91f16700Schasinglulu #define MORELLO_DMC_MEMC_STATUS_MASK U(7) 51*91f16700Schasinglulu 52*91f16700Schasinglulu /* DMC memory command registers */ 53*91f16700Schasinglulu #define MORELLO_DMC0_MEMC_CMD_REG UL(0x4E000008) 54*91f16700Schasinglulu #define MORELLO_DMC1_MEMC_CMD_REG UL(0x4E100008) 55*91f16700Schasinglulu 56*91f16700Schasinglulu /* DMC capability control register */ 57*91f16700Schasinglulu #define MORELLO_DMC0_CAP_CTRL_REG UL(0x4E000D00) 58*91f16700Schasinglulu #define MORELLO_DMC1_CAP_CTRL_REG UL(0x4E100D00) 59*91f16700Schasinglulu 60*91f16700Schasinglulu /* DMC tag cache control register */ 61*91f16700Schasinglulu #define MORELLO_DMC0_TAG_CACHE_CTL UL(0x4E000D04) 62*91f16700Schasinglulu #define MORELLO_DMC1_TAG_CACHE_CTL UL(0x4E100D04) 63*91f16700Schasinglulu 64*91f16700Schasinglulu /* DMC tag cache config register */ 65*91f16700Schasinglulu #define MORELLO_DMC0_TAG_CACHE_CFG UL(0x4E000D08) 66*91f16700Schasinglulu #define MORELLO_DMC1_TAG_CACHE_CFG UL(0x4E100D08) 67*91f16700Schasinglulu 68*91f16700Schasinglulu /* DMC memory access control register */ 69*91f16700Schasinglulu #define MORELLO_DMC0_MEM_ACCESS_CTL UL(0x4E000D0C) 70*91f16700Schasinglulu #define MORELLO_DMC1_MEM_ACCESS_CTL UL(0x4E100D0C) 71*91f16700Schasinglulu 72*91f16700Schasinglulu #define MORELLO_DMC_MEM_ACCESS_DIS (1UL << 16) 73*91f16700Schasinglulu 74*91f16700Schasinglulu /* DMC memory address control register */ 75*91f16700Schasinglulu #define MORELLO_DMC0_MEM_ADDR_CTL UL(0x4E000D10) 76*91f16700Schasinglulu #define MORELLO_DMC1_MEM_ADDR_CTL UL(0x4E100D10) 77*91f16700Schasinglulu 78*91f16700Schasinglulu /* DMC memory address control 2 register */ 79*91f16700Schasinglulu #define MORELLO_DMC0_MEM_ADDR_CTL2 UL(0x4E000D14) 80*91f16700Schasinglulu #define MORELLO_DMC1_MEM_ADDR_CTL2 UL(0x4E100D14) 81*91f16700Schasinglulu 82*91f16700Schasinglulu /* DMC special control register */ 83*91f16700Schasinglulu #define MORELLO_DMC0_SPL_CTL_REG UL(0x4E000D18) 84*91f16700Schasinglulu #define MORELLO_DMC1_SPL_CTL_REG UL(0x4E100D18) 85*91f16700Schasinglulu 86*91f16700Schasinglulu /* DMC ERR0CTLR0 registers */ 87*91f16700Schasinglulu #define MORELLO_DMC0_ERR0CTLR0_REG UL(0x4E000708) 88*91f16700Schasinglulu #define MORELLO_DMC1_ERR0CTLR0_REG UL(0x4E100708) 89*91f16700Schasinglulu 90*91f16700Schasinglulu /* DMC ECC in ERR0CTLR0 register */ 91*91f16700Schasinglulu #define MORELLO_DMC_ERR0CTLR0_ECC_EN U(9) 92*91f16700Schasinglulu 93*91f16700Schasinglulu /* DMC ERR2STATUS register */ 94*91f16700Schasinglulu #define MORELLO_DMC0_ERR2STATUS_REG UL(0x4E000790) 95*91f16700Schasinglulu #define MORELLO_DMC1_ERR2STATUS_REG UL(0x4E100790) 96*91f16700Schasinglulu 97*91f16700Schasinglulu /* DMC memory commands */ 98*91f16700Schasinglulu #define MORELLO_DMC_MEMC_CMD_CONFIG U(0) 99*91f16700Schasinglulu #define MORELLO_DMC_MEMC_CMD_READY U(3) 100*91f16700Schasinglulu 101*91f16700Schasinglulu /* SDS Platform information struct definition */ 102*91f16700Schasinglulu #ifdef TARGET_PLATFORM_FVP 103*91f16700Schasinglulu /* 104*91f16700Schasinglulu * Platform information structure stored in SDS. 105*91f16700Schasinglulu * This structure holds information about platform's DDR 106*91f16700Schasinglulu * size 107*91f16700Schasinglulu * - Local DDR size in bytes, DDR memory in main board 108*91f16700Schasinglulu */ 109*91f16700Schasinglulu struct morello_plat_info { 110*91f16700Schasinglulu uint64_t local_ddr_size; 111*91f16700Schasinglulu } __packed; 112*91f16700Schasinglulu #else 113*91f16700Schasinglulu /* 114*91f16700Schasinglulu * Platform information structure stored in SDS. 115*91f16700Schasinglulu * This structure holds information about platform's DDR 116*91f16700Schasinglulu * size which is an information about multichip setup 117*91f16700Schasinglulu * - Local DDR size in bytes, DDR memory in main board 118*91f16700Schasinglulu * - Remote DDR size in bytes, DDR memory in remote board 119*91f16700Schasinglulu * - remote_chip_count 120*91f16700Schasinglulu * - multichip mode 121*91f16700Schasinglulu * - scc configuration 122*91f16700Schasinglulu * - silicon revision 123*91f16700Schasinglulu */ 124*91f16700Schasinglulu struct morello_plat_info { 125*91f16700Schasinglulu uint64_t local_ddr_size; 126*91f16700Schasinglulu uint64_t remote_ddr_size; 127*91f16700Schasinglulu uint8_t remote_chip_count; 128*91f16700Schasinglulu bool multichip_mode; 129*91f16700Schasinglulu uint32_t scc_config; 130*91f16700Schasinglulu uint32_t silicon_revision; 131*91f16700Schasinglulu } __packed; 132*91f16700Schasinglulu #endif 133*91f16700Schasinglulu 134*91f16700Schasinglulu /* SDS Firmware revision struct definition */ 135*91f16700Schasinglulu #ifdef TARGET_PLATFORM_FVP 136*91f16700Schasinglulu /* 137*91f16700Schasinglulu * Firmware revision structure stored in SDS. 138*91f16700Schasinglulu * This structure holds information about firmware versions. 139*91f16700Schasinglulu * - SCP firmware version 140*91f16700Schasinglulu * - SCP firmware commit 141*91f16700Schasinglulu */ 142*91f16700Schasinglulu struct morello_firmware_version { 143*91f16700Schasinglulu uint32_t scp_fw_ver; 144*91f16700Schasinglulu uint32_t scp_fw_commit; 145*91f16700Schasinglulu } __packed; 146*91f16700Schasinglulu #else 147*91f16700Schasinglulu /* 148*91f16700Schasinglulu * Firmware revision structure stored in SDS. 149*91f16700Schasinglulu * This structure holds information about firmware versions. 150*91f16700Schasinglulu * - SCP firmware version 151*91f16700Schasinglulu * - SCP firmware commit 152*91f16700Schasinglulu * - MCC firmware version 153*91f16700Schasinglulu * - PCC firmware version 154*91f16700Schasinglulu */ 155*91f16700Schasinglulu struct morello_firmware_version { 156*91f16700Schasinglulu uint32_t scp_fw_ver; 157*91f16700Schasinglulu uint32_t scp_fw_commit; 158*91f16700Schasinglulu uint32_t mcc_fw_ver; 159*91f16700Schasinglulu uint32_t pcc_fw_ver; 160*91f16700Schasinglulu } __packed; 161*91f16700Schasinglulu #endif 162*91f16700Schasinglulu 163*91f16700Schasinglulu /* Compile time assertions to ensure the size of structures are of the required bytes */ 164*91f16700Schasinglulu CASSERT(sizeof(struct morello_plat_info) == MORELLO_SDS_PLATFORM_INFO_SIZE, 165*91f16700Schasinglulu assert_invalid_plat_info_size); 166*91f16700Schasinglulu 167*91f16700Schasinglulu CASSERT(sizeof(struct morello_firmware_version) == MORELLO_SDS_FIRMWARE_VERSION_SIZE, 168*91f16700Schasinglulu assert_invalid_firmware_version_size); 169*91f16700Schasinglulu 170*91f16700Schasinglulu #endif /* MORELLO_DEF_H */ 171