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