1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2020, The Linux Foundation. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #include <stdbool.h> 8*91f16700Schasinglulu #include <stdint.h> 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <common/debug.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu #include <qtiseclib_defs.h> 13*91f16700Schasinglulu #include <qtiseclib_interface.h> 14*91f16700Schasinglulu 15*91f16700Schasinglulu /* 16*91f16700Schasinglulu * This file contains dummy implementation of QTISECLIB Published API's. 17*91f16700Schasinglulu * which will be used to compile PLATFORM successfully when 18*91f16700Schasinglulu * qtiseclib is not available 19*91f16700Schasinglulu */ 20*91f16700Schasinglulu 21*91f16700Schasinglulu /* 22*91f16700Schasinglulu * CPUSS common reset handler for all CPU wake up (both cold & warm boot). 23*91f16700Schasinglulu * Executes on all core. This API assume serialization across CPU 24*91f16700Schasinglulu * already taken care before invoking. 25*91f16700Schasinglulu * 26*91f16700Schasinglulu * Clobbers: x0 - x17, x30 27*91f16700Schasinglulu */ 28*91f16700Schasinglulu void qtiseclib_cpuss_reset_asm(uint32_t bl31_cold_boot_state) 29*91f16700Schasinglulu { 30*91f16700Schasinglulu } 31*91f16700Schasinglulu 32*91f16700Schasinglulu /* 33*91f16700Schasinglulu * Execute CPU (Kryo4 gold) specific reset handler / system initialization. 34*91f16700Schasinglulu * This takes care of executing required CPU errata's. 35*91f16700Schasinglulu * 36*91f16700Schasinglulu * Clobbers: x0 - x16 37*91f16700Schasinglulu */ 38*91f16700Schasinglulu void qtiseclib_kryo4_gold_reset_asm(void) 39*91f16700Schasinglulu { 40*91f16700Schasinglulu } 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* 43*91f16700Schasinglulu * Execute CPU (Kryo4 silver) specific reset handler / system initialization. 44*91f16700Schasinglulu * This takes care of executing required CPU errata's. 45*91f16700Schasinglulu * 46*91f16700Schasinglulu * Clobbers: x0 - x16 47*91f16700Schasinglulu */ 48*91f16700Schasinglulu void qtiseclib_kryo4_silver_reset_asm(void) 49*91f16700Schasinglulu { 50*91f16700Schasinglulu } 51*91f16700Schasinglulu 52*91f16700Schasinglulu /* 53*91f16700Schasinglulu * Execute CPU (Kryo4 gold) specific reset handler / system initialization. 54*91f16700Schasinglulu * This takes care of executing required CPU errata's. 55*91f16700Schasinglulu * 56*91f16700Schasinglulu * Clobbers: x0 - x16 57*91f16700Schasinglulu */ 58*91f16700Schasinglulu void qtiseclib_kryo6_gold_reset_asm(void) 59*91f16700Schasinglulu { 60*91f16700Schasinglulu } 61*91f16700Schasinglulu 62*91f16700Schasinglulu 63*91f16700Schasinglulu void qtiseclib_kryo6_silver_reset_asm(void) 64*91f16700Schasinglulu { 65*91f16700Schasinglulu } 66*91f16700Schasinglulu 67*91f16700Schasinglulu /* 68*91f16700Schasinglulu * C Api's 69*91f16700Schasinglulu */ 70*91f16700Schasinglulu void qtiseclib_bl31_platform_setup(void) 71*91f16700Schasinglulu { 72*91f16700Schasinglulu ERROR("Please use QTISECLIB_PATH while building TF-A\n"); 73*91f16700Schasinglulu ERROR("Please refer docs/plat/qti.rst for more details.\n"); 74*91f16700Schasinglulu panic(); 75*91f16700Schasinglulu } 76*91f16700Schasinglulu 77*91f16700Schasinglulu void qtiseclib_invoke_isr(uint32_t irq, void *handle) 78*91f16700Schasinglulu { 79*91f16700Schasinglulu } 80*91f16700Schasinglulu 81*91f16700Schasinglulu void qtiseclib_panic(void) 82*91f16700Schasinglulu { 83*91f16700Schasinglulu } 84*91f16700Schasinglulu 85*91f16700Schasinglulu int 86*91f16700Schasinglulu qtiseclib_mem_assign(const memprot_info_t *mem_info, 87*91f16700Schasinglulu uint32_t mem_info_list_cnt, 88*91f16700Schasinglulu const uint32_t *source_vm_list, 89*91f16700Schasinglulu uint32_t src_vm_list_cnt, 90*91f16700Schasinglulu const memprot_dst_vm_perm_info_t *dest_vm_list, 91*91f16700Schasinglulu uint32_t dst_vm_list_cnt) 92*91f16700Schasinglulu { 93*91f16700Schasinglulu return 0; 94*91f16700Schasinglulu } 95*91f16700Schasinglulu 96*91f16700Schasinglulu int qtiseclib_psci_init(uintptr_t warmboot_entry) 97*91f16700Schasinglulu { 98*91f16700Schasinglulu return 0; 99*91f16700Schasinglulu } 100*91f16700Schasinglulu 101*91f16700Schasinglulu int qtiseclib_psci_node_power_on(u_register_t mpidr) 102*91f16700Schasinglulu { 103*91f16700Schasinglulu return 0; 104*91f16700Schasinglulu } 105*91f16700Schasinglulu 106*91f16700Schasinglulu void qtiseclib_psci_node_on_finish(const uint8_t *states) 107*91f16700Schasinglulu { 108*91f16700Schasinglulu } 109*91f16700Schasinglulu 110*91f16700Schasinglulu void qtiseclib_psci_cpu_standby(uint8_t pwr_state) 111*91f16700Schasinglulu { 112*91f16700Schasinglulu } 113*91f16700Schasinglulu 114*91f16700Schasinglulu void qtiseclib_psci_node_power_off(const uint8_t *states) 115*91f16700Schasinglulu { 116*91f16700Schasinglulu } 117*91f16700Schasinglulu 118*91f16700Schasinglulu void qtiseclib_psci_node_suspend(const uint8_t *states) 119*91f16700Schasinglulu { 120*91f16700Schasinglulu } 121*91f16700Schasinglulu 122*91f16700Schasinglulu void qtiseclib_psci_node_suspend_finish(const uint8_t *states) 123*91f16700Schasinglulu { 124*91f16700Schasinglulu } 125*91f16700Schasinglulu 126*91f16700Schasinglulu void qtiseclib_disable_cluster_coherency(uint8_t state) 127*91f16700Schasinglulu { 128*91f16700Schasinglulu } 129*91f16700Schasinglulu 130