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

Commit 23a99bc7 authored by Siddharth Gupta's avatar Siddharth Gupta Committed by Elliot Berman
Browse files

firmware: qcom_scm: Add calls for seccam



Add calls to the SCM driver for seccam driver.

Change-Id: I0468057945ab8c84ea6c608fdb194093422a2c3e
Signed-off-by: default avatarSiddharth Gupta <sidgup@codeaurora.org>
Signed-off-by: default avatarElliot Berman <eberman@codeaurora.org>
parent 3364df41
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1739,6 +1739,22 @@ int __qcom_scm_qdss_invoke(struct device *dev, phys_addr_t addr, size_t size,
	return ret ? : desc.res[0];
}

int __qcom_scm_camera_protect_all(struct device *dev, uint32_t protect,
				  uint32_t param)
{
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_CAMERA,
		.cmd = QCOM_SCM_CAMERA_PROTECT_ALL,
		.owner = ARM_SMCCC_OWNER_SIP
	};

	desc.args[0] = protect;
	desc.args[1] = param;
	desc.arginfo = QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_VAL);

	return qcom_scm_call(dev, &desc);
}

int __qcom_scm_camera_protect_phy_lanes(struct device *dev, bool protect,
					 u64 regmask)
{
+6 −0
Original line number Diff line number Diff line
@@ -834,6 +834,12 @@ int qcom_scm_qdss_invoke(phys_addr_t paddr, size_t size, u64 *out)
}
EXPORT_SYMBOL(qcom_scm_qdss_invoke);

int qcom_scm_camera_protect_all(uint32_t protect, uint32_t param)
{
	return __qcom_scm_camera_protect_all(__scm->dev, protect, param);
}
EXPORT_SYMBOL(qcom_scm_camera_protect_all);

int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask)
{
	return __qcom_scm_camera_protect_phy_lanes(__scm->dev, protect,
+3 −0
Original line number Diff line number Diff line
@@ -208,7 +208,10 @@ extern int __qcom_scm_qdss_invoke(struct device *dev, phys_addr_t addr,
				  size_t size, u64 *out);

#define QCOM_SCM_SVC_CAMERA			0x18
#define QCOM_SCM_CAMERA_PROTECT_ALL		0x06
#define QCOM_SCM_CAMERA_PROTECT_PHY_LANES	0x07
extern int __qcom_scm_camera_protect_all(struct device *dev, uint32_t protect,
						uint32_t param);
extern int __qcom_scm_camera_protect_phy_lanes(struct device *dev,
						bool protect, u64 regmask);

+3 −0
Original line number Diff line number Diff line
@@ -164,6 +164,7 @@ extern int qcom_scm_smmu_change_pgtbl_format(u64 dev_id, int cbndx);
extern int qcom_scm_qsmmu500_wait_safe_toggle(bool en);
extern int qcom_scm_smmu_notify_secure_lut(u64 dev_id, bool secure);
extern int qcom_scm_qdss_invoke(phys_addr_t addr, size_t size, u64 *out);
extern int qcom_scm_camera_protect_all(uint32_t protect, uint32_t param);
extern int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask);
extern int qcom_scm_ice_restore_cfg(void);
extern int qcom_scm_get_tz_log_feat_id(u64 *version);
@@ -311,6 +312,8 @@ static inline int qcom_scm_smmu_notify_secure_lut(u64 dev_id, bool secure)
		{ return -EINVAL; }
static inline int qcom_scm_qdss_invoke(phys_addr_t data, size_t size, u64 *out)
		{ return -EINVAL; }
static inline int qcom_scm_camera_protect_all(uint32_t protect, uint32_t param)
		{ return -ENODEV; }
static inline int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask)
		{ return -EINVAL; }
static inline int qcom_scm_ice_restore_cfg(void) { return -ENODEV; }