Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d6607bb authored by Siddharth Gupta's avatar Siddharth Gupta Committed by Elliot Berman
Browse files

crypto: ice: Migrate SCM calls



Migrating all SCM calls made to the old driver to now be made
through the backported upstream driver.

Change-Id: Ic77d315c5a55859f0cc58d7bbf05c0c24d1ef155
Signed-off-by: default avatarSiddharth Gupta <sidgup@codeaurora.org>
Signed-off-by: default avatarElliot Berman <eberman@codeaurora.org>
parent 050d2dca
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1078,6 +1078,19 @@ int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev, bool en)
	return qcom_scm_call_atomic(dev, &desc);
}

int __qcom_scm_ice_restore_cfg(struct device *dev)
{
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_KEYSTORE,
		.cmd = QCOM_SCM_ICE_RESTORE_KEY_ID,
		.owner = ARM_SMCCC_OWNER_TRUSTED_OS
	};

	desc.arginfo = QCOM_SCM_ARGS(0);

	return qcom_scm_call(dev, &desc);
}

void __qcom_scm_init(void)
{
	__query_convention();
+6 −0
Original line number Diff line number Diff line
@@ -505,6 +505,12 @@ int qcom_scm_qsmmu500_wait_safe_toggle(bool en)
}
EXPORT_SYMBOL(qcom_scm_qsmmu500_wait_safe_toggle);

int qcom_scm_ice_restore_cfg(void)
{
	return __qcom_scm_ice_restore_cfg(__scm->dev);
}
EXPORT_SYMBOL(qcom_scm_ice_restore_cfg);

/**
 * qcom_scm_is_available() - Checks if SCM is available
 */
+6 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#ifndef __QCOM_SCM_INT_H
#define __QCOM_SCM_INT_H

// SIP Services and Function IDs
#define QCOM_SCM_SVC_BOOT			0x01
#define QCOM_SCM_BOOT_SET_ADDR			0x01
#define QCOM_SCM_BOOT_TERMINATE_PC		0x02
@@ -77,7 +78,6 @@ extern int __qcom_scm_assign_mem(struct device *dev,
				  phys_addr_t dest, size_t dest_sz);
#define QCOM_SCM_IOMMU_TLBINVAL_FLAG    0x00000001


#define QCOM_SCM_SVC_HDCP			0x11
#define QCOM_SCM_HDCP_INVOKE			0x01
extern int __qcom_scm_hdcp_req(struct device *dev,
@@ -89,6 +89,11 @@ extern int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev,
						bool enable);
#define QCOM_SCM_SMMU_CONFIG_ERRATA1_CLIENT_ALL	0x2

// TOS Services and Function IDs
#define QCOM_SCM_SVC_KEYSTORE		0x05
#define QCOM_SCM_ICE_RESTORE_KEY_ID	0x06
extern int __qcom_scm_ice_restore_cfg(struct device *dev);

extern void __qcom_scm_init(void);

/* common error codes */
+2 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ extern bool qcom_scm_hdcp_available(void);
extern int qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req, u32 req_cnt,
			     u32 *resp);
extern int qcom_scm_qsmmu500_wait_safe_toggle(bool en);
extern int qcom_scm_ice_restore_cfg(void);
extern bool qcom_scm_is_available(void);
#else

@@ -114,6 +115,7 @@ static inline int qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req, u32 req_cnt,
				    u32 *resp) { return -ENODEV; }
static inline int qcom_scm_qsmmu500_wait_safe_toggle(bool en)
		{ return -ENODEV; }
static inline int qcom_scm_ice_restore_cfg(void) { return -ENODEV; }
static inline bool qcom_scm_is_available(void) { return false; }
#endif
#endif