diff --git a/drivers/soc/qcom/smcinvoke.c b/drivers/soc/qcom/smcinvoke.c index 3d9d3799f3f4..77e2503e2b13 100644 --- a/drivers/soc/qcom/smcinvoke.c +++ b/drivers/soc/qcom/smcinvoke.c @@ -827,9 +827,17 @@ static void process_kernel_obj(void *buf, size_t buf_len) { struct smcinvoke_tzcb_req *cb_req = buf; - cb_req->result = (cb_req->hdr.op == OBJECT_OP_MAP_REGION) ? - smcinvoke_map_mem_region(buf, buf_len) : - OBJECT_ERROR_INVALID; + switch (cb_req->hdr.op) { + case OBJECT_OP_MAP_REGION: + cb_req->result = smcinvoke_map_mem_region(buf, buf_len); + break; + case OBJECT_OP_YIELD: + cb_req->result = OBJECT_OK; + break; + default: + cb_req->result = OBJECT_ERROR_INVALID; + break; + } } static void process_mem_obj(void *buf, size_t buf_len) diff --git a/drivers/soc/qcom/smcinvoke_object.h b/drivers/soc/qcom/smcinvoke_object.h index 175a7946b732..09972e43067c 100644 --- a/drivers/soc/qcom/smcinvoke_object.h +++ b/drivers/soc/qcom/smcinvoke_object.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */ #ifndef __SMCINVOKE_OBJECT_H #define __SMCINVOKE_OBJECT_H @@ -16,6 +16,7 @@ #define OBJECT_OP_RELEASE (OBJECT_OP_METHOD_MASK - 0) #define OBJECT_OP_RETAIN (OBJECT_OP_METHOD_MASK - 1) #define OBJECT_OP_MAP_REGION 0 +#define OBJECT_OP_YIELD 1 #define OBJECT_COUNTS_MAX_BI 0xF #define OBJECT_COUNTS_MAX_BO 0xF