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