mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
msm: added support for SOTA notification
Added Support for SOTA notification Check status from HLOS Change-Id: I1bf58c0ee0dce8a5b1351812c1e9813438d0c0a8 Signed-off-by: Vishvesh Deobhankar <vdeobhan@codeaurora.org>
This commit is contained in:
parent
11a49af2d6
commit
b77cd850e0
@ -847,6 +847,13 @@ static int qseecom_scm_call2(uint32_t svc_id, uint32_t tz_cmd_id,
|
|||||||
ret = __qseecom_scm_call2_locked(smc_id, &desc);
|
ret = __qseecom_scm_call2_locked(smc_id, &desc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case QSEOS_SOTA_NOTIFICATION_CHECK_STATUS: {
|
||||||
|
smc_id = TZ_SOTA_UPDATE_NOTIFICATION_ID;
|
||||||
|
desc.arginfo = TZ_SOTA_UPDATE_NOTIFICATION_ID_PARAM_ID;
|
||||||
|
__qseecom_reentrancy_check_if_no_app_blocked(smc_id);
|
||||||
|
ret = __qseecom_scm_call2_locked(smc_id, &desc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case QSEOS_GENERATE_KEY: {
|
case QSEOS_GENERATE_KEY: {
|
||||||
u32 tzbuflen = PAGE_ALIGN(sizeof
|
u32 tzbuflen = PAGE_ALIGN(sizeof
|
||||||
(struct qseecom_key_generate_ireq) -
|
(struct qseecom_key_generate_ireq) -
|
||||||
@ -3153,6 +3160,42 @@ int __qseecom_process_rpmb_svc_cmd(struct qseecom_dev_handle *data_ptr,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __qseecom_process_sota_svc_cmd(struct qseecom_dev_handle *data_ptr,
|
||||||
|
struct qseecom_send_svc_cmd_req *req_ptr,
|
||||||
|
struct qseecom_client_send_service_ireq *send_svc_ireq_ptr)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
void *req_buf = NULL;
|
||||||
|
|
||||||
|
if ((req_ptr == NULL) || (send_svc_ireq_ptr == NULL)) {
|
||||||
|
pr_err("Error with pointer: req_ptr = %pK, send_svc_ptr = %pK\n",
|
||||||
|
req_ptr, send_svc_ireq_ptr);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clients need to ensure req_buf is at base offset of shared buffer */
|
||||||
|
if ((uintptr_t)req_ptr->cmd_req_buf !=
|
||||||
|
data_ptr->client.user_virt_sb_base) {
|
||||||
|
pr_err("cmd buf not pointing to base offset of shared buffer\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data_ptr->client.sb_length <
|
||||||
|
sizeof(struct qseecom_rpmb_provision_key)) {
|
||||||
|
pr_err("shared buffer is too small to hold key type\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
req_buf = data_ptr->client.sb_virt;
|
||||||
|
|
||||||
|
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(
|
||||||
|
data_ptr, (uintptr_t)req_ptr->resp_buf));
|
||||||
|
send_svc_ireq_ptr->rsp_len = req_ptr->resp_len;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int __qseecom_process_fsm_key_svc_cmd(struct qseecom_dev_handle *data_ptr,
|
int __qseecom_process_fsm_key_svc_cmd(struct qseecom_dev_handle *data_ptr,
|
||||||
struct qseecom_send_svc_cmd_req *req_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_key_req *send_svc_ireq_ptr)
|
||||||
@ -3296,7 +3339,6 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
data->type = QSEECOM_SECURE_SERVICE;
|
data->type = QSEECOM_SECURE_SERVICE;
|
||||||
|
|
||||||
switch (req.cmd_id) {
|
switch (req.cmd_id) {
|
||||||
case QSEOS_RPMB_PROVISION_KEY_COMMAND:
|
case QSEOS_RPMB_PROVISION_KEY_COMMAND:
|
||||||
case QSEOS_RPMB_ERASE_COMMAND:
|
case QSEOS_RPMB_ERASE_COMMAND:
|
||||||
@ -3307,6 +3349,13 @@ static int qseecom_send_service_cmd(struct qseecom_dev_handle *data,
|
|||||||
send_req_ptr))
|
send_req_ptr))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
break;
|
break;
|
||||||
|
case QSEOS_SOTA_NOTIFICATION_CHECK_STATUS:
|
||||||
|
send_req_ptr = &send_svc_ireq;
|
||||||
|
req_buf_size = sizeof(send_svc_ireq);
|
||||||
|
if (__qseecom_process_sota_svc_cmd(data, &req,
|
||||||
|
send_req_ptr))
|
||||||
|
return -EINVAL;
|
||||||
|
break;
|
||||||
case QSEOS_FSM_LTEOTA_REQ_CMD:
|
case QSEOS_FSM_LTEOTA_REQ_CMD:
|
||||||
case QSEOS_FSM_LTEOTA_REQ_RSP_CMD:
|
case QSEOS_FSM_LTEOTA_REQ_RSP_CMD:
|
||||||
case QSEOS_FSM_IKE_REQ_CMD:
|
case QSEOS_FSM_IKE_REQ_CMD:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 and
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
@ -69,6 +69,7 @@ enum qseecom_qceos_cmd_id {
|
|||||||
QSEOS_TEE_OPEN_SESSION_WHITELIST = 0x1D,
|
QSEOS_TEE_OPEN_SESSION_WHITELIST = 0x1D,
|
||||||
QSEOS_TEE_INVOKE_COMMAND_WHITELIST = 0x1E,
|
QSEOS_TEE_INVOKE_COMMAND_WHITELIST = 0x1E,
|
||||||
QSEOS_LISTENER_DATA_RSP_COMMAND_WHITELIST = 0x1F,
|
QSEOS_LISTENER_DATA_RSP_COMMAND_WHITELIST = 0x1F,
|
||||||
|
QSEOS_SOTA_NOTIFICATION_CHECK_STATUS = 0x20,
|
||||||
QSEOS_FSM_LTEOTA_REQ_CMD = 0x109,
|
QSEOS_FSM_LTEOTA_REQ_CMD = 0x109,
|
||||||
QSEOS_FSM_LTEOTA_REQ_RSP_CMD = 0x110,
|
QSEOS_FSM_LTEOTA_REQ_RSP_CMD = 0x110,
|
||||||
QSEOS_FSM_IKE_REQ_CMD = 0x203,
|
QSEOS_FSM_IKE_REQ_CMD = 0x203,
|
||||||
@ -349,6 +350,9 @@ struct qseecom_continue_blocked_request_ireq {
|
|||||||
#define TZ_SVC_ES 16 /* Enterprise Security */
|
#define TZ_SVC_ES 16 /* Enterprise Security */
|
||||||
#define TZ_SVC_MDTP 18 /* Mobile Device Theft */
|
#define TZ_SVC_MDTP 18 /* Mobile Device Theft */
|
||||||
|
|
||||||
|
/** SIP service call groups */
|
||||||
|
#define TZ_SVC_FUSE 8 /* Fuse services. */
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
* Owning Entity IDs (defined by ARM SMC doc)
|
* Owning Entity IDs (defined by ARM SMC doc)
|
||||||
* ---------------------------------------------------------------------------
|
* ---------------------------------------------------------------------------
|
||||||
@ -587,6 +591,12 @@ struct qseecom_continue_blocked_request_ireq {
|
|||||||
#define TZ_OS_RPMB_CHECK_PROV_STATUS_ID_PARAM_ID \
|
#define TZ_OS_RPMB_CHECK_PROV_STATUS_ID_PARAM_ID \
|
||||||
TZ_SYSCALL_CREATE_PARAM_ID_0
|
TZ_SYSCALL_CREATE_PARAM_ID_0
|
||||||
|
|
||||||
|
#define TZ_SOTA_UPDATE_NOTIFICATION_ID \
|
||||||
|
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_SIP, TZ_SVC_FUSE, 0x07)
|
||||||
|
|
||||||
|
#define TZ_SOTA_UPDATE_NOTIFICATION_ID_PARAM_ID \
|
||||||
|
TZ_SYSCALL_CREATE_PARAM_ID_0
|
||||||
|
|
||||||
#define TZ_OS_KS_GEN_KEY_ID \
|
#define TZ_OS_KS_GEN_KEY_ID \
|
||||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_QSEE_OS, TZ_SVC_KEYSTORE, 0x01)
|
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_QSEE_OS, TZ_SVC_KEYSTORE, 0x01)
|
||||||
|
|
||||||
@ -728,4 +738,6 @@ struct qseecom_continue_blocked_request_ireq {
|
|||||||
TZ_SYSCALL_PARAM_TYPE_VAL, TZ_SYSCALL_PARAM_TYPE_VAL, \
|
TZ_SYSCALL_PARAM_TYPE_VAL, TZ_SYSCALL_PARAM_TYPE_VAL, \
|
||||||
TZ_SYSCALL_PARAM_TYPE_BUF_RW, TZ_SYSCALL_PARAM_TYPE_VAL)
|
TZ_SYSCALL_PARAM_TYPE_BUF_RW, TZ_SYSCALL_PARAM_TYPE_VAL)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __QSEECOMI_H_ */
|
#endif /* __QSEECOMI_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user