mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
Merge "scm: enable audio memory api"
This commit is contained in:
commit
983d9309f2
4 changed files with 41 additions and 0 deletions
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <linux/qtee_shmbridge.h>
|
||||
#include <soc/qcom/qseecom_scm.h>
|
||||
#include <soc/qcom/qseecomi.h>
|
||||
|
||||
#include "qcom_scm.h"
|
||||
|
||||
|
|
@ -2347,6 +2348,34 @@ int __qcom_scm_invoke_callback_response(struct device *dev, phys_addr_t out_buf,
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#define TZ_SVC_MEMORY_PROTECTION 12 /* Memory protection service. */
|
||||
|
||||
#define TZ_MPU_LOCK_AUDIO_BUFFER \
|
||||
TZ_SYSCALL_CREATE_SMC_ID(TZ_OWNER_SIP, TZ_SVC_MEMORY_PROTECTION, 0x06)
|
||||
|
||||
#define TZ_MPU_LOCK_AUDIO_BUFFER_PARAM_ID \
|
||||
TZ_SYSCALL_CREATE_PARAM_ID_2( \
|
||||
TZ_SYSCALL_PARAM_TYPE_VAL, TZ_SYSCALL_PARAM_TYPE_VAL)
|
||||
int __qcom_scm_mem_protect_audio(struct device *dev, phys_addr_t paddr,
|
||||
size_t size)
|
||||
{
|
||||
int ret;
|
||||
struct qcom_scm_desc desc = {
|
||||
.svc = TZ_SVC_MEMORY_PROTECTION,
|
||||
.cmd = 0x6,
|
||||
.owner = TZ_OWNER_SIP,
|
||||
};
|
||||
|
||||
desc.args[0] = paddr;
|
||||
desc.args[1] = size;
|
||||
desc.arginfo = QCOM_SCM_ARGS(2);
|
||||
|
||||
ret = qcom_scm_call(dev, &desc);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __qcom_scm_qseecom_do(struct device *dev, u32 cmd_id, struct scm_desc *desc,
|
||||
bool retry)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -509,6 +509,13 @@ int qcom_scm_iommu_secure_unmap(u64 sec_id, int cbndx, unsigned long iova,
|
|||
}
|
||||
EXPORT_SYMBOL(qcom_scm_iommu_secure_unmap);
|
||||
|
||||
int qcom_scm_mem_protect_audio(phys_addr_t paddr, size_t size)
|
||||
{
|
||||
return __qcom_scm_mem_protect_audio(__scm ? __scm->dev : NULL,
|
||||
paddr, size);
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_scm_mem_protect_audio);
|
||||
|
||||
/**
|
||||
* qcom_scm_assign_mem_regions() - Make a secure call to reassign memory
|
||||
* ownership of several memory regions
|
||||
|
|
|
|||
|
|
@ -274,6 +274,8 @@ extern int __qcom_scm_invoke_callback_response(struct device *dev,
|
|||
u64 *response_type, unsigned int *data);
|
||||
|
||||
extern void __qcom_scm_init(void);
|
||||
extern int __qcom_scm_mem_protect_audio(struct device *dev, phys_addr_t paddr,
|
||||
size_t size);
|
||||
|
||||
#ifdef CONFIG_QCOM_RTIC
|
||||
|
||||
|
|
|
|||
|
|
@ -202,6 +202,7 @@ extern int qcom_scm_invoke_callback_response(phys_addr_t out_buf,
|
|||
size_t out_buf_size, int32_t *result, u64 *response_type,
|
||||
unsigned int *data);
|
||||
extern bool qcom_scm_is_available(void);
|
||||
extern int qcom_scm_mem_protect_audio(phys_addr_t paddr, size_t size);
|
||||
#else
|
||||
|
||||
#include <linux/errno.h>
|
||||
|
|
@ -378,5 +379,7 @@ static inline int qcom_scm_invoke_callback_response(phys_addr_t out_buf,
|
|||
size_t out_buf_size, int32_t *result, u64 *request_type,
|
||||
unsigned int *data) { return -ENODEV; }
|
||||
static inline bool qcom_scm_is_available(void) { return false; }
|
||||
static inline int qcom_scm_mem_protect_audio(phys_addr_t paddr, size_t size)
|
||||
{ return -ENODEV; }
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue