blob: b11a8700e85464882e4995d454a9dea0365c6fa9 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2014, STMicroelectronics International N.V.
*/
#ifndef TZ_SSVCE_DEF_H
#define TZ_SSVCE_DEF_H
#include <util.h>
/*
* ARMv7 Secure Services library
*/
#define CPSR_OFFSET 0x00
#define STACK_INT_USAGE 0x04
/*
* tee service IDs (TODO: align with the service ID list).
* Set by NSec in R4 before SMC to request a TEE service.
*/
#define SSAPI_RET_FROM_INT_SERV 4
#define SSAPI_RET_FROM_RPC_SERV 5
/*
* TEE monitor: status returned by the routine that checks the entry
* reason (valid Service ID / secure context).
*/
#define SEC_INVALID_ENTRY 0
#define SEC_PRE_INIT_ENTRY 1
#define SEC_RET_FROM_INT_ENTRY 2
#define SEC_RET_FROM_RPC_ENTRY 3
#define SEC_NORMAL_ENTRY 4
/*
* teecore exit reason.
* Set by Secure in R4 before SMC to request a switch to NSec.
*/
#define SEC_EXIT_NORMAL 1
#define SEC_EXIT_START_EXT_CODE 2
#define SEC_EXIT_INT 3
#define SEC_EXIT_RPC_CALL 4
#define SEC_EXIT_FIRST 5
#define SEC_EXIT_DEEP_SLEEP 6
/* misc */
#define SEC_UNDEF_STACK_OFFSET 4
#define SEC_ABORT_STACK_OFFSET 12
#define SEC_ENTRY_STATUS_NOK 0
#define SEC_ENTRY_STATUS_OK 1
/*
* Outer cache iomem
*/
#define PL310_LINE_SIZE 32
#define PL310_8_WAYS 8
/* reg1 */
#define PL310_CTRL 0x100
#define PL310_AUX_CTRL 0x104
#define PL310_TAG_RAM_CTRL 0x108
#define PL310_DATA_RAM_CTRL 0x10C
/* reg7 */
#define PL310_SYNC 0x730
#define PL310_INV_BY_WAY 0x77C
#define PL310_CLEAN_BY_WAY 0x7BC
#define PL310_FLUSH_BY_WAY 0x7FC
#define PL310_INV_BY_PA 0x770
#define PL310_CLEAN_BY_PA 0x7B0
#define PL310_FLUSH_BY_PA 0x7F0
#define PL310_FLUSH_BY_INDEXWAY 0x7F8
/* reg9 */
#define PL310_DCACHE_LOCKDOWN_BASE 0x900
#define PL310_ICACHE_LOCKDOWN_BASE 0x904
/* reg12 */
#define PL310_ADDR_FILT_START 0xC00
#define PL310_ADDR_FILT_END 0xC04
/* reg15 */
#define PL310_DEBUG_CTRL 0xF40
#define PL310_PREFETCH_CTRL 0xF60
#define PL310_POWER_CTRL 0xF80
#define PL310_CTRL_ENABLE_BIT BIT32(0)
#define PL310_AUX_16WAY_BIT BIT32(16)
/*
* SCU iomem
*/
#define SCU_CTRL 0x00
#define SCU_CONFIG 0x04
#define SCU_POWER 0x08
#define SCU_INV_SEC 0x0C
#define SCU_FILT_SA 0x40
#define SCU_FILT_EA 0x44
#define SCU_SAC 0x50
#define SCU_NSAC 0x54
#define SCU_ERRATA744369 0x30
#define SCU_ACCESS_CONTROL_CPU0 BIT32(0)
#define SCU_ACCESS_CONTROL_CPU1 BIT32(1)
#define SCU_ACCESS_CONTROL_CPU2 BIT32(2)
#define SCU_ACCESS_CONTROL_CPU3 BIT32(3)
#define SCU_NSAC_SCU_SHIFT 0
#define SCU_NSAC_PTIMER_SHIFT 4
#define SCU_NSAC_GTIMER_SHIFT 8
/*
* GIC iomem
*/
#define GIC_DIST_ISR0 0x080
#define GIC_DIST_ISR1 0x084
#define GIC_DIST_IPRIO 0x400
/*
* CPU iomem
*/
#define CORE_ICC_ICCPMR 0x0004
#endif /* TZ_SSVCE_DEF_H */