1*5bd9c17dSSaurabh Gorecha /* 2*5bd9c17dSSaurabh Gorecha * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. 3*5bd9c17dSSaurabh Gorecha * 4*5bd9c17dSSaurabh Gorecha * SPDX-License-Identifier: BSD-3-Clause 5*5bd9c17dSSaurabh Gorecha */ 6*5bd9c17dSSaurabh Gorecha 7*5bd9c17dSSaurabh Gorecha #ifndef QTISECLIB_CB_INTERFACE_H 8*5bd9c17dSSaurabh Gorecha #define QTISECLIB_CB_INTERFACE_H 9*5bd9c17dSSaurabh Gorecha 10*5bd9c17dSSaurabh Gorecha #include <stdarg.h> 11*5bd9c17dSSaurabh Gorecha #include <stdbool.h> 12*5bd9c17dSSaurabh Gorecha #include <stddef.h> 13*5bd9c17dSSaurabh Gorecha #include <stdint.h> 14*5bd9c17dSSaurabh Gorecha 15*5bd9c17dSSaurabh Gorecha #include <qtiseclib_defs.h> 16*5bd9c17dSSaurabh Gorecha 17*5bd9c17dSSaurabh Gorecha /* Standard Library API's */ 18*5bd9c17dSSaurabh Gorecha void *qtiseclib_cb_memcpy(void *dst, const void *src, size_t len); 19*5bd9c17dSSaurabh Gorecha 20*5bd9c17dSSaurabh Gorecha #define QTISECLIB_CB_ERROR(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_ERROR, __VA_ARGS__) 21*5bd9c17dSSaurabh Gorecha #define QTISECLIB_CB_NOTICE(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_NOTICE, __VA_ARGS__) 22*5bd9c17dSSaurabh Gorecha #define QTISECLIB_CB_WARN(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_WARNING, __VA_ARGS__) 23*5bd9c17dSSaurabh Gorecha #define QTISECLIB_CB_INFO(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_INFO, __VA_ARGS__) 24*5bd9c17dSSaurabh Gorecha 25*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_log(unsigned int loglvl, const char *fmt, ...); 26*5bd9c17dSSaurabh Gorecha 27*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_spin_lock(qtiseclib_cb_spinlock_t *lock); 28*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_spin_unlock(qtiseclib_cb_spinlock_t *lock); 29*5bd9c17dSSaurabh Gorecha 30*5bd9c17dSSaurabh Gorecha unsigned int qtiseclib_cb_plat_my_core_pos(void); 31*5bd9c17dSSaurabh Gorecha int qtiseclib_cb_plat_core_pos_by_mpidr(u_register_t mpidr); 32*5bd9c17dSSaurabh Gorecha unsigned int qtiseclib_cb_plat_my_cluster_pos(void); 33*5bd9c17dSSaurabh Gorecha 34*5bd9c17dSSaurabh Gorecha /* GIC platform wrappers */ 35*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_gic_pcpu_init(void); 36*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_ic_raise_sgi(int sgi_num, u_register_t target); 37*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_set_spi_routing(unsigned int id, unsigned int irm, 38*5bd9c17dSSaurabh Gorecha u_register_t target); 39*5bd9c17dSSaurabh Gorecha /* Crash reporting api's wrappers */ 40*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_switch_console_to_crash_state(void); 41*5bd9c17dSSaurabh Gorecha 42*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_udelay(uint32_t usec); 43*5bd9c17dSSaurabh Gorecha 44*5bd9c17dSSaurabh Gorecha #if QTI_SDI_BUILD 45*5bd9c17dSSaurabh Gorecha int qtiseclib_cb_mmap_remove_dynamic_region(uintptr_t base_va, size_t size); 46*5bd9c17dSSaurabh Gorecha int qtiseclib_cb_mmap_add_dynamic_region(unsigned long long base_pa, 47*5bd9c17dSSaurabh Gorecha size_t size, 48*5bd9c17dSSaurabh Gorecha qtiseclib_mmap_attr_t attr); 49*5bd9c17dSSaurabh Gorecha 50*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_flush_dcache_all(void); 51*5bd9c17dSSaurabh Gorecha void qtiseclib_cb_get_ns_ctx(qtiseclib_dbg_a64_ctxt_regs_type *ns_ctx); 52*5bd9c17dSSaurabh Gorecha #endif 53*5bd9c17dSSaurabh Gorecha 54*5bd9c17dSSaurabh Gorecha #endif /* QTISECLIB_CB_INTERFACE_H */ 55