16b477063SVikram Kanigiri /* 2af6491f8SAntonio Nino Diaz * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. 36b477063SVikram Kanigiri * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 56b477063SVikram Kanigiri */ 66b477063SVikram Kanigiri 7af6491f8SAntonio Nino Diaz #ifndef TZC_COMMON_H 8af6491f8SAntonio Nino Diaz #define TZC_COMMON_H 9af6491f8SAntonio Nino Diaz 10*09d40e0eSAntonio Nino Diaz #include <lib/utils_def.h> 116b477063SVikram Kanigiri 126b477063SVikram Kanigiri /* 136b477063SVikram Kanigiri * Offset of core registers from the start of the base of configuration 146b477063SVikram Kanigiri * registers for each region. 156b477063SVikram Kanigiri */ 166b477063SVikram Kanigiri 176b477063SVikram Kanigiri /* ID Registers */ 18af6491f8SAntonio Nino Diaz #define PID0_OFF U(0xfe0) 19af6491f8SAntonio Nino Diaz #define PID1_OFF U(0xfe4) 20af6491f8SAntonio Nino Diaz #define PID2_OFF U(0xfe8) 21af6491f8SAntonio Nino Diaz #define PID3_OFF U(0xfec) 22af6491f8SAntonio Nino Diaz #define PID4_OFF U(0xfd0) 23af6491f8SAntonio Nino Diaz #define CID0_OFF U(0xff0) 24af6491f8SAntonio Nino Diaz #define CID1_OFF U(0xff4) 25af6491f8SAntonio Nino Diaz #define CID2_OFF U(0xff8) 26af6491f8SAntonio Nino Diaz #define CID3_OFF U(0xffc) 276b477063SVikram Kanigiri 286b477063SVikram Kanigiri /* 296b477063SVikram Kanigiri * What type of action is expected when an access violation occurs. 306b477063SVikram Kanigiri * The memory requested is returned as zero. But we can also raise an event to 316b477063SVikram Kanigiri * let the system know it happened. 326b477063SVikram Kanigiri * We can raise an interrupt(INT) and/or cause an exception(ERR). 336b477063SVikram Kanigiri * TZC_ACTION_NONE - No interrupt, no Exception 346b477063SVikram Kanigiri * TZC_ACTION_ERR - No interrupt, raise exception -> sync external 356b477063SVikram Kanigiri * data abort 366b477063SVikram Kanigiri * TZC_ACTION_INT - Raise interrupt, no exception 376b477063SVikram Kanigiri * TZC_ACTION_ERR_INT - Raise interrupt, raise exception -> sync 386b477063SVikram Kanigiri * external data abort 396b477063SVikram Kanigiri */ 40af6491f8SAntonio Nino Diaz #define TZC_ACTION_NONE U(0) 41af6491f8SAntonio Nino Diaz #define TZC_ACTION_ERR U(1) 42af6491f8SAntonio Nino Diaz #define TZC_ACTION_INT U(2) 43af6491f8SAntonio Nino Diaz #define TZC_ACTION_ERR_INT (TZC_ACTION_ERR | TZC_ACTION_INT) 44af6491f8SAntonio Nino Diaz 45af6491f8SAntonio Nino Diaz /* Bit positions of TZC_ACTION registers */ 46af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_SHIFT 0 47af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_MASK U(0x3) 48af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_LOWOK U(0x0) 49af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_LOWERR U(0x1) 50af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_HIGHOK U(0x2) 51af6491f8SAntonio Nino Diaz #define TZC_ACTION_RV_HIGHERR U(0x3) 526b477063SVikram Kanigiri 536b477063SVikram Kanigiri /* 546b477063SVikram Kanigiri * Controls secure access to a region. If not enabled secure access is not 556b477063SVikram Kanigiri * allowed to region. 566b477063SVikram Kanigiri */ 57af6491f8SAntonio Nino Diaz #define TZC_REGION_S_NONE U(0) 58af6491f8SAntonio Nino Diaz #define TZC_REGION_S_RD U(1) 59af6491f8SAntonio Nino Diaz #define TZC_REGION_S_WR U(2) 60af6491f8SAntonio Nino Diaz #define TZC_REGION_S_RDWR (TZC_REGION_S_RD | TZC_REGION_S_WR) 61af6491f8SAntonio Nino Diaz 62af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_S_RD_SHIFT 30 63af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_S_WR_SHIFT 31 64af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_F_EN_SHIFT 0 65af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_SEC_SHIFT 30 66af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_S_RD_MASK U(0x1) 67af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_S_WR_MASK U(0x1) 68af6491f8SAntonio Nino Diaz #define TZC_REGION_ATTR_SEC_MASK U(0x3) 69af6491f8SAntonio Nino Diaz 70af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_WR_EN_SHIFT 16 71af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_RD_EN_SHIFT 0 72af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_ID_MASK U(0xf) 73af6491f8SAntonio Nino Diaz 74af6491f8SAntonio Nino Diaz /* Macros for allowing Non-Secure access to a region based on NSAID */ 75af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_RD(nsaid) \ 76f21c6321SAntonio Nino Diaz ((U(1) << ((nsaid) & TZC_REGION_ACCESS_ID_MASK)) << \ 77af6491f8SAntonio Nino Diaz TZC_REGION_ACCESS_RD_EN_SHIFT) 78af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_WR(nsaid) \ 79f21c6321SAntonio Nino Diaz ((U(1) << ((nsaid) & TZC_REGION_ACCESS_ID_MASK)) << \ 80af6491f8SAntonio Nino Diaz TZC_REGION_ACCESS_WR_EN_SHIFT) 81af6491f8SAntonio Nino Diaz #define TZC_REGION_ACCESS_RDWR(nsaid) \ 82af6491f8SAntonio Nino Diaz (TZC_REGION_ACCESS_RD(nsaid) | \ 83af6491f8SAntonio Nino Diaz TZC_REGION_ACCESS_WR(nsaid)) 84af6491f8SAntonio Nino Diaz 85af6491f8SAntonio Nino Diaz /* Returns offset of registers to program for a given region no */ 86af6491f8SAntonio Nino Diaz #define TZC_REGION_OFFSET(region_size, region_no) \ 87af6491f8SAntonio Nino Diaz ((region_size) * (region_no)) 88af6491f8SAntonio Nino Diaz 89af6491f8SAntonio Nino Diaz #endif /* TZC_COMMON_H */ 90