xref: /rk3399_ARM-atf/drivers/st/rif/stm32_rifsc.c (revision 8e67e7107761bd49db01627b59ae25b29812d346)
1 /*
2  * Copyright (c) 2023-2025, STMicroelectronics - All Rights Reserved
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <assert.h>
8 #include <stdint.h>
9 
10 #include <arch_helpers.h>
11 #include <drivers/st/stm32_rifsc.h>
12 #include <drivers/st/stm32mp_rifsc_regs.h>
13 #include <dt-bindings/soc/rif.h>
14 #include <lib/mmio.h>
15 
16 #include <platform_def.h>
17 
18 void stm32_rifsc_ip_configure(int rimu_id, int rifsc_id, uint32_t param)
19 {
20 	uint32_t bit;
21 
22 	assert(rifsc_id < STM32MP25_RIFSC_MAX_ID);
23 
24 	bit = BIT(rifsc_id % U(32));
25 
26 	/* Set peripheral accesses to Secure/Privilege only */
27 	mmio_setbits_32(RIFSC_BASE + _RIFSC_RISC_SECCFGR(rifsc_id), bit);
28 	mmio_setbits_32(RIFSC_BASE + _RIFSC_RISC_PRIVCFGR(rifsc_id), bit);
29 
30 	/* Apply specific configuration to RIF master */
31 	mmio_write_32(RIFSC_BASE + _RIFSC_RIMC_ATTR(rimu_id), param);
32 }
33