Loading arch/arm64/boot/dts/qcom/sdm855.dtsi +16 −0 Original line number Diff line number Diff line Loading @@ -2419,6 +2419,22 @@ reg = <0xc3f000c 8>; }; qcom_seecom: qseecom@87900000 { compatible = "qcom,qseecom"; reg = <0x87900000 0x2200000>; reg-names = "secapp-region"; qcom,hlos-num-ce-hw-instances = <1>; qcom,hlos-ce-hw-instance = <0>; qcom,qsee-ce-hw-instance = <0>; qcom,disk-encrypt-pipe-pair = <2>; qcom,support-fde; qcom,no-clock-support; qcom,fde-key-size; qcom,appsbl-qseecom-support; qcom,commonlib64-loaded-by-uefi; qcom,qsee-reentrancy-support = <2>; }; mem_dump { compatible = "qcom,mem-dump"; memory-region = <&dump_mem>; Loading drivers/misc/qseecom.c +14 −17 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ #include "qseecom_kernel.h" #include <crypto/ice.h> #include <linux/delay.h> #include <linux/signal.h> #include <linux/compat.h> #include "compat_qseecom.h" Loading Loading @@ -1055,10 +1056,6 @@ static int qseecom_scm_call2(uint32_t svc_id, uint32_t tz_cmd_id, static int qseecom_scm_call(u32 svc_id, u32 tz_cmd_id, const void *cmd_buf, size_t cmd_len, void *resp_buf, size_t resp_len) { if (!is_scm_armv8()) return scm_call(svc_id, tz_cmd_id, cmd_buf, cmd_len, resp_buf, resp_len); else return qseecom_scm_call2(svc_id, tz_cmd_id, cmd_buf, resp_buf); } Loading Loading @@ -8454,9 +8451,19 @@ static int qseecom_query_ce_info(struct qseecom_dev_handle *data, * Check whitelist feature, and if TZ feature version is < 1.0.0, * then whitelist feature is not supported. */ #define GET_FEAT_VERSION_CMD 3 static int qseecom_check_whitelist_feature(void) { int version = scm_get_feat_version(FEATURE_ID_WHITELIST); struct scm_desc desc = {0}; int version = 0; int ret = 0; desc.args[0] = FEATURE_ID_WHITELIST; desc.arginfo = SCM_ARGS(1); ret = scm_call2(SCM_SIP_FNID(SCM_SVC_INFO, GET_FEAT_VERSION_CMD), &desc); if (!ret) version = desc.ret[0]; return version >= MAKE_WHITELIST_VERSION(1, 0, 0); } Loading @@ -8467,7 +8474,6 @@ static int qseecom_probe(struct platform_device *pdev) int i; uint32_t feature = 10; struct device *class_dev; struct msm_bus_scale_pdata *qseecom_platform_support = NULL; struct qseecom_command_scm_resp resp; struct qseecom_ce_info_use *pce_info_use = NULL; Loading Loading @@ -8636,8 +8642,6 @@ static int qseecom_probe(struct platform_device *pdev) qseecom.ce_drv.ce_bus_clk = qclk->ce_bus_clk; } qseecom_platform_support = (struct msm_bus_scale_pdata *) msm_bus_cl_get_pdata(pdev); if (qseecom.qsee_version >= (QSEE_VERSION_02) && (!qseecom.is_apps_region_protected && !qseecom.appsbl_qseecom_support)) { Loading Loading @@ -8703,10 +8707,8 @@ static int qseecom_probe(struct platform_device *pdev) if (qseecom.is_apps_region_protected || qseecom.appsbl_qseecom_support) qseecom.commonlib_loaded = true; } else { qseecom_platform_support = (struct msm_bus_scale_pdata *) pdev->dev.platform_data; } if (qseecom.support_bus_scaling) { init_timer(&(qseecom.bw_scale_down_timer)); INIT_WORK(&qseecom.bw_inactive_req_ws, Loading @@ -8715,16 +8717,11 @@ static int qseecom_probe(struct platform_device *pdev) qseecom_scale_bus_bandwidth_timer_callback; } qseecom.timer_running = false; qseecom.qsee_perf_client = msm_bus_scale_register_client( qseecom_platform_support); qseecom.whitelist_support = qseecom_check_whitelist_feature(); pr_warn("qseecom.whitelist_support = %d\n", qseecom.whitelist_support); if (!qseecom.qsee_perf_client) pr_err("Unable to register bus client\n"); atomic_set(&qseecom.qseecom_state, QSEECOM_STATE_READY); return 0; Loading include/soc/qcom/qseecomi.h +62 −63 Original line number Diff line number Diff line Loading @@ -104,82 +104,82 @@ enum qseecom_qsee_reentrancy_phase { QSEE_REENTRANCY_PHASE_MAX = 0xFF }; __packed struct qsee_apps_region_info_ireq { struct qsee_apps_region_info_ireq { uint32_t qsee_cmd_id; uint32_t addr; uint32_t size; }; } __attribute__((__packed__)); __packed struct qsee_apps_region_info_64bit_ireq { struct qsee_apps_region_info_64bit_ireq { uint32_t qsee_cmd_id; uint64_t addr; uint32_t size; }; } __attribute__((__packed__)); __packed struct qseecom_check_app_ireq { struct qseecom_check_app_ireq { uint32_t qsee_cmd_id; char app_name[MAX_APP_NAME_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_load_app_ireq { struct qseecom_load_app_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; /* Length of the mdt file */ uint32_t img_len; /* Length of .bxx and .mdt files */ uint32_t phy_addr; /* phy addr of the start of image */ char app_name[MAX_APP_NAME_SIZE]; /* application name*/ }; } __attribute__((__packed__)); __packed struct qseecom_load_app_64bit_ireq { struct qseecom_load_app_64bit_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint64_t phy_addr; char app_name[MAX_APP_NAME_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_unload_app_ireq { struct qseecom_unload_app_ireq { uint32_t qsee_cmd_id; uint32_t app_id; }; } __attribute__((__packed__)); __packed struct qseecom_load_lib_image_ireq { struct qseecom_load_lib_image_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint32_t phy_addr; }; } __attribute__((__packed__)); __packed struct qseecom_load_lib_image_64bit_ireq { struct qseecom_load_lib_image_64bit_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint64_t phy_addr; }; } __attribute__((__packed__)); __packed struct qseecom_unload_lib_image_ireq { struct qseecom_unload_lib_image_ireq { uint32_t qsee_cmd_id; }; } __attribute__((__packed__)); __packed struct qseecom_register_listener_ireq { struct qseecom_register_listener_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t sb_ptr; uint32_t sb_len; }; } __attribute__((__packed__)); __packed struct qseecom_register_listener_64bit_ireq { struct qseecom_register_listener_64bit_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; uint64_t sb_ptr; uint32_t sb_len; }; } __attribute__((__packed__)); __packed struct qseecom_unregister_listener_ireq { struct qseecom_unregister_listener_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_data_ireq { struct qseecom_client_send_data_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint32_t req_ptr; Loading @@ -188,9 +188,9 @@ __packed struct qseecom_client_send_data_ireq { uint32_t rsp_len; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_data_64bit_ireq { struct qseecom_client_send_data_64bit_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint64_t req_ptr; Loading @@ -199,36 +199,36 @@ __packed struct qseecom_client_send_data_64bit_ireq { uint32_t rsp_len; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_reg_log_buf_ireq { struct qseecom_reg_log_buf_ireq { uint32_t qsee_cmd_id; uint32_t phy_addr; uint32_t len; }; } __attribute__((__packed__)); __packed struct qseecom_reg_log_buf_64bit_ireq { struct qseecom_reg_log_buf_64bit_ireq { uint32_t qsee_cmd_id; uint64_t phy_addr; uint32_t len; }; } __attribute__((__packed__)); /* send_data resp */ __packed struct qseecom_client_listener_data_irsp { struct qseecom_client_listener_data_irsp { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t status; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_listener_data_64bit_irsp { struct qseecom_client_listener_data_64bit_irsp { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t status; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); /* * struct qseecom_command_scm_resp - qseecom response buffer Loading @@ -237,40 +237,40 @@ __packed struct qseecom_client_listener_data_64bit_irsp { * buffer * @sb_in_rsp_len: length of command response */ __packed struct qseecom_command_scm_resp { struct qseecom_command_scm_resp { uint32_t result; enum qseecom_command_scm_resp_type resp_type; unsigned int data; }; } __attribute__((__packed__)); struct qseecom_rpmb_provision_key { uint32_t key_type; }; __packed struct qseecom_client_send_service_ireq { struct qseecom_client_send_service_ireq { uint32_t qsee_cmd_id; uint32_t key_type; /* in */ unsigned int req_len; /* in */ uint32_t rsp_ptr; /* in/out */ unsigned int rsp_len; /* in/out */ }; } __attribute__((__packed__)); __packed struct qseecom_client_send_service_64bit_ireq { struct qseecom_client_send_service_64bit_ireq { uint32_t qsee_cmd_id; uint32_t key_type; unsigned int req_len; uint64_t rsp_ptr; unsigned int rsp_len; }; } __attribute__((__packed__)); __packed struct qseecom_key_generate_ireq { struct qseecom_key_generate_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_select_ireq { struct qseecom_key_select_ireq { uint32_t qsee_command_id; uint32_t ce; uint32_t pipe; Loading @@ -278,33 +278,33 @@ __packed struct qseecom_key_select_ireq { uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_delete_ireq { struct qseecom_key_delete_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_userinfo_update_ireq { struct qseecom_key_userinfo_update_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t current_hash32[QSEECOM_HASH_SIZE]; uint8_t new_hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_max_count_query_ireq { struct qseecom_key_max_count_query_ireq { uint32_t flags; }; } __attribute__((__packed__)); __packed struct qseecom_key_max_count_query_irsp { struct qseecom_key_max_count_query_irsp { uint32_t max_key_count; }; } __attribute__((__packed__)); __packed struct qseecom_qteec_ireq { struct qseecom_qteec_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint32_t req_ptr; Loading @@ -313,9 +313,9 @@ __packed struct qseecom_qteec_ireq { uint32_t resp_len; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_qteec_64bit_ireq { struct qseecom_qteec_64bit_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint64_t req_ptr; Loading @@ -324,21 +324,20 @@ __packed struct qseecom_qteec_64bit_ireq { uint32_t resp_len; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_fsm_key_req { struct qseecom_client_send_fsm_key_req { uint32_t qsee_cmd_id; uint32_t req_ptr; uint32_t req_len; uint32_t rsp_ptr; uint32_t rsp_len; }; } __attribute__((__packed__)); __packed struct qseecom_continue_blocked_request_ireq { struct qseecom_continue_blocked_request_ireq { uint32_t qsee_cmd_id; uint32_t app_or_session_id; /*legacy: app_id; smcinvoke: session_id*/ }; } __attribute__((__packed__)); /********** ARMV8 SMC INTERFACE TZ MACRO *******************/ Loading Loading
arch/arm64/boot/dts/qcom/sdm855.dtsi +16 −0 Original line number Diff line number Diff line Loading @@ -2419,6 +2419,22 @@ reg = <0xc3f000c 8>; }; qcom_seecom: qseecom@87900000 { compatible = "qcom,qseecom"; reg = <0x87900000 0x2200000>; reg-names = "secapp-region"; qcom,hlos-num-ce-hw-instances = <1>; qcom,hlos-ce-hw-instance = <0>; qcom,qsee-ce-hw-instance = <0>; qcom,disk-encrypt-pipe-pair = <2>; qcom,support-fde; qcom,no-clock-support; qcom,fde-key-size; qcom,appsbl-qseecom-support; qcom,commonlib64-loaded-by-uefi; qcom,qsee-reentrancy-support = <2>; }; mem_dump { compatible = "qcom,mem-dump"; memory-region = <&dump_mem>; Loading
drivers/misc/qseecom.c +14 −17 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ #include "qseecom_kernel.h" #include <crypto/ice.h> #include <linux/delay.h> #include <linux/signal.h> #include <linux/compat.h> #include "compat_qseecom.h" Loading Loading @@ -1055,10 +1056,6 @@ static int qseecom_scm_call2(uint32_t svc_id, uint32_t tz_cmd_id, static int qseecom_scm_call(u32 svc_id, u32 tz_cmd_id, const void *cmd_buf, size_t cmd_len, void *resp_buf, size_t resp_len) { if (!is_scm_armv8()) return scm_call(svc_id, tz_cmd_id, cmd_buf, cmd_len, resp_buf, resp_len); else return qseecom_scm_call2(svc_id, tz_cmd_id, cmd_buf, resp_buf); } Loading Loading @@ -8454,9 +8451,19 @@ static int qseecom_query_ce_info(struct qseecom_dev_handle *data, * Check whitelist feature, and if TZ feature version is < 1.0.0, * then whitelist feature is not supported. */ #define GET_FEAT_VERSION_CMD 3 static int qseecom_check_whitelist_feature(void) { int version = scm_get_feat_version(FEATURE_ID_WHITELIST); struct scm_desc desc = {0}; int version = 0; int ret = 0; desc.args[0] = FEATURE_ID_WHITELIST; desc.arginfo = SCM_ARGS(1); ret = scm_call2(SCM_SIP_FNID(SCM_SVC_INFO, GET_FEAT_VERSION_CMD), &desc); if (!ret) version = desc.ret[0]; return version >= MAKE_WHITELIST_VERSION(1, 0, 0); } Loading @@ -8467,7 +8474,6 @@ static int qseecom_probe(struct platform_device *pdev) int i; uint32_t feature = 10; struct device *class_dev; struct msm_bus_scale_pdata *qseecom_platform_support = NULL; struct qseecom_command_scm_resp resp; struct qseecom_ce_info_use *pce_info_use = NULL; Loading Loading @@ -8636,8 +8642,6 @@ static int qseecom_probe(struct platform_device *pdev) qseecom.ce_drv.ce_bus_clk = qclk->ce_bus_clk; } qseecom_platform_support = (struct msm_bus_scale_pdata *) msm_bus_cl_get_pdata(pdev); if (qseecom.qsee_version >= (QSEE_VERSION_02) && (!qseecom.is_apps_region_protected && !qseecom.appsbl_qseecom_support)) { Loading Loading @@ -8703,10 +8707,8 @@ static int qseecom_probe(struct platform_device *pdev) if (qseecom.is_apps_region_protected || qseecom.appsbl_qseecom_support) qseecom.commonlib_loaded = true; } else { qseecom_platform_support = (struct msm_bus_scale_pdata *) pdev->dev.platform_data; } if (qseecom.support_bus_scaling) { init_timer(&(qseecom.bw_scale_down_timer)); INIT_WORK(&qseecom.bw_inactive_req_ws, Loading @@ -8715,16 +8717,11 @@ static int qseecom_probe(struct platform_device *pdev) qseecom_scale_bus_bandwidth_timer_callback; } qseecom.timer_running = false; qseecom.qsee_perf_client = msm_bus_scale_register_client( qseecom_platform_support); qseecom.whitelist_support = qseecom_check_whitelist_feature(); pr_warn("qseecom.whitelist_support = %d\n", qseecom.whitelist_support); if (!qseecom.qsee_perf_client) pr_err("Unable to register bus client\n"); atomic_set(&qseecom.qseecom_state, QSEECOM_STATE_READY); return 0; Loading
include/soc/qcom/qseecomi.h +62 −63 Original line number Diff line number Diff line Loading @@ -104,82 +104,82 @@ enum qseecom_qsee_reentrancy_phase { QSEE_REENTRANCY_PHASE_MAX = 0xFF }; __packed struct qsee_apps_region_info_ireq { struct qsee_apps_region_info_ireq { uint32_t qsee_cmd_id; uint32_t addr; uint32_t size; }; } __attribute__((__packed__)); __packed struct qsee_apps_region_info_64bit_ireq { struct qsee_apps_region_info_64bit_ireq { uint32_t qsee_cmd_id; uint64_t addr; uint32_t size; }; } __attribute__((__packed__)); __packed struct qseecom_check_app_ireq { struct qseecom_check_app_ireq { uint32_t qsee_cmd_id; char app_name[MAX_APP_NAME_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_load_app_ireq { struct qseecom_load_app_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; /* Length of the mdt file */ uint32_t img_len; /* Length of .bxx and .mdt files */ uint32_t phy_addr; /* phy addr of the start of image */ char app_name[MAX_APP_NAME_SIZE]; /* application name*/ }; } __attribute__((__packed__)); __packed struct qseecom_load_app_64bit_ireq { struct qseecom_load_app_64bit_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint64_t phy_addr; char app_name[MAX_APP_NAME_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_unload_app_ireq { struct qseecom_unload_app_ireq { uint32_t qsee_cmd_id; uint32_t app_id; }; } __attribute__((__packed__)); __packed struct qseecom_load_lib_image_ireq { struct qseecom_load_lib_image_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint32_t phy_addr; }; } __attribute__((__packed__)); __packed struct qseecom_load_lib_image_64bit_ireq { struct qseecom_load_lib_image_64bit_ireq { uint32_t qsee_cmd_id; uint32_t mdt_len; uint32_t img_len; uint64_t phy_addr; }; } __attribute__((__packed__)); __packed struct qseecom_unload_lib_image_ireq { struct qseecom_unload_lib_image_ireq { uint32_t qsee_cmd_id; }; } __attribute__((__packed__)); __packed struct qseecom_register_listener_ireq { struct qseecom_register_listener_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t sb_ptr; uint32_t sb_len; }; } __attribute__((__packed__)); __packed struct qseecom_register_listener_64bit_ireq { struct qseecom_register_listener_64bit_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; uint64_t sb_ptr; uint32_t sb_len; }; } __attribute__((__packed__)); __packed struct qseecom_unregister_listener_ireq { struct qseecom_unregister_listener_ireq { uint32_t qsee_cmd_id; uint32_t listener_id; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_data_ireq { struct qseecom_client_send_data_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint32_t req_ptr; Loading @@ -188,9 +188,9 @@ __packed struct qseecom_client_send_data_ireq { uint32_t rsp_len; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_data_64bit_ireq { struct qseecom_client_send_data_64bit_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint64_t req_ptr; Loading @@ -199,36 +199,36 @@ __packed struct qseecom_client_send_data_64bit_ireq { uint32_t rsp_len; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_reg_log_buf_ireq { struct qseecom_reg_log_buf_ireq { uint32_t qsee_cmd_id; uint32_t phy_addr; uint32_t len; }; } __attribute__((__packed__)); __packed struct qseecom_reg_log_buf_64bit_ireq { struct qseecom_reg_log_buf_64bit_ireq { uint32_t qsee_cmd_id; uint64_t phy_addr; uint32_t len; }; } __attribute__((__packed__)); /* send_data resp */ __packed struct qseecom_client_listener_data_irsp { struct qseecom_client_listener_data_irsp { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t status; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_listener_data_64bit_irsp { struct qseecom_client_listener_data_64bit_irsp { uint32_t qsee_cmd_id; uint32_t listener_id; uint32_t status; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); /* * struct qseecom_command_scm_resp - qseecom response buffer Loading @@ -237,40 +237,40 @@ __packed struct qseecom_client_listener_data_64bit_irsp { * buffer * @sb_in_rsp_len: length of command response */ __packed struct qseecom_command_scm_resp { struct qseecom_command_scm_resp { uint32_t result; enum qseecom_command_scm_resp_type resp_type; unsigned int data; }; } __attribute__((__packed__)); struct qseecom_rpmb_provision_key { uint32_t key_type; }; __packed struct qseecom_client_send_service_ireq { struct qseecom_client_send_service_ireq { uint32_t qsee_cmd_id; uint32_t key_type; /* in */ unsigned int req_len; /* in */ uint32_t rsp_ptr; /* in/out */ unsigned int rsp_len; /* in/out */ }; } __attribute__((__packed__)); __packed struct qseecom_client_send_service_64bit_ireq { struct qseecom_client_send_service_64bit_ireq { uint32_t qsee_cmd_id; uint32_t key_type; unsigned int req_len; uint64_t rsp_ptr; unsigned int rsp_len; }; } __attribute__((__packed__)); __packed struct qseecom_key_generate_ireq { struct qseecom_key_generate_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_select_ireq { struct qseecom_key_select_ireq { uint32_t qsee_command_id; uint32_t ce; uint32_t pipe; Loading @@ -278,33 +278,33 @@ __packed struct qseecom_key_select_ireq { uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_delete_ireq { struct qseecom_key_delete_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_userinfo_update_ireq { struct qseecom_key_userinfo_update_ireq { uint32_t qsee_command_id; uint32_t flags; uint8_t key_id[QSEECOM_KEY_ID_SIZE]; uint8_t current_hash32[QSEECOM_HASH_SIZE]; uint8_t new_hash32[QSEECOM_HASH_SIZE]; }; } __attribute__((__packed__)); __packed struct qseecom_key_max_count_query_ireq { struct qseecom_key_max_count_query_ireq { uint32_t flags; }; } __attribute__((__packed__)); __packed struct qseecom_key_max_count_query_irsp { struct qseecom_key_max_count_query_irsp { uint32_t max_key_count; }; } __attribute__((__packed__)); __packed struct qseecom_qteec_ireq { struct qseecom_qteec_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint32_t req_ptr; Loading @@ -313,9 +313,9 @@ __packed struct qseecom_qteec_ireq { uint32_t resp_len; uint32_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_qteec_64bit_ireq { struct qseecom_qteec_64bit_ireq { uint32_t qsee_cmd_id; uint32_t app_id; uint64_t req_ptr; Loading @@ -324,21 +324,20 @@ __packed struct qseecom_qteec_64bit_ireq { uint32_t resp_len; uint64_t sglistinfo_ptr; uint32_t sglistinfo_len; }; } __attribute__((__packed__)); __packed struct qseecom_client_send_fsm_key_req { struct qseecom_client_send_fsm_key_req { uint32_t qsee_cmd_id; uint32_t req_ptr; uint32_t req_len; uint32_t rsp_ptr; uint32_t rsp_len; }; } __attribute__((__packed__)); __packed struct qseecom_continue_blocked_request_ireq { struct qseecom_continue_blocked_request_ireq { uint32_t qsee_cmd_id; uint32_t app_or_session_id; /*legacy: app_id; smcinvoke: session_id*/ }; } __attribute__((__packed__)); /********** ARMV8 SMC INTERFACE TZ MACRO *******************/ Loading