qseecom: add configurable encryption key size
ICE crypto engine key size can now be configured using dtsi flag. This is required to facilitate usage of common TZ image with variable key sizes and also provides flexibility in handling different key sizes requirement in future. This flag is parsed in driver and depending upon the value HLOS decides on key size to be passed to TZ. Change-Id: If40f83a943e5ae8333d171c21823a16816d7ddd4 Signed-off-by: Neeraj Soni <neersoni@codeaurora.org> Signed-off-by: Andrey Markovytch <andreym@codeaurora.org>
This commit is contained in:
parent
a80e267a8c
commit
309430921f
2 changed files with 28 additions and 0 deletions
|
@ -26,6 +26,7 @@ Optional properties:
|
|||
- vdd-hba-supply : handle for fixed power regulator
|
||||
- qcom,qsee-reentrancy-support: indicates the qsee reentrancy phase supported by the target
|
||||
- qcom,commonlib64-loaded-by-uefi: indicates commonlib64 is loaded by uefi already
|
||||
- qcom,fde-key-size: indicates which FDE key size is used in device.
|
||||
|
||||
Example:
|
||||
qcom,qseecom@fe806000 {
|
||||
|
@ -46,6 +47,7 @@ Example:
|
|||
qcom,msm_bus,num_paths = <1>;
|
||||
qcom,no-clock-support;
|
||||
qcom,appsbl-qseecom-support;
|
||||
qcom,fde-key-size;
|
||||
qcom,msm_bus,vectors =
|
||||
<55 512 0 0>,
|
||||
<55 512 3936000000 393600000>,
|
||||
|
@ -72,6 +74,7 @@ Example: The following dts setup is the same as the example above.
|
|||
qcom,msm_bus,num_paths = <1>;
|
||||
qcom,no-clock-support;
|
||||
qcom,appsbl-qseecom-support;
|
||||
qcom,fde-key-size;
|
||||
qcom,msm_bus,vectors =
|
||||
<55 512 0 0>,
|
||||
<55 512 3936000000 393600000>,
|
||||
|
|
|
@ -95,6 +95,7 @@
|
|||
#define QSEECOM_STATE_NOT_READY 0
|
||||
#define QSEECOM_STATE_SUSPEND 1
|
||||
#define QSEECOM_STATE_READY 2
|
||||
#define QSEECOM_ICE_FDE_KEY_SIZE_MASK 2
|
||||
|
||||
/*
|
||||
* default ce info unit to 0 for
|
||||
|
@ -110,6 +111,15 @@ enum qseecom_clk_definitions {
|
|||
CLK_SFPB,
|
||||
};
|
||||
|
||||
enum qseecom_ice_key_size_type {
|
||||
QSEECOM_ICE_FDE_KEY_SIZE_16_BYTE =
|
||||
(0 << QSEECOM_ICE_FDE_KEY_SIZE_MASK),
|
||||
QSEECOM_ICE_FDE_KEY_SIZE_32_BYTE =
|
||||
(1 << QSEECOM_ICE_FDE_KEY_SIZE_MASK),
|
||||
QSEE_ICE_FDE_KEY_SIZE_UNDEFINED =
|
||||
(0xF << QSEECOM_ICE_FDE_KEY_SIZE_MASK),
|
||||
};
|
||||
|
||||
enum qseecom_client_handle_type {
|
||||
QSEECOM_CLIENT_APP = 1,
|
||||
QSEECOM_LISTENER_SERVICE,
|
||||
|
@ -252,6 +262,7 @@ struct qseecom_control {
|
|||
bool support_bus_scaling;
|
||||
bool support_fde;
|
||||
bool support_pfe;
|
||||
bool fde_key_size;
|
||||
uint32_t cumulative_mode;
|
||||
enum qseecom_bandwidth_request_mode current_mode;
|
||||
struct timer_list bw_scale_down_timer;
|
||||
|
@ -5693,6 +5704,11 @@ static int qseecom_create_key(struct qseecom_dev_handle *data,
|
|||
goto free_buf;
|
||||
}
|
||||
|
||||
if (qseecom.fde_key_size)
|
||||
flags |= QSEECOM_ICE_FDE_KEY_SIZE_32_BYTE;
|
||||
else
|
||||
flags |= QSEECOM_ICE_FDE_KEY_SIZE_16_BYTE;
|
||||
|
||||
generate_key_ireq.flags = flags;
|
||||
generate_key_ireq.qsee_command_id = QSEOS_GENERATE_KEY;
|
||||
memset((void *)generate_key_ireq.key_id,
|
||||
|
@ -5913,6 +5929,12 @@ static int qseecom_update_key_user_info(struct qseecom_dev_handle *data,
|
|||
}
|
||||
|
||||
ireq.qsee_command_id = QSEOS_UPDATE_KEY_USERINFO;
|
||||
|
||||
if (qseecom.fde_key_size)
|
||||
flags |= QSEECOM_ICE_FDE_KEY_SIZE_32_BYTE;
|
||||
else
|
||||
flags |= QSEECOM_ICE_FDE_KEY_SIZE_16_BYTE;
|
||||
|
||||
ireq.flags = flags;
|
||||
memset(ireq.key_id, 0, QSEECOM_KEY_ID_SIZE);
|
||||
memset((void *)ireq.current_hash32, 0, QSEECOM_HASH_SIZE);
|
||||
|
@ -8346,6 +8368,9 @@ static int qseecom_probe(struct platform_device *pdev)
|
|||
"qcom,commonlib64-loaded-by-uefi");
|
||||
pr_debug("qseecom.commonlib64-loaded-by-uefi = 0x%x",
|
||||
qseecom.commonlib64_loaded);
|
||||
qseecom.fde_key_size =
|
||||
of_property_read_bool((&pdev->dev)->of_node,
|
||||
"qcom,fde-key-size");
|
||||
qseecom.no_clock_support =
|
||||
of_property_read_bool((&pdev->dev)->of_node,
|
||||
"qcom,no-clock-support");
|
||||
|
|
Loading…
Add table
Reference in a new issue