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: Siddharth Gupta <sidgup@codeaurora.org>
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
This commit is contained in:
Siddharth Gupta 2019-10-17 15:46:36 -07:00 committed by Elliot Berman
parent 89d665314e
commit e7e95d8706
4 changed files with 40 additions and 0 deletions

View File

@ -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)
{

View File

@ -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;

View File

@ -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);

View File

@ -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(