xref: /optee_os/core/include/dt-bindings/firewall/stm32mp25-rif.h (revision 471cec144fa3a994156d0bb96aad35e9a9f8ca9d)
1e1767b3bSGatien Chevallier /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */
2e1767b3bSGatien Chevallier /*
3e1767b3bSGatien Chevallier  * Copyright (C) 2020-2024, STMicroelectronics - All Rights Reserved
4e1767b3bSGatien Chevallier  */
5e1767b3bSGatien Chevallier 
6e1767b3bSGatien Chevallier #ifndef _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H
7e1767b3bSGatien Chevallier #define _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H
8e1767b3bSGatien Chevallier 
9e1767b3bSGatien Chevallier /* RIF CIDs */
10e1767b3bSGatien Chevallier #define RIF_CID0		0x0
11e1767b3bSGatien Chevallier #define RIF_CID1		0x1
12e1767b3bSGatien Chevallier #define RIF_CID2		0x2
13e1767b3bSGatien Chevallier #define RIF_CID3		0x3
14e1767b3bSGatien Chevallier #define RIF_CID4		0x4
15e1767b3bSGatien Chevallier #define RIF_CID5		0x5
16e1767b3bSGatien Chevallier #define RIF_CID6		0x6
17e1767b3bSGatien Chevallier #define RIF_CID7		0x7
18e1767b3bSGatien Chevallier 
19e1767b3bSGatien Chevallier /* RIF semaphore list */
20e1767b3bSGatien Chevallier #define EMPTY_SEMWL		0x0
21e1767b3bSGatien Chevallier #ifdef __ASSEMBLER__
22e1767b3bSGatien Chevallier #define RIF_CID0_BF		(1 << RIF_CID0)
23e1767b3bSGatien Chevallier #define RIF_CID1_BF		(1 << RIF_CID1)
24e1767b3bSGatien Chevallier #define RIF_CID2_BF		(1 << RIF_CID2)
25e1767b3bSGatien Chevallier #define RIF_CID3_BF		(1 << RIF_CID3)
26e1767b3bSGatien Chevallier #define RIF_CID4_BF		(1 << RIF_CID4)
27e1767b3bSGatien Chevallier #define RIF_CID5_BF		(1 << RIF_CID5)
28e1767b3bSGatien Chevallier #define RIF_CID6_BF		(1 << RIF_CID6)
29e1767b3bSGatien Chevallier #define RIF_CID7_BF		(1 << RIF_CID7)
30e1767b3bSGatien Chevallier #else /* __ASSEMBLER__ */
31e1767b3bSGatien Chevallier #define RIF_CID0_BF		BIT(RIF_CID0)
32e1767b3bSGatien Chevallier #define RIF_CID1_BF		BIT(RIF_CID1)
33e1767b3bSGatien Chevallier #define RIF_CID2_BF		BIT(RIF_CID2)
34e1767b3bSGatien Chevallier #define RIF_CID3_BF		BIT(RIF_CID3)
35e1767b3bSGatien Chevallier #define RIF_CID4_BF		BIT(RIF_CID4)
36e1767b3bSGatien Chevallier #define RIF_CID5_BF		BIT(RIF_CID5)
37e1767b3bSGatien Chevallier #define RIF_CID6_BF		BIT(RIF_CID6)
38e1767b3bSGatien Chevallier #define RIF_CID7_BF		BIT(RIF_CID7)
39e1767b3bSGatien Chevallier #endif /* __ASSEMBLER__ */
40e1767b3bSGatien Chevallier 
41e1767b3bSGatien Chevallier /* RIF secure levels */
42e1767b3bSGatien Chevallier #define RIF_NSEC		0x0
43e1767b3bSGatien Chevallier #define RIF_SEC			0x1
44e1767b3bSGatien Chevallier 
45e1767b3bSGatien Chevallier /* RIF privilege levels */
46e1767b3bSGatien Chevallier #define RIF_NPRIV		0x0
47e1767b3bSGatien Chevallier #define RIF_PRIV		0x1
48e1767b3bSGatien Chevallier 
49e1767b3bSGatien Chevallier /* RIF semaphore modes */
50e1767b3bSGatien Chevallier #define RIF_SEM_DIS		0x0
51e1767b3bSGatien Chevallier #define RIF_SEM_EN		0x1
52e1767b3bSGatien Chevallier 
53e1767b3bSGatien Chevallier /* RIF CID filtering modes */
54e1767b3bSGatien Chevallier #define RIF_CFDIS		0x0
55e1767b3bSGatien Chevallier #define RIF_CFEN		0x1
56e1767b3bSGatien Chevallier 
57e1767b3bSGatien Chevallier /* RIF lock states */
58e1767b3bSGatien Chevallier #define RIF_UNLOCK		0x0
59e1767b3bSGatien Chevallier #define RIF_LOCK		0x1
60e1767b3bSGatien Chevallier 
61e1767b3bSGatien Chevallier /* Used when a field in a macro has no impact */
62e1767b3bSGatien Chevallier #define RIF_UNUSED		0x0
63e1767b3bSGatien Chevallier 
64e1767b3bSGatien Chevallier /* Most below macros aim to ease DTS files readability */
65e1767b3bSGatien Chevallier #define RIF_EXTI1_RESOURCE(x)	(x)
66e1767b3bSGatien Chevallier 
67e1767b3bSGatien Chevallier #define RIF_EXTI2_RESOURCE(x)	(x)
68e1767b3bSGatien Chevallier 
69e1767b3bSGatien Chevallier #define RIF_FMC_CTRL(x)		(x)
70e1767b3bSGatien Chevallier 
71e1767b3bSGatien Chevallier #define RIF_IOPORT_PIN(x)	(x)
72e1767b3bSGatien Chevallier 
73e1767b3bSGatien Chevallier #define RIF_HPDMA_CHANNEL(x)	(x)
74e1767b3bSGatien Chevallier 
75e1767b3bSGatien Chevallier #define RIF_IPCC_CPU1_CHANNEL(x)	((x) - 1)
76e1767b3bSGatien Chevallier 
77e1767b3bSGatien Chevallier #define RIF_IPCC_CPU2_CHANNEL(x)	(((x) - 1) + 16)
78e1767b3bSGatien Chevallier 
79e1767b3bSGatien Chevallier #define RIF_PWR_RESOURCE(x)	(x)
80e1767b3bSGatien Chevallier 
81e1767b3bSGatien Chevallier #define RIF_HSEM_RESOURCE(x)	(x)
82e1767b3bSGatien Chevallier 
83e1767b3bSGatien Chevallier /* Shareable PWR resources, RIF_PWR_RESOURCE_WIO(0) doesn't exist */
84e1767b3bSGatien Chevallier #define RIF_PWR_RESOURCE_WIO(x)	((x) + 6)
85e1767b3bSGatien Chevallier 
86e1767b3bSGatien Chevallier #define RIF_RCC_RESOURCE(x)	(x)
87e1767b3bSGatien Chevallier 
88e1767b3bSGatien Chevallier #define RIF_RTC_RESOURCE(x)	(x)
89e1767b3bSGatien Chevallier 
90e1767b3bSGatien Chevallier #define RIF_TAMP_RESOURCE(x)	(x)
91e1767b3bSGatien Chevallier 
92*471cec14SGatien Chevallier #define RIF_PER_ID_SHIFT		0
93*471cec14SGatien Chevallier #define RIF_CFEN_SHIFT			8
94*471cec14SGatien Chevallier #define RIF_SEM_EN_SHIFT		9
95*471cec14SGatien Chevallier #define RIF_SCID_SHIFT			12
96*471cec14SGatien Chevallier #define RIF_SEC_SHIFT			16
97*471cec14SGatien Chevallier #define RIF_PRIV_SHIFT			17
98*471cec14SGatien Chevallier #define RIF_LOCK_SHIFT			18
99*471cec14SGatien Chevallier #define RIF_SEML_SHIFT			24
100*471cec14SGatien Chevallier #define RIF_PERx_CID_SHIFT		8
101*471cec14SGatien Chevallier #ifndef __ASSEMBLER__
102*471cec14SGatien Chevallier #define RIF_PER_ID_MASK			GENMASK_32(7, 0)
103*471cec14SGatien Chevallier #define RIF_SCID_MASK			GENMASK_32(15, 12)
104*471cec14SGatien Chevallier #define RIF_SEC_MASK			BIT(16)
105*471cec14SGatien Chevallier #define RIF_PRIV_MASK			BIT(17)
106*471cec14SGatien Chevallier #define RIF_LOCK_MASK			BIT(18)
107*471cec14SGatien Chevallier #define RIF_SEML_MASK			GENMASK_32(31, 24)
108*471cec14SGatien Chevallier #endif
109*471cec14SGatien Chevallier 
110*471cec14SGatien Chevallier #define RIF_PERx_CID_MASK		(BIT(RIF_CFEN_SHIFT) | \
111*471cec14SGatien Chevallier 					 BIT(RIF_SEM_EN_SHIFT) | \
112*471cec14SGatien Chevallier 					 RIF_SCID_MASK | RIF_SEML_MASK)
1137071b53bSGatien Chevallier 
1147071b53bSGatien Chevallier #define RIFPROT(rifid, sem_list, lock, sec, priv, scid, sem_en, cfen) \
115*471cec14SGatien Chevallier 	(((sem_list) << RIF_SEML_SHIFT) | \
116*471cec14SGatien Chevallier 	 ((lock) << RIF_LOCK_SHIFT) | \
117*471cec14SGatien Chevallier 	 ((priv) << RIF_PRIV_SHIFT) | \
118*471cec14SGatien Chevallier 	 ((sec) << RIF_SEC_SHIFT) | \
119*471cec14SGatien Chevallier 	 ((scid) << RIF_SCID_SHIFT) | \
120*471cec14SGatien Chevallier 	 ((sem_en) << RIF_SEM_EN_SHIFT) | \
121*471cec14SGatien Chevallier 	 ((cfen) << RIF_CFEN_SHIFT) | \
122*471cec14SGatien Chevallier 	 ((rifid) << RIF_PER_ID_SHIFT))
1237071b53bSGatien Chevallier 
124e1767b3bSGatien Chevallier #endif /* _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H */
125