xref: /optee_os/core/include/drivers/openedges_omc.h (revision c1e657096ec2f9ad6a373ac3265600252689933e)
1*c1e65709SSungmin Han /* SPDX-License-Identifier: BSD-2-Clause */
2*c1e65709SSungmin Han /*
3*c1e65709SSungmin Han  * Copyright (c) 2024, Telechips Inc.
4*c1e65709SSungmin Han  */
5*c1e65709SSungmin Han 
6*c1e65709SSungmin Han #ifndef __DRIVERS_OPENEDGES_OMC_H
7*c1e65709SSungmin Han #define __DRIVERS_OPENEDGES_OMC_H
8*c1e65709SSungmin Han 
9*c1e65709SSungmin Han #include <types_ext.h>
10*c1e65709SSungmin Han #include <util.h>
11*c1e65709SSungmin Han 
12*c1e65709SSungmin Han #define OMC_FLAG_RELATIVE_ADDR	BIT(0)
13*c1e65709SSungmin Han 
14*c1e65709SSungmin Han enum omc_action {
15*c1e65709SSungmin Han 	OMC_ACTION_NONE = 0,
16*c1e65709SSungmin Han 	OMC_ACTION_ERR,
17*c1e65709SSungmin Han 	OMC_ACTION_INT,
18*c1e65709SSungmin Han 	OMC_ACTION_ERR_INT
19*c1e65709SSungmin Han };
20*c1e65709SSungmin Han 
21*c1e65709SSungmin Han struct omc_region_config {
22*c1e65709SSungmin Han 	uint32_t filters;
23*c1e65709SSungmin Han 	uint64_t base;
24*c1e65709SSungmin Han 	uint64_t top;
25*c1e65709SSungmin Han 	uint32_t ns_device_access;
26*c1e65709SSungmin Han 	uint32_t flags;
27*c1e65709SSungmin Han };
28*c1e65709SSungmin Han 
29*c1e65709SSungmin Han void omc_init(vaddr_t base, uint32_t size, uint8_t num);
30*c1e65709SSungmin Han void omc_configure_region(uint8_t region, const struct omc_region_config *cfg);
31*c1e65709SSungmin Han void omc_set_action(enum omc_action action);
32*c1e65709SSungmin Han 
33*c1e65709SSungmin Han void omc_fail_dump(uint8_t filter);
34*c1e65709SSungmin Han void omc_int_clear(uint8_t filter);
35*c1e65709SSungmin Han 
36*c1e65709SSungmin Han #endif /* __DRIVERS_OPENEDGES_OMC_H */
37