On 5/1/20 12:51 AM, Eric Biggers wrote:
From: Eric Biggers <ebiggers@xxxxxxxxxx>
Add support for the Inline Crypto Engine (ICE) key programming interface
that's needed for the ufs-qcom driver to use inline encryption on
Snapdragon SoCs. This interface consists of two SCM calls: one to
program a key into a keyslot, and one to invalidate a keyslot.
Although the UFS specification defines a standard way to do this, on
these SoCs the Linux kernel isn't permitted to access the needed crypto
configuration registers directly; these SCM calls must be used instead.
Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---
drivers/firmware/qcom_scm.c | 101 ++++++++++++++++++++++++++++++++++++
drivers/firmware/qcom_scm.h | 4 ++
include/linux/qcom_scm.h | 19 +++++++
3 files changed, 124 insertions(+)
diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index 059bb0fbae9e5b..646f9613393612 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -926,6 +926,107 @@ int qcom_scm_ocmem_unlock(enum qcom_scm_ocmem_client id, u32 offset, u32 size)
}
EXPORT_SYMBOL(qcom_scm_ocmem_unlock);
+/**
+ * qcom_scm_ice_available() - Is the ICE key programming interface available?
+ *
+ * Return: true iff the SCM calls wrapped by qcom_scm_ice_invalidate_key() and/s/iff/if
--
Warm Regards
Thara