qseecom : Add support for fuse syscall
Add changes to support syscall to return fuse configuration on the device. Also rename function to improve redability. Change-Id: Idec01fec75a5dd6a86ad6dc319d18129c4ec2740 Signed-off-by: Monika Singh <monising@codeaurora.org>
This commit is contained in:
parent
e168b52f6b
commit
d9858f6b11
@ -2,7 +2,7 @@
|
||||
/*
|
||||
* QTI Secure Execution Environment Communicator (QSEECOM) driver
|
||||
*
|
||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "QSEECOM: %s: " fmt, __func__
|
||||
@ -877,6 +877,23 @@ static int qseecom_scm_call2(uint32_t svc_id, uint32_t tz_cmd_id,
|
||||
ret = __qseecom_scm_call2_locked(smc_id, &desc);
|
||||
break;
|
||||
}
|
||||
case QSEOS_DIAG_FUSE_REQ_CMD:
|
||||
case QSEOS_DIAG_FUSE_REQ_RSP_CMD: {
|
||||
struct qseecom_client_send_fsm_diag_req *req;
|
||||
|
||||
smc_id = TZ_SECBOOT_GET_FUSE_INFO;
|
||||
desc.arginfo = TZ_SECBOOT_GET_FUSE_INFO_PARAM_ID;
|
||||
|
||||
req = (struct qseecom_client_send_fsm_diag_req *) req_buf;
|
||||
desc.args[0] = req->req_ptr;
|
||||
desc.args[1] = req->req_len;
|
||||
desc.args[2] = req->rsp_ptr;
|
||||
desc.args[3] = req->rsp_len;
|
||||
__qseecom_reentrancy_check_if_no_app_blocked(smc_id);
|
||||
ret = __qseecom_scm_call2_locked(smc_id, &desc);
|
||||
break;
|
||||
|
||||
}
|
||||
case QSEOS_GENERATE_KEY: {
|
||||
u32 tzbuflen = PAGE_ALIGN(sizeof
|
||||
(struct qseecom_key_generate_ireq) -
|
||||
@ -3309,7 +3326,7 @@ static int __qseecom_process_rpmb_svc_cmd(struct qseecom_dev_handle *data_ptr,
|
||||
static int __qseecom_process_fsm_key_svc_cmd(
|
||||
struct qseecom_dev_handle *data_ptr,
|
||||
struct qseecom_send_svc_cmd_req *req_ptr,
|
||||
struct qseecom_client_send_fsm_key_req *send_svc_ireq_ptr)
|
||||
struct qseecom_client_send_fsm_diag_req *send_svc_ireq_ptr)
|
||||
{
|
||||
int ret = 0;
|
||||
uint32_t reqd_len_sb_in = 0;
|
||||
@ -3327,7 +3344,6 @@ static int __qseecom_process_fsm_key_svc_cmd(
|
||||
reqd_len_sb_in, data_ptr->client.sb_length);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
send_svc_ireq_ptr->qsee_cmd_id = req_ptr->cmd_id;
|
||||
send_svc_ireq_ptr->req_len = req_ptr->cmd_req_len;
|
||||
send_svc_ireq_ptr->rsp_ptr = (uint32_t)(__qseecom_uvirt_to_kphys(
|
||||
@ -3431,7 +3447,7 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
||||
{
|
||||
int ret = 0;
|
||||
struct qseecom_client_send_service_ireq send_svc_ireq;
|
||||
struct qseecom_client_send_fsm_key_req send_fsm_key_svc_ireq;
|
||||
struct qseecom_client_send_fsm_diag_req send_fsm_diag_svc_ireq;
|
||||
struct qseecom_command_scm_resp resp;
|
||||
struct qseecom_send_svc_cmd_req req;
|
||||
void *send_req_ptr;
|
||||
@ -3469,8 +3485,11 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
||||
case QSEOS_FSM_OEM_FUSE_READ_ROW:
|
||||
case QSEOS_FSM_ENCFS_REQ_CMD:
|
||||
case QSEOS_FSM_ENCFS_REQ_RSP_CMD:
|
||||
send_req_ptr = &send_fsm_key_svc_ireq;
|
||||
req_buf_size = sizeof(send_fsm_key_svc_ireq);
|
||||
case QSEOS_DIAG_FUSE_REQ_CMD:
|
||||
case QSEOS_DIAG_FUSE_REQ_RSP_CMD:
|
||||
|
||||
send_req_ptr = &send_fsm_diag_svc_ireq;
|
||||
req_buf_size = sizeof(send_fsm_diag_svc_ireq);
|
||||
if (__qseecom_process_fsm_key_svc_cmd(data, &req,
|
||||
send_req_ptr))
|
||||
return -EINVAL;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef __QSEECOMI_H_
|
||||
@ -71,7 +71,8 @@ enum qseecom_qceos_cmd_id {
|
||||
QSEOS_FSM_OEM_FUSE_READ_ROW = 0x302,
|
||||
QSEOS_FSM_ENCFS_REQ_CMD = 0x403,
|
||||
QSEOS_FSM_ENCFS_REQ_RSP_CMD = 0x404,
|
||||
|
||||
QSEOS_DIAG_FUSE_REQ_CMD = 0x501,
|
||||
QSEOS_DIAG_FUSE_REQ_RSP_CMD = 0x502,
|
||||
QSEOS_CMD_MAX = 0xEFFFFFFF
|
||||
};
|
||||
|
||||
@ -321,7 +322,7 @@ struct qseecom_qteec_64bit_ireq {
|
||||
uint32_t sglistinfo_len;
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct qseecom_client_send_fsm_key_req {
|
||||
struct qseecom_client_send_fsm_diag_req {
|
||||
uint32_t qsee_cmd_id;
|
||||
uint32_t req_ptr;
|
||||
uint32_t req_len;
|
||||
@ -341,6 +342,7 @@ struct qseecom_continue_blocked_request_ireq {
|
||||
#define TZ_SVC_EXTERNAL 3 /* External image loading */
|
||||
#define TZ_SVC_RPMB 4 /* RPMB */
|
||||
#define TZ_SVC_KEYSTORE 5 /* Keystore management */
|
||||
#define TZ_SVC_FUSE 8 /* Fuse services */
|
||||
#define TZ_SVC_ES 16 /* Enterprise Security */
|
||||
#define TZ_SVC_MDTP 18 /* Mobile Device Theft */
|
||||
|
||||
@ -503,6 +505,16 @@ struct qseecom_continue_blocked_request_ireq {
|
||||
#define TZ_OS_UNLOAD_SERVICES_IMAGE_ID_PARAM_ID \
|
||||
TZ_SYSCALL_CREATE_PARAM_ID_0
|
||||
|
||||
#define TZ_SECBOOT_GET_FUSE_INFO \
|
||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_SIP, TZ_SVC_FUSE, 0x09)
|
||||
|
||||
#define TZ_SECBOOT_GET_FUSE_INFO_PARAM_ID \
|
||||
TZ_SYSCALL_CREATE_PARAM_ID_4(\
|
||||
TZ_SYSCALL_PARAM_TYPE_BUF_RO, \
|
||||
TZ_SYSCALL_PARAM_TYPE_VAL, \
|
||||
TZ_SYSCALL_PARAM_TYPE_BUF_RW, \
|
||||
TZ_SYSCALL_PARAM_TYPE_VAL)
|
||||
|
||||
#define TZ_OS_REGISTER_LISTENER_ID \
|
||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_QSEE_OS, TZ_SVC_LISTENER, 0x01)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user