/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2019 MediaTek Inc. */ #ifndef __DEVAPC_PUBLIC_H__ #define __DEVAPC_PUBLIC_H__ #include enum infra_subsys_id { INFRA_SUBSYS_MD = 0, INFRA_SUBSYS_CONN, INFRA_SUBSYS_PCIE, INFRA_SUBSYS_ADSP, INFRA_SUBSYS_GCE, INFRA_SUBSYS_APMCU, INFRA_SUBSYS_GZ, DEVAPC_SUBSYS_CLKMGR, DEVAPC_SUBSYS_CLKM, DEVAPC_SUBSYS_TEST, DEVAPC_SUBSYS_RESERVED, }; enum devapc_type { DEVAPC_TYPE_INFRA = 0, DEVAPC_TYPE_INFRA1, DEVAPC_TYPE_PERI_PAR, DEVAPC_TYPE_VLP, DEVAPC_TYPE_ADSP, DEVAPC_TYPE_MMINFRA, DEVAPC_TYPE_MMUP, DEVAPC_TYPE_GPU, }; enum devapc_cb_status { DEVAPC_OK = 0, DEVAPC_NOT_KE, }; struct devapc_vio_callbacks { struct list_head list; enum infra_subsys_id id; void (*debug_dump)(void); enum devapc_cb_status (*debug_dump_adv)(uint32_t vio_addr); }; struct devapc_power_callbacks { struct list_head list; enum devapc_type type; bool (*query_power)(void); }; uint32_t devapc_vio_check(void); void dump_dbg_info(void); void register_devapc_vio_callback(struct devapc_vio_callbacks *viocb); void register_devapc_power_callback(struct devapc_power_callbacks *powercb); void devapc_catch_illegal_range(phys_addr_t phys_addr, size_t size); #endif /* __DEVAPC_PUBLIC_H__ */