/*
 * Copyright (c) 2021 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef TRUSTZONE_H_
#define TRUSTZONE_H_

/* For the I-/DTCM memory the S/NS gating is handled by the I-/DTGU block.
 * The block defines a block size depending on the size of the memory.
 * The slice between secure and nonsecure has to be on a block boundary
 * to be able to map whole respective region to its security state.
 * For MPS3 with SSE300 + U55 the block size is 0x2000.
 */

#define TZ_S_ITCM_START 0x10000000
#define TZ_S_ITCM_SIZE  0x0007c000
#define TZ_S_BRAM_START 0x11000000
#define TZ_S_BRAM_SIZE  0x001fc000
#define TZ_S_DTCM_START 0x30000000
#define TZ_S_DTCM_SIZE  0x00040000
#define TZ_S_SRAM_START 0x31000000
#define TZ_S_SRAM_SIZE  0x00100000
#define TZ_S_STACK_HEAP 0x30040000

#define TZ_NSC_START 0x111fb000
#define TZ_NSC_SIZE  0x00001000

#define TZ_NS_ITCM_START 0x0007c000
#define TZ_NS_ITCM_SIZE  0x00004000
#define TZ_NS_BRAM_START 0x011fc000
#define TZ_NS_BRAM_SIZE  0x00004000
#define TZ_NS_DTCM_START 0x20040000
#define TZ_NS_DTCM_SIZE  0x00040000
#define TZ_NS_SRAM_START 0x21100000
#define TZ_NS_SRAM_SIZE  0x00100000
#define TZ_NS_STACK_HEAP 0x20080000

/* Add separate definition for secure world to use for booting
 * non secure world.
 */
#define TZ_NS_START_VECTOR TZ_NS_ITCM_START

#ifdef TRUSTZONE_SECURE
#define ITCM_START TZ_S_ITCM_START
#define ITCM_SIZE  TZ_S_ITCM_SIZE
#define BRAM_START TZ_S_BRAM_START
#define BRAM_SIZE  TZ_S_BRAM_SIZE
#define DTCM_START TZ_S_DTCM_START
#define DTCM_SIZE  TZ_S_DTCM_SIZE
#define SRAM_START TZ_S_SRAM_START
#define SRAM_SIZE  TZ_S_SRAM_SIZE
#define STACK_HEAP TZ_S_STACK_HEAP
#else
#define ITCM_START TZ_NS_ITCM_START
#define ITCM_SIZE  TZ_NS_ITCM_SIZE
#define BRAM_START TZ_NS_BRAM_START
#define BRAM_SIZE  TZ_NS_BRAM_SIZE
#define DTCM_START TZ_NS_DTCM_START
#define DTCM_SIZE  TZ_NS_DTCM_SIZE
#define SRAM_START TZ_NS_SRAM_START
#define SRAM_SIZE  TZ_NS_SRAM_SIZE
#define STACK_HEAP TZ_NS_STACK_HEAP
#endif

#define LR_START ITCM_START
#define LR_SIZE  ITCM_SIZE

#define ITCM_TOTAL_SIZE 0x00080000
#define ITCM_ITGU       0xE001E500

#define DTCM_TOTAL_SIZE 0x00080000
#define DTCM_DTGU       0xE001E600

#define BRAM_BASE_S     0x11000000
#define BRAM_BASE_NS    0x01000000
#define BRAM_TOTAL_SIZE 0x00200000
#define BRAM_MPC        0x57000000

#define SRAM0_BASE_S  0x31000000
#define SRAM0_BASE_NS 0x21000000
#define SRAM0_SIZE    0x00200000
#define SRAM0_MPC     0x50083000

#define DDR0_BASE_S  0x70000000
#define DDR0_BASE_NS 0x60000000
#define DDR0_SIZE    0x02000000

#ifdef TRUSTZONE_BUILD
#define DDR_START DDR0_BASE_S
#else
#define DDR_START DDR0_BASE_NS
#endif
/* Separate DDRs for secure and nonsecure */
#define DDR_SIZE DDR0_SIZE

#if (S_TZ_ITCM_SIZE + TZ_NS_ITCM_SIZE) > ITCM_TOTAL_SIZE
#error Missconfigured ITCM memory
#endif

#if (S_TZ_DTCM_SIZE + TZ_NS_DTCM_SIZE) > DTCM_TOTAL_SIZE
#error Missconfigured ITCM memory
#endif

#endif // TRUSTZONE_H_
