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

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

firmware: qcom_scm: Add a scm calls for displace memory protect



Add a scm calls for displace memory protect.

Change-Id: I8a23b13f1917adcad5f627f0f55fc7702bd01cd7
Signed-off-by: default avatarSiddharth Gupta <sidgup@codeaurora.org>
Signed-off-by: default avatarElliot Berman <eberman@codeaurora.org>
parent 89d66531
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -1199,6 +1199,26 @@ int __qcom_scm_assign_mem(struct device *dev, phys_addr_t mem_region,
	return ret ? : desc.res[0];
}

int __qcom_scm_mem_protect_sd_ctrl(struct device *dev, u32 devid,
				phys_addr_t mem_addr, u64 mem_size, u32 vmid)
{
	int ret;
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_MP,
		.cmd = QCOM_SCM_MP_CMD_SD_CTRL,
		.owner = ARM_SMCCC_OWNER_SIP
	};

	desc.args[0] = devid;
	desc.args[1] = mem_addr;
	desc.args[2] = mem_size;
	desc.args[3] = vmid;
	desc.arginfo = QCOM_SCM_ARGS(4);
	ret = qcom_scm_call(dev, &desc);

	return ret ? : desc.res[0];
}

int __qcom_scm_kgsl_set_smmu_aperture(struct device *dev,
					unsigned int num_context_bank)
{
+12 −0
Original line number Diff line number Diff line
@@ -510,6 +510,18 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
}
EXPORT_SYMBOL(qcom_scm_assign_mem);

/**
 * qcom_scm_mem_protect_sd_ctrl() - SDE memory protect.
 *
 */
int qcom_scm_mem_protect_sd_ctrl(u32 devid, phys_addr_t mem_addr, u64 mem_size,
				u32 vmid)
{
	return __qcom_scm_mem_protect_sd_ctrl(__scm->dev, devid, mem_addr,
						mem_size, vmid);
}
EXPORT_SYMBOL(qcom_scm_mem_protect_sd_ctrl);

bool qcom_scm_kgsl_set_smmu_aperture_available(void)
{
	int ret;
+3 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ extern void __qcom_scm_mmu_sync(struct device *dev, bool sync);
#define QCOM_SCM_MP_IOMMU_SECURE_MAP2_FLAT	0x12
#define QCOM_SCM_MP_IOMMU_SECURE_UNMAP2_FLAT	0x13
#define QCOM_SCM_MP_ASSIGN			0x16
#define QCOM_SCM_MP_CMD_SD_CTRL			0x18
#define QCOM_SCM_MP_CP_SMMU_APERTURE_ID		0x1b
#define QCOM_SCM_MEMP_SHM_BRIDGE_ENABLE		0x1c
#define QCOM_SCM_MEMP_SHM_BRIDGE_DELETE		0x1d
@@ -108,6 +109,8 @@ extern int __qcom_scm_assign_mem(struct device *dev,
				  phys_addr_t mem_region, size_t mem_sz,
				  phys_addr_t src, size_t src_sz,
				  phys_addr_t dest, size_t dest_sz);
extern int __qcom_scm_mem_protect_sd_ctrl(struct device *dev, u32 devid,
				phys_addr_t mem_addr, u64 mem_size, u32 vmid);
extern int __qcom_scm_kgsl_set_smmu_aperture(struct device *dev,
						unsigned int num_context_bank);
extern int __qcom_scm_enable_shm_bridge(struct device *dev);
+5 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ extern int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
			       unsigned int *src,
			       const struct qcom_scm_vmperm *newvm,
			       unsigned int dest_cnt);
extern int qcom_scm_mem_protect_sd_ctrl(u32 devid, phys_addr_t mem_addr,
					u64 mem_size, u32 vmid);
extern bool qcom_scm_kgsl_set_smmu_aperture_available(void);
extern int qcom_scm_kgsl_set_smmu_aperture(
				unsigned int num_context_bank);
@@ -177,6 +179,9 @@ static inline int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
				      unsigned int *src,
				      const struct qcom_scm_vmperm *newvm,
				      unsigned int dest_cnt) { return -ENODEV; }
static inline int qcom_scm_mem_protect_sd_ctrl(u32 devid, phys_addr_t mem_addr,
					u64 mem_size, u32 vmid)
					{ return -ENODEV; }
static inline bool qcom_scm_kgsl_set_smmu_aperture_available(void)
		{ return false; }
static inline int qcom_scm_kgsl_set_smmu_aperture(