1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2018 NXP 4 */ 5 6 #ifndef SC_RM_API_H 7 #define SC_RM_API_H 8 9 #include <asm/arch/sci/types.h> 10 11 /* Defines for type widths */ 12 #define SC_RM_PARTITION_W 5U /* Width of sc_rm_pt_t */ 13 #define SC_RM_MEMREG_W 6U /* Width of sc_rm_mr_t */ 14 #define SC_RM_DID_W 4U /* Width of sc_rm_did_t */ 15 #define SC_RM_SID_W 6U /* Width of sc_rm_sid_t */ 16 #define SC_RM_SPA_W 2U /* Width of sc_rm_spa_t */ 17 #define SC_RM_PERM_W 3U /* Width of sc_rm_perm_t */ 18 19 /* Defines for ALL parameters */ 20 #define SC_RM_PT_ALL ((sc_rm_pt_t)UINT8_MAX) /* All partitions */ 21 #define SC_RM_MR_ALL ((sc_rm_mr_t)UINT8_MAX) /* All memory regions */ 22 23 /* Defines for sc_rm_spa_t */ 24 #define SC_RM_SPA_PASSTHRU 0U /* Pass through (attribute driven by master) */ 25 #define SC_RM_SPA_PASSSID 1U /* Pass through and output on SID */ 26 #define SC_RM_SPA_ASSERT 2U /* Assert (force to be secure/privileged) */ 27 #define SC_RM_SPA_NEGATE 3U /* Negate (force to be non-secure/user) */ 28 29 /* Defines for sc_rm_perm_t */ 30 #define SC_RM_PERM_NONE 0U /* No access */ 31 #define SC_RM_PERM_SEC_R 1U /* Secure RO */ 32 #define SC_RM_PERM_SECPRIV_RW 2U /* Secure privilege R/W */ 33 #define SC_RM_PERM_SEC_RW 3U /* Secure R/W */ 34 #define SC_RM_PERM_NSPRIV_R 4U /* Secure R/W, non-secure privilege RO */ 35 #define SC_RM_PERM_NS_R 5U /* Secure R/W, non-secure RO */ 36 #define SC_RM_PERM_NSPRIV_RW 6U /* Secure R/W, non-secure privilege R/W */ 37 #define SC_RM_PERM_FULL 7U /* Full access */ 38 39 /* Types */ 40 41 /*! 42 * This type is used to declare a resource partition. 43 */ 44 typedef u8 sc_rm_pt_t; 45 46 /*! 47 * This type is used to declare a memory region. 48 */ 49 typedef u8 sc_rm_mr_t; 50 51 /*! 52 * This type is used to declare a resource domain ID used by the 53 * isolation HW. 54 */ 55 typedef u8 sc_rm_did_t; 56 57 /*! 58 * This type is used to declare an SMMU StreamID. 59 */ 60 typedef u16 sc_rm_sid_t; 61 62 /*! 63 * This type is a used to declare master transaction attributes. 64 */ 65 typedef u8 sc_rm_spa_t; 66 67 typedef u8 sc_rm_perm_t; 68 69 #endif /* SC_RM_API_H */ 70