1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2023, MediaTek Inc. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef MT_SPM_RC_API_H 8*91f16700Schasinglulu #define MT_SPM_RC_API_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <mt_spm.h> 11*91f16700Schasinglulu #include <mt_spm_cond.h> 12*91f16700Schasinglulu #include <mt_spm_constraint.h> 13*91f16700Schasinglulu #include <mt_spm_internal.h> 14*91f16700Schasinglulu 15*91f16700Schasinglulu #define SPM_RC_BITS_SET(dest, src) ({ (dest) |= (src); }) 16*91f16700Schasinglulu #define SPM_RC_BITS_CLR(dest, src) ({ (dest) &= (~src); }) 17*91f16700Schasinglulu 18*91f16700Schasinglulu int spm_rc_condition_modifier(unsigned int id, unsigned int act, 19*91f16700Schasinglulu const void *val, 20*91f16700Schasinglulu enum mt_spm_rm_rc_type dest_rc_id, 21*91f16700Schasinglulu struct mt_spm_cond_tables * const tlb); 22*91f16700Schasinglulu 23*91f16700Schasinglulu int spm_rc_constraint_status_get(unsigned int id, unsigned int type, 24*91f16700Schasinglulu unsigned int act, 25*91f16700Schasinglulu enum mt_spm_rm_rc_type dest_rc_id, 26*91f16700Schasinglulu struct constraint_status * const src, 27*91f16700Schasinglulu struct constraint_status * const dest); 28*91f16700Schasinglulu 29*91f16700Schasinglulu int spm_rc_constraint_status_set(unsigned int id, unsigned int type, 30*91f16700Schasinglulu unsigned int act, 31*91f16700Schasinglulu enum mt_spm_rm_rc_type dest_rc_id, 32*91f16700Schasinglulu struct constraint_status * const src, 33*91f16700Schasinglulu struct constraint_status * const dest); 34*91f16700Schasinglulu 35*91f16700Schasinglulu int spm_rc_constraint_valid_set(enum mt_spm_rm_rc_type id, 36*91f16700Schasinglulu enum mt_spm_rm_rc_type dest_rc_id, 37*91f16700Schasinglulu unsigned int valid, 38*91f16700Schasinglulu struct constraint_status * const dest); 39*91f16700Schasinglulu 40*91f16700Schasinglulu int spm_rc_constraint_valid_clr(enum mt_spm_rm_rc_type id, 41*91f16700Schasinglulu enum mt_spm_rm_rc_type dest_rc_id, 42*91f16700Schasinglulu unsigned int valid, 43*91f16700Schasinglulu struct constraint_status * const dest); 44*91f16700Schasinglulu 45*91f16700Schasinglulu #endif 46