xref: /optee_os/core/include/dt-bindings/firewall/stm32mp21-rifsc.h (revision 19bcbfd13462f5506018dffb5fc4416ab8ba31d1)
1*19bcbfd1SThomas Bourgoin /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2*19bcbfd1SThomas Bourgoin /*
3*19bcbfd1SThomas Bourgoin  * Copyright (c) 2025, STMicroelectronics
4*19bcbfd1SThomas Bourgoin  */
5*19bcbfd1SThomas Bourgoin #ifndef _DT_BINDINGS_FIREWALL_STM32MP21_RIFSC_H
6*19bcbfd1SThomas Bourgoin #define _DT_BINDINGS_FIREWALL_STM32MP21_RIFSC_H
7*19bcbfd1SThomas Bourgoin 
8*19bcbfd1SThomas Bourgoin /* RIFSC ID */
9*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM1_ID			0
10*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM2_ID			1
11*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM3_ID			2
12*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM4_ID			3
13*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM5_ID			4
14*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM6_ID			5
15*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM7_ID			6
16*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM8_ID			7
17*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM10_ID		8
18*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM11_ID		9
19*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM12_ID		10
20*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM13_ID		11
21*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM14_ID		12
22*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM15_ID		13
23*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM16_ID		14
24*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_TIM17_ID		15
25*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPTIM1_ID		17
26*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPTIM2_ID		18
27*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPTIM3_ID		19
28*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPTIM4_ID		20
29*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPTIM5_ID		21
30*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI1_ID			22
31*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI2_ID			23
32*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI3_ID			24
33*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI4_ID			25
34*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI5_ID			26
35*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPI6_ID			27
36*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SPDIFRX_ID		30
37*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_USART1_ID		31
38*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_USART2_ID		32
39*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_USART3_ID		33
40*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_UART4_ID		34
41*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_UART5_ID		35
42*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_USART6_ID		36
43*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_UART7_ID		37
44*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LPUART1_ID		40
45*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I2C1_ID			41
46*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I2C2_ID			42
47*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I2C3_ID			43
48*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SAI1_ID			49
49*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SAI2_ID			50
50*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SAI3_ID			51
51*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SAI4_ID			52
52*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_MDF1_ID			54
53*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_FDCAN_ID		56
54*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_HDP_ID			57
55*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_ADC1_ID			58
56*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_ADC2_ID			59
57*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_ETH1_ID			60
58*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_ETH2_ID			61
59*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_USBH_ID			63
60*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_OTG_HS_ID		66
61*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_DDRPERFM_ID		67
62*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_STGEN_ID		73
63*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_OCTOSPI1_ID		74
64*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SDMMC1_ID		76
65*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SDMMC2_ID		77
66*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SDMMC3_ID		78
67*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LTDC_CMN_ID		80
68*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_CSI_ID			86
69*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_DCMIPP_ID		87
70*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_DCMI_PSSI_ID		88
71*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_RNG1_ID			92
72*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_RNG2_ID			93
73*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_PKA_ID			94
74*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SAES_ID			95
75*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_HASH1_ID		96
76*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_HASH2_ID		97
77*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_CRYP1_ID		98
78*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_CRYP2_ID		99
79*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_IWDG1_ID		100
80*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_IWDG2_ID		101
81*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_IWDG3_ID		102
82*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_IWDG4_ID		103
83*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_WWDG1_ID		104
84*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_VREFBUF_ID		106
85*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_DTS_ID			107
86*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_RAMCFG_ID		108
87*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_CRC_ID			109
88*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_SERC_ID			110
89*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I3C1_ID			114
90*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I3C2_ID			115
91*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_I3C3_ID			116
92*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_ICACHE_DCACHE_ID	118
93*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LTDC_L1L2_ID		119
94*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_LTDC_L3_ID		120
95*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_OTFDEC1_ID		125
96*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_IAC_ID			127
97*19bcbfd1SThomas Bourgoin 
98*19bcbfd1SThomas Bourgoin /* RIF-aware IPs */
99*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_PWR_ID			155
100*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOA_ID		160
101*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOB_ID		161
102*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOC_ID		162
103*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOD_ID		163
104*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOE_ID		164
105*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOF_ID		165
106*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOG_ID		166
107*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOH_ID		167
108*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOI_ID		168
109*19bcbfd1SThomas Bourgoin #define STM32MP21_RIFSC_GPIOZ_ID		171
110*19bcbfd1SThomas Bourgoin 
111*19bcbfd1SThomas Bourgoin /* Global lock bindings */
112*19bcbfd1SThomas Bourgoin #define RIFSC_RIMU_GLOCK			1
113*19bcbfd1SThomas Bourgoin #define RIFSC_RISUP_GLOCK			2
114*19bcbfd1SThomas Bourgoin 
115*19bcbfd1SThomas Bourgoin /* masters ID */
116*19bcbfd1SThomas Bourgoin #define RIMU_ID_OFFSET		200
117*19bcbfd1SThomas Bourgoin #define RIMU_ID(idx)		((idx) + RIMU_ID_OFFSET)
118*19bcbfd1SThomas Bourgoin 
119*19bcbfd1SThomas Bourgoin /*
120*19bcbfd1SThomas Bourgoin  * CID selection mode
121*19bcbfd1SThomas Bourgoin  * RIF_CIDSEL_P	configuration by hardware or inherited from RISUP
122*19bcbfd1SThomas Bourgoin  * RIF_CIDSEL_M	configuration from provided RIMU data
123*19bcbfd1SThomas Bourgoin  */
124*19bcbfd1SThomas Bourgoin #define RIF_CIDSEL_P		0
125*19bcbfd1SThomas Bourgoin #define RIF_CIDSEL_M		1
126*19bcbfd1SThomas Bourgoin 
127*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_M_ID_SHIFT	0
128*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_MODE_SHIFT	10
129*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_MCID_SHIFT	12
130*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_MSEC_SHIFT	16
131*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_MPRIV_SHIFT	17
132*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_ATTRx_SHIFT	8
133*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_M_ID_MASK		GENMASK_32(7, 0)
134*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_MCID_MASK		GENMASK_32(15, 12)
135*19bcbfd1SThomas Bourgoin #define RIMUPROT_RIMC_ATTRx_MASK	(BIT(RIMUPROT_RIMC_MODE_SHIFT) | \
136*19bcbfd1SThomas Bourgoin 					 RIMUPROT_RIMC_MCID_MASK | \
137*19bcbfd1SThomas Bourgoin 					 BIT(RIMUPROT_RIMC_MSEC_SHIFT) | \
138*19bcbfd1SThomas Bourgoin 					 BIT(RIMUPROT_RIMC_MPRIV_SHIFT))
139*19bcbfd1SThomas Bourgoin 
140*19bcbfd1SThomas Bourgoin #define RIMUPROT(rimuid, mcid, msec, mpriv, mode) \
141*19bcbfd1SThomas Bourgoin 	(((rimuid) << RIMUPROT_RIMC_M_ID_SHIFT) | \
142*19bcbfd1SThomas Bourgoin 	 ((mpriv) << RIMUPROT_RIMC_MPRIV_SHIFT) | \
143*19bcbfd1SThomas Bourgoin 	 ((msec) << RIMUPROT_RIMC_MSEC_SHIFT) | \
144*19bcbfd1SThomas Bourgoin 	 ((mcid) << RIMUPROT_RIMC_MCID_SHIFT) | \
145*19bcbfd1SThomas Bourgoin 	 ((mode) << RIMUPROT_RIMC_MODE_SHIFT))
146*19bcbfd1SThomas Bourgoin 
147*19bcbfd1SThomas Bourgoin #endif /* _DT_BINDINGS_STM32_RIFSC_H */
148