1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2fe78378dSgaurav rana /* 3fe78378dSgaurav rana * Common internal memory map for some Freescale SoCs 4fe78378dSgaurav rana * 5fe78378dSgaurav rana * Copyright 2015 Freescale Semiconductor, Inc. 6fe78378dSgaurav rana */ 7fe78378dSgaurav rana 8fe78378dSgaurav rana #ifndef __FSL_SEC_MON_H 9fe78378dSgaurav rana #define __FSL_SEC_MON_H 10fe78378dSgaurav rana 11fe78378dSgaurav rana #include <common.h> 12fe78378dSgaurav rana #include <asm/io.h> 13fe78378dSgaurav rana 14fe78378dSgaurav rana #ifdef CONFIG_SYS_FSL_SEC_MON_LE 15fe78378dSgaurav rana #define sec_mon_in32(a) in_le32(a) 16fe78378dSgaurav rana #define sec_mon_out32(a, v) out_le32(a, v) 17fe78378dSgaurav rana #define sec_mon_in16(a) in_le16(a) 18fe78378dSgaurav rana #define sec_mon_clrbits32 clrbits_le32 19fe78378dSgaurav rana #define sec_mon_setbits32 setbits_le32 20fe78378dSgaurav rana #elif defined(CONFIG_SYS_FSL_SEC_MON_BE) 21fe78378dSgaurav rana #define sec_mon_in32(a) in_be32(a) 22fe78378dSgaurav rana #define sec_mon_out32(a, v) out_be32(a, v) 23fe78378dSgaurav rana #define sec_mon_in16(a) in_be16(a) 24fe78378dSgaurav rana #define sec_mon_clrbits32 clrbits_be32 25fe78378dSgaurav rana #define sec_mon_setbits32 setbits_be32 26fe78378dSgaurav rana #else 27fe78378dSgaurav rana #error Neither CONFIG_SYS_FSL_SEC_MON_LE nor CONFIG_SYS_FSL_SEC_MON_BE defined 28fe78378dSgaurav rana #endif 29fe78378dSgaurav rana 30fe78378dSgaurav rana struct ccsr_sec_mon_regs { 31fe78378dSgaurav rana u8 reserved0[0x04]; 32fe78378dSgaurav rana u32 hp_com; /* 0x04 SEC_MON_HP Command Register */ 33fe78378dSgaurav rana u8 reserved2[0x0c]; 34fe78378dSgaurav rana u32 hp_stat; /* 0x08 SEC_MON_HP Status Register */ 35fe78378dSgaurav rana }; 36fe78378dSgaurav rana 37fe78378dSgaurav rana #define HPCOMR_SW_SV 0x100 /* Security Violation bit */ 38fe78378dSgaurav rana #define HPCOMR_SW_FSV 0x200 /* Fatal Security Violation bit */ 39fe78378dSgaurav rana #define HPCOMR_SSM_ST 0x1 /* SSM_ST field in SEC_MON command */ 40b259732dSSumit Garg #define HPCOMR_SSM_ST_DIS 0x2 /* Disable Secure to Trusted State */ 41b259732dSSumit Garg #define HPCOMR_SSM_SFNS_DIS 0x4 /* Disable Soft Fail to Non-Secure */ 42fe78378dSgaurav rana #define HPSR_SSM_ST_CHECK 0x900 /* SEC_MON is in check state */ 43fe78378dSgaurav rana #define HPSR_SSM_ST_NON_SECURE 0xb00 /* SEC_MON is in non secure state */ 44fe78378dSgaurav rana #define HPSR_SSM_ST_TRUST 0xd00 /* SEC_MON is in trusted state */ 45fe78378dSgaurav rana #define HPSR_SSM_ST_SOFT_FAIL 0x300 /* SEC_MON is in soft fail state */ 46b259732dSSumit Garg #define HPSR_SSM_ST_SECURE 0xf00 /* SEC_MON is in secure state */ 47fe78378dSgaurav rana #define HPSR_SSM_ST_MASK 0xf00 /* Mask for SSM_ST field */ 48fe78378dSgaurav rana 49fe78378dSgaurav rana /* 50fe78378dSgaurav rana * SEC_MON read. This specifies the possible reads 51fe78378dSgaurav rana * from the SEC_MON 52fe78378dSgaurav rana */ 53fe78378dSgaurav rana enum { 54fe78378dSgaurav rana SEC_MON_SSM_ST, 55fe78378dSgaurav rana SEC_MON_SW_FSV, 56fe78378dSgaurav rana SEC_MON_SW_SV, 57fe78378dSgaurav rana }; 58fe78378dSgaurav rana 59b259732dSSumit Garg /* Transition SEC_MON state */ 60b259732dSSumit Garg int set_sec_mon_state(u32 state); 61fe78378dSgaurav rana 62fe78378dSgaurav rana #endif /* __FSL_SEC_MON_H */ 63