xref: /optee_os/core/include/drivers/stm32_shared_io.h (revision 1e1e5a4de8e934d9a626ad83d881610f2bf3485b)
1*1e1e5a4dSGatien Chevallier /* SPDX-License-Identifier: BSD-2-Clause */
2*1e1e5a4dSGatien Chevallier /*
3*1e1e5a4dSGatien Chevallier  * Copyright (c) 2022, STMicroelectronics
4*1e1e5a4dSGatien Chevallier  */
5*1e1e5a4dSGatien Chevallier 
6*1e1e5a4dSGatien Chevallier #ifndef __DRIVERS_STM32_SHARED_IO_H__
7*1e1e5a4dSGatien Chevallier #define __DRIVERS_STM32_SHARED_IO_H__
8*1e1e5a4dSGatien Chevallier 
9*1e1e5a4dSGatien Chevallier #include <stdint.h>
10*1e1e5a4dSGatien Chevallier #include <types_ext.h>
11*1e1e5a4dSGatien Chevallier 
12*1e1e5a4dSGatien Chevallier /*
13*1e1e5a4dSGatien Chevallier  * Shared registers support: common lock for accessing SoC registers
14*1e1e5a4dSGatien Chevallier  * shared between several drivers.
15*1e1e5a4dSGatien Chevallier  */
16*1e1e5a4dSGatien Chevallier void io_clrsetbits32_stm32shregs(vaddr_t va, uint32_t clr, uint32_t set);
17*1e1e5a4dSGatien Chevallier void io_mask32_stm32shregs(vaddr_t va, uint32_t value, uint32_t mask);
18*1e1e5a4dSGatien Chevallier 
io_setbits32_stm32shregs(vaddr_t va,uint32_t value)19*1e1e5a4dSGatien Chevallier static inline void io_setbits32_stm32shregs(vaddr_t va, uint32_t value)
20*1e1e5a4dSGatien Chevallier {
21*1e1e5a4dSGatien Chevallier 	io_mask32_stm32shregs(va, value, value);
22*1e1e5a4dSGatien Chevallier }
23*1e1e5a4dSGatien Chevallier 
io_clrbits32_stm32shregs(vaddr_t va,uint32_t value)24*1e1e5a4dSGatien Chevallier static inline void io_clrbits32_stm32shregs(vaddr_t va, uint32_t value)
25*1e1e5a4dSGatien Chevallier {
26*1e1e5a4dSGatien Chevallier 	io_mask32_stm32shregs(va, 0, value);
27*1e1e5a4dSGatien Chevallier }
28*1e1e5a4dSGatien Chevallier 
29*1e1e5a4dSGatien Chevallier #endif /* __DRIVERS_STM32_SHARED_IO_H__ */
30