1*fedadb64SJorge Ramirez-Ortiz // SPDX-License-Identifier: BSD-2-Clause 2*fedadb64SJorge Ramirez-Ortiz /* 3*fedadb64SJorge Ramirez-Ortiz * Copyright (c) 2026, Qualcomm Technologies, Inc. and/or its subsidiaries. 4*fedadb64SJorge Ramirez-Ortiz */ 5*fedadb64SJorge Ramirez-Ortiz 6*fedadb64SJorge Ramirez-Ortiz #include <io.h> 7*fedadb64SJorge Ramirez-Ortiz #include <mm/core_mmu.h> 8*fedadb64SJorge Ramirez-Ortiz #include <stdint.h> 9*fedadb64SJorge Ramirez-Ortiz #include <string.h> 10*fedadb64SJorge Ramirez-Ortiz 11*fedadb64SJorge Ramirez-Ortiz #include "dsp_boot.h" 12*fedadb64SJorge Ramirez-Ortiz #include "pas.h" 13*fedadb64SJorge Ramirez-Ortiz 14*fedadb64SJorge Ramirez-Ortiz TEE_Result lpass_fw_start(struct qcom_pas_data *data) 15*fedadb64SJorge Ramirez-Ortiz { 16*fedadb64SJorge Ramirez-Ortiz const struct dsp_fw_boot_regs *reg = dsp_fw_get_boot_regs(data->pas_id); 17*fedadb64SJorge Ramirez-Ortiz vaddr_t base = io_pa_or_va(&data->base, data->size); 18*fedadb64SJorge Ramirez-Ortiz 19*fedadb64SJorge Ramirez-Ortiz if (!reg || !base) 20*fedadb64SJorge Ramirez-Ortiz return TEE_ERROR_GENERIC; 21*fedadb64SJorge Ramirez-Ortiz 22*fedadb64SJorge Ramirez-Ortiz io_write32(base + reg->lpass.efuse_evb_sel, 0); 23*fedadb64SJorge Ramirez-Ortiz 24*fedadb64SJorge Ramirez-Ortiz return dsp_fw_start(data, reg); 25*fedadb64SJorge Ramirez-Ortiz } 26*fedadb64SJorge Ramirez-Ortiz 27*fedadb64SJorge Ramirez-Ortiz TEE_Result lpass_fw_shutdown(struct qcom_pas_data *data __unused) 28*fedadb64SJorge Ramirez-Ortiz { 29*fedadb64SJorge Ramirez-Ortiz return TEE_ERROR_NOT_IMPLEMENTED; 30*fedadb64SJorge Ramirez-Ortiz } 31