xref: /openbmc/u-boot/include/fsl_sec_mon.h (revision e8f80a5a)
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