GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)

This commit is contained in:
lai
2026-09-06 03:52:57 +08:00
commit b1928b41c0
21813 changed files with 4413081 additions and 0 deletions
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef QTISECLIB_CB_INTERFACE_H
#define QTISECLIB_CB_INTERFACE_H
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <qtiseclib_defs.h>
/* Standard Library API's */
void *qtiseclib_cb_memcpy(void *dst, const void *src, size_t len);
int qtiseclib_cb_strcmp(const char *s1, const char *s2);
void *qtiseclib_cb_memset(void *s, int c, size_t n);
void *qtiseclib_cb_memmove(void *dest, const void *src, size_t n);
#define QTISECLIB_CB_ERROR(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_ERROR, __VA_ARGS__)
#define QTISECLIB_CB_NOTICE(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_NOTICE, __VA_ARGS__)
#define QTISECLIB_CB_WARN(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_WARNING, __VA_ARGS__)
#define QTISECLIB_CB_INFO(...) qtiseclib_cb_log(QTISECLIB_LOG_LEVEL_INFO, __VA_ARGS__)
void qtiseclib_cb_log(unsigned int loglvl, const char *fmt, ...);
void qtiseclib_cb_spin_lock(qtiseclib_cb_spinlock_t *lock);
void qtiseclib_cb_spin_unlock(qtiseclib_cb_spinlock_t *lock);
unsigned int qtiseclib_cb_plat_my_core_pos(void);
int qtiseclib_cb_plat_core_pos_by_mpidr(u_register_t mpidr);
unsigned int qtiseclib_cb_plat_my_cluster_pos(void);
/* GIC platform wrappers */
void qtiseclib_cb_gic_pcpu_init(void);
void qtiseclib_cb_ic_raise_sgi(int sgi_num, u_register_t target);
void qtiseclib_cb_set_spi_routing(unsigned int id, unsigned int irm,
u_register_t target);
/* Crash reporting api's wrappers */
void qtiseclib_cb_switch_console_to_crash_state(void);
void qtiseclib_cb_udelay(uint32_t usec);
void qtiseclib_cb_console_flush(void);
#if QTI_SDI_BUILD
int qtiseclib_cb_mmap_remove_dynamic_region(uintptr_t base_va, size_t size);
int qtiseclib_cb_mmap_add_dynamic_region(unsigned long long base_pa,
size_t size,
qtiseclib_mmap_attr_t attr);
void qtiseclib_cb_flush_dcache_all(void);
void qtiseclib_cb_get_ns_ctx(qtiseclib_dbg_a64_ctxt_regs_type *ns_ctx);
#endif
#endif /* QTISECLIB_CB_INTERFACE_H */
@@ -0,0 +1,104 @@
/*
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef QTISECLIB_DEFS_H
#define QTISECLIB_DEFS_H
#include <stdint.h>
#ifndef u_register_t
typedef uintptr_t u_register_t;
#endif
/*
* Different Log Level supported in qtiseclib.
* TODO: Currently no filtering done on QTISECLIB logs.
*/
#define QTISECLIB_LOG_LEVEL_NONE 0
#define QTISECLIB_LOG_LEVEL_ERROR 10
#define QTISECLIB_LOG_LEVEL_NOTICE 20
#define QTISECLIB_LOG_LEVEL_WARNING 30
#define QTISECLIB_LOG_LEVEL_INFO 40
#define QTISECLIB_LOG_LEVEL_VERBOSE 50
#define QTI_GICV3_IRM_PE 0
#define QTI_GICV3_IRM_ANY 1
/* Common interrupt number/ID defs. */
#define QTISECLIB_INT_ID_RESET_SGI (0xf)
#define QTISECLIB_INT_ID_CPU_WAKEUP_SGI (0x8)
#define QTISECLIB_INT_INVALID_INT_NUM (0xFFFFFFFFU)
typedef struct qtiseclib_cb_spinlock {
volatile uint32_t lock;
} qtiseclib_cb_spinlock_t;
#if QTI_SDI_BUILD
/* External CPU Dump Structure - 64 bit EL */
typedef struct {
uint64_t x0;
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint64_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
uint64_t x18;
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
uint64_t x23;
uint64_t x24;
uint64_t x25;
uint64_t x26;
uint64_t x27;
uint64_t x28;
uint64_t x29;
uint64_t x30;
uint64_t pc;
uint64_t currentEL;
uint64_t sp_el3;
uint64_t elr_el3;
uint64_t spsr_el3;
uint64_t sp_el2;
uint64_t elr_el2;
uint64_t spsr_el2;
uint64_t sp_el1;
uint64_t elr_el1;
uint64_t spsr_el1;
uint64_t sp_el0;
uint64_t __reserved1;
uint64_t __reserved2;
uint64_t __reserved3;
uint64_t __reserved4;
uint64_t __reserved5;
uint64_t __reserved6;
uint64_t __reserved7;
uint64_t __reserved8;
} qtiseclib_dbg_a64_ctxt_regs_type;
typedef enum qtiseclib_mmap_attr_s {
QTISECLIB_MAP_NS_RO_XN_DATA = 1,
QTISECLIB_MAP_RW_XN_NC_DATA = 2,
QTISECLIB_MAP_RW_XN_DATA = 3,
} qtiseclib_mmap_attr_t;
#endif /* QTI_SDI_BUILD */
#endif /* QTISECLIB_DEFS_H */
@@ -0,0 +1,99 @@
/*
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef QTISECLIB_INTERFACE_H
#define QTISECLIB_INTERFACE_H
#include <stdbool.h>
#include <stdint.h>
#include <qtiseclib_defs.h>
typedef struct memprot_ipa_info_s {
uint64_t mem_addr;
uint64_t mem_size;
} memprot_info_t;
typedef struct memprot_dst_vm_perm_info_s {
uint32_t dst_vm;
uint32_t dst_vm_perm;
uint64_t ctx;
uint32_t ctx_size;
} memprot_dst_vm_perm_info_t;
/*
* QTISECLIB Published API's.
*/
/*
* Assembly API's
*/
/*
* CPUSS common reset handler for all CPU wake up (both cold & warm boot).
* Executes on all core. This API assume serialization across CPU
* already taken care before invoking.
*
* Clobbers: x0 - x17, x30
*/
void qtiseclib_cpuss_reset_asm(uint32_t bl31_cold_boot_state);
/*
* Execute CPU (Kryo4 gold) specific reset handler / system initialization.
* This takes care of executing required CPU errata's.
*
* Clobbers: x0 - x16
*/
void qtiseclib_kryo4_gold_reset_asm(void);
/*
* Execute CPU (Kryo46 gold) specific reset handler / system initialization.
* This takes care of executing required CPU errata's.
*
* Clobbers: x0 - x16
*/
void qtiseclib_kryo6_gold_reset_asm(void);
/*
* Execute CPU (Kryo4 silver) specific reset handler / system initialization.
* This takes care of executing required CPU errata's.
*
* Clobbers: x0 - x16
*/
void qtiseclib_kryo4_silver_reset_asm(void);
/*
* Execute CPU (Kryo6 silver) specific reset handler / system initialization.
* This takes care of executing required CPU errata's.
*
* Clobbers: x0 - x16
*/
void qtiseclib_kryo6_silver_reset_asm(void);
/*
* C Api's
*/
void qtiseclib_bl31_platform_setup(void);
void qtiseclib_invoke_isr(uint32_t irq, void *handle);
void qtiseclib_panic(void);
int qtiseclib_mem_assign(const memprot_info_t *mem_info,
uint32_t mem_info_list_cnt,
const uint32_t *source_vm_list,
uint32_t src_vm_list_cnt,
const memprot_dst_vm_perm_info_t *dest_vm_list,
uint32_t dst_vm_list_cnt);
int qtiseclib_psci_init(uintptr_t warmboot_entry);
int qtiseclib_psci_node_power_on(u_register_t mpidr);
void qtiseclib_psci_node_on_finish(const uint8_t *states);
void qtiseclib_psci_cpu_standby(uint8_t pwr_state);
void qtiseclib_psci_node_power_off(const uint8_t *states);
void qtiseclib_psci_node_suspend(const uint8_t *states);
void qtiseclib_psci_node_suspend_finish(const uint8_t *states);
void qtiseclib_disable_cluster_coherency(uint8_t state);
#endif /* QTISECLIB_INTERFACE_H */
@@ -0,0 +1,35 @@
/*
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef QTISECLIB_DEFS_PLAT_H
#define QTISECLIB_DEFS_PLAT_H
#define QTISECLIB_PLAT_CLUSTER_COUNT 1
#define QTISECLIB_PLAT_CORE_COUNT 8
#define BL31_BASE 0x80b00000
#define BL31_SIZE 0x00100000
/* Chipset specific secure interrupt number/ID defs. */
#define QTISECLIB_INT_ID_SEC_WDOG_BARK (0x204)
#define QTISECLIB_INT_ID_NON_SEC_WDOG_BITE (0x21)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CLT_SEC (0xE6)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CLT_NONSEC (0xE7)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CFG_SEC (0xE8)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CFG_NONSEC (0xE9)
#define QTISECLIB_INT_ID_XPU_SEC (0xE3)
#define QTISECLIB_INT_ID_XPU_NON_SEC (0xE4)
#define QTISECLIB_INT_ID_A2_NOC_ERROR (0x194)
#define QTISECLIB_INT_ID_CONFIG_NOC_ERROR (0xE2)
#define QTISECLIB_INT_ID_DC_NOC_ERROR (0x122)
#define QTISECLIB_INT_ID_MEM_NOC_ERROR (0x6C)
#define QTISECLIB_INT_ID_SYSTEM_NOC_ERROR (0xC6)
#define QTISECLIB_INT_ID_MMSS_NOC_ERROR (0xBA)
#endif /* QTISECLIB_DEFS_PLAT_H */
@@ -0,0 +1,45 @@
/*
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef __QTISECLIB_DEFS_PLAT_H__
#define __QTISECLIB_DEFS_PLAT_H__
#define QTISECLIB_PLAT_CLUSTER_COUNT 1
#define QTISECLIB_PLAT_CORE_COUNT 8
#define BL31_BASE 0xC0000000
#define BL31_SIZE 0x00100000
/*----------------------------------------------------------------------------*/
/* AOP CMD DB address space for mapping */
/*----------------------------------------------------------------------------*/
#define QTI_AOP_CMD_DB_BASE 0x80860000
#define QTI_AOP_CMD_DB_SIZE 0x00020000
/* Chipset specific secure interrupt number/ID defs. */
#define QTISECLIB_INT_ID_SEC_WDOG_BARK (0x204)
#define QTISECLIB_INT_ID_NON_SEC_WDOG_BITE (0x21)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CLT_SEC (0xE6)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CLT_NONSEC (0xE7)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CFG_SEC (0xE8)
#define QTISECLIB_INT_ID_VMIDMT_ERR_CFG_NONSEC (0xE9)
#define QTISECLIB_INT_ID_XPU_SEC (0xE3)
#define QTISECLIB_INT_ID_XPU_NON_SEC (0xE4)
//NOC INterrupt
#define QTISECLIB_INT_ID_A1_NOC_ERROR (0xC9)
#define QTISECLIB_INT_ID_A2_NOC_ERROR (0xEA)
#define QTISECLIB_INT_ID_CONFIG_NOC_ERROR (0xE2)
#define QTISECLIB_INT_ID_DC_NOC_ERROR (0x122)
#define QTISECLIB_INT_ID_MEM_NOC_ERROR (0x6C)
#define QTISECLIB_INT_ID_SYSTEM_NOC_ERROR (0xC8)
#define QTISECLIB_INT_ID_MMSS_NOC_ERROR (0xBA)
#define QTISECLIB_INT_ID_LPASS_AGNOC_ERROR (0x143)
#define QTISECLIB_INT_ID_NSP_NOC_ERROR (0x1CE)
#endif /* __QTISECLIB_DEFS_PLAT_H__ */