diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile index f678b8055598..16a080bdec9b 100644 --- a/drivers/firmware/Makefile +++ b/drivers/firmware/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o obj-$(CONFIG_QCOM_SCM) += _qcom_scm.o -_qcom_scm-y += qcom_scm.o qcom_scm-smc.o qcom_smc.o +_qcom_scm-y += qcom_scm.o qcom_scm-smc.o _qcom_scm-$(CONFIG_QTEE_SHM_BRIDGE) += qtee_shmbridge.o obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o diff --git a/drivers/firmware/qcom_scm-smc.c b/drivers/firmware/qcom_scm-smc.c index aceeeb41aad0..70639ddf7234 100644 --- a/drivers/firmware/qcom_scm-smc.c +++ b/drivers/firmware/qcom_scm-smc.c @@ -1915,7 +1915,8 @@ int __qcom_scm_invoke_callback_response(struct device *dev, phys_addr_t out_buf, return ret; } -int __qcom_scm_qseecom_do(u32 cmd_id, struct scm_desc *desc, bool retry) +int __qcom_scm_qseecom_do(struct device *dev, u32 cmd_id, struct scm_desc *desc, + bool retry) { int _ret; struct qcom_scm_desc _desc; @@ -1927,9 +1928,9 @@ int __qcom_scm_qseecom_do(u32 cmd_id, struct scm_desc *desc, bool retry) _desc.arginfo = desc->arginfo; if (retry) - _ret = qcom_scm_call(NULL, &_desc); + _ret = qcom_scm_call(dev, &_desc); else - _ret = qcom_scm_call_noretry(NULL, &_desc); + _ret = qcom_scm_call_noretry(dev, &_desc); memcpy(desc->ret, &_desc.res, sizeof(_desc.res)); diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index c14e09e1a94f..b2ea07d127c5 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "qcom_scm.h" #include "qtee_shmbridge_internal.h" @@ -895,6 +896,20 @@ int qcom_scm_invoke_callback_response(phys_addr_t out_buf, out_buf_size, result, response_type, data); } +int qcom_scm_qseecom_call(u32 cmd_id, struct scm_desc *desc) +{ + return __qcom_scm_qseecom_do(__scm ? __scm->dev : NULL, cmd_id, desc, + true); +} +EXPORT_SYMBOL(qcom_scm_qseecom_call); + +int qcom_scm_qseecom_call_noretry(u32 cmd_id, struct scm_desc *desc) +{ + return __qcom_scm_qseecom_do(__scm ? __scm->dev : NULL, cmd_id, desc, + false); +} +EXPORT_SYMBOL(qcom_scm_qseecom_call_noretry); + /** * qcom_scm_is_available() - Checks if SCM is available */ diff --git a/drivers/firmware/qcom_scm.h b/drivers/firmware/qcom_scm.h index 87c5520f6f06..2c578b0123cc 100644 --- a/drivers/firmware/qcom_scm.h +++ b/drivers/firmware/qcom_scm.h @@ -218,6 +218,9 @@ extern int __qcom_scm_camera_protect_all(struct device *dev, uint32_t protect, extern int __qcom_scm_camera_protect_phy_lanes(struct device *dev, bool protect, u64 regmask); +extern int __qcom_scm_qseecom_do(struct device *dev, u32 cmd_id, + struct scm_desc *desc, bool retry); + // TOS Services and Function IDs #define QCOM_SCM_SVC_QSEELOG 0x01 #define QCOM_SCM_QSEELOG_REGISTER 0x06 diff --git a/drivers/firmware/qcom_smc.c b/drivers/firmware/qcom_smc.c deleted file mode 100644 index cf39ee557a2f..000000000000 --- a/drivers/firmware/qcom_smc.c +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2019 The Linux Foundation. All rights reserved. - */ -#include -#include -#include - -int qcom_scm_qseecom_call(u32 cmd_id, struct scm_desc *desc) -{ - return __qcom_scm_qseecom_do(cmd_id, desc, true); -} -EXPORT_SYMBOL(qcom_scm_qseecom_call); - -int qcom_scm_qseecom_call_noretry(u32 cmd_id, struct scm_desc *desc) -{ - return __qcom_scm_qseecom_do(cmd_id, desc, false); -} -EXPORT_SYMBOL(qcom_scm_qseecom_call_noretry); diff --git a/include/soc/qcom/qseecom_scm.h b/include/soc/qcom/qseecom_scm.h index 557e7f4bc625..fd6cb4573fad 100644 --- a/include/soc/qcom/qseecom_scm.h +++ b/include/soc/qcom/qseecom_scm.h @@ -75,8 +75,6 @@ struct scm_desc { u64 ret[MAX_SCM_RETS]; }; -extern int __qcom_scm_qseecom_do(u32 cmd_id, struct scm_desc *desc, bool retry); - #if IS_ENABLED(CONFIG_QCOM_SCM) int qcom_scm_qseecom_call(u32 cmd_id, struct scm_desc *desc);