mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
firmware: qcom_scm: Add calls for camera
- Add SCM API to notify secure world that a LUT should be secure. - Add SCM API to notify secure world that camera should be secure. Change-Id: I31b0ce2c58182f809d0875c64116436a30ce8f62 Signed-off-by: Elliot Berman <eberman@codeaurora.org>
This commit is contained in:
parent
3e20670941
commit
0d8b273093
4 changed files with 60 additions and 2 deletions
|
|
@ -1486,7 +1486,7 @@ int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev, bool en)
|
|||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
.svc = QCOM_SCM_SVC_SMMU_PROGRAM,
|
||||
.cmd = QCOM_SCM_SMMU_CONFIG_ERRATA1,
|
||||
.cmd = QCOM_SCM_SMMU_SECURE_LUT,
|
||||
.owner = ARM_SMCCC_OWNER_SIP,
|
||||
};
|
||||
|
||||
|
|
@ -1497,6 +1497,22 @@ int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev, bool en)
|
|||
return qcom_scm_call_atomic(dev, &desc);
|
||||
}
|
||||
|
||||
int __qcom_scm_smmu_notify_secure_lut(struct device *dev, u64 dev_id,
|
||||
bool secure)
|
||||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
.svc = QCOM_SCM_SVC_SMMU_PROGRAM,
|
||||
.cmd = QCOM_SCM_SMMU_SECURE_LUT,
|
||||
.owner = ARM_SMCCC_OWNER_SIP
|
||||
};
|
||||
|
||||
desc.args[0] = dev_id;
|
||||
desc.args[1] = secure;
|
||||
desc.arginfo = QCOM_SCM_ARGS(2);
|
||||
|
||||
return qcom_scm_call(dev, &desc);
|
||||
}
|
||||
|
||||
int __qcom_scm_qdss_invoke(struct device *dev, phys_addr_t addr, size_t size,
|
||||
u64 *out)
|
||||
{
|
||||
|
|
@ -1519,6 +1535,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_phy_lanes(struct device *dev, bool protect,
|
||||
u64 regmask)
|
||||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
.svc = QCOM_SCM_SVC_CAMERA,
|
||||
.cmd = QCOM_SCM_CAMERA_PROTECT_PHY_LANES,
|
||||
.owner = ARM_SMCCC_OWNER_SIP
|
||||
};
|
||||
|
||||
desc.args[0] = protect;
|
||||
desc.args[1] = regmask;
|
||||
desc.arginfo = QCOM_SCM_ARGS(2);
|
||||
|
||||
return qcom_scm_call(dev, &desc);
|
||||
}
|
||||
|
||||
int __qcom_scm_ice_restore_cfg(struct device *dev)
|
||||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
|
|
|
|||
|
|
@ -672,12 +672,25 @@ int qcom_scm_qsmmu500_wait_safe_toggle(bool en)
|
|||
}
|
||||
EXPORT_SYMBOL(qcom_scm_qsmmu500_wait_safe_toggle);
|
||||
|
||||
int qcom_scm_smmu_notify_secure_lut(u64 dev_id, bool secure)
|
||||
{
|
||||
return __qcom_scm_smmu_notify_secure_lut(__scm->dev, dev_id, secure);
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_scm_smmu_notify_secure_lut);
|
||||
|
||||
int qcom_scm_qdss_invoke(phys_addr_t paddr, size_t size, u64 *out)
|
||||
{
|
||||
return __qcom_scm_qdss_invoke(__scm->dev, paddr, size, out);
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_scm_qdss_invoke);
|
||||
|
||||
int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask)
|
||||
{
|
||||
return __qcom_scm_camera_protect_phy_lanes(__scm->dev, protect,
|
||||
regmask);
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_scm_camera_protect_phy_lanes);
|
||||
|
||||
int qcom_scm_ice_restore_cfg(void)
|
||||
{
|
||||
return __qcom_scm_ice_restore_cfg(__scm->dev);
|
||||
|
|
|
|||
|
|
@ -154,11 +154,13 @@ extern int __qcom_scm_hdcp_req(struct device *dev,
|
|||
|
||||
#define QCOM_SCM_SVC_SMMU_PROGRAM 0x15
|
||||
#define QCOM_SCM_SMMU_CHANGE_PGTBL_FORMAT 0x01
|
||||
#define QCOM_SCM_SMMU_CONFIG_ERRATA1 0x3
|
||||
#define QCOM_SCM_SMMU_SECURE_LUT 0x03
|
||||
extern int __qcom_scm_smmu_change_pgtbl_format(struct device *dev, u64 dev_id,
|
||||
int cbndx);
|
||||
extern int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev,
|
||||
bool enable);
|
||||
extern int __qcom_scm_smmu_notify_secure_lut(struct device *dev, u64 dev_id,
|
||||
bool secure);
|
||||
#define QCOM_SCM_SMMU_CONFIG_ERRATA1_CLIENT_ALL 0x2
|
||||
|
||||
#define QCOM_SCM_SVC_QDSS 0x16
|
||||
|
|
@ -166,6 +168,11 @@ extern int __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev,
|
|||
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_PHY_LANES 0x07
|
||||
extern int __qcom_scm_camera_protect_phy_lanes(struct device *dev,
|
||||
bool protect, u64 regmask);
|
||||
|
||||
// TOS Services and Function IDs
|
||||
#define QCOM_SCM_SVC_QSEELOG 0x01
|
||||
#define QCOM_SCM_QSEELOG_REGISTER 0x06
|
||||
|
|
|
|||
|
|
@ -97,7 +97,9 @@ extern int qcom_scm_create_shm_bridge(u64 pfn_and_ns_perm_flags,
|
|||
u64 ns_vmids, u64 *handle);
|
||||
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_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);
|
||||
extern int qcom_scm_register_qsee_log_buf(phys_addr_t buf, size_t len);
|
||||
|
|
@ -190,8 +192,12 @@ static inline int qcom_scm_smmu_change_pgtbl_format(u64 dev_id, int cbndx)
|
|||
{ return -ENODEV; }
|
||||
static inline int qcom_scm_qsmmu500_wait_safe_toggle(bool en)
|
||||
{ return -ENODEV; }
|
||||
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_phy_lanes(bool protect, u64 regmask)
|
||||
{ return -EINVAL; }
|
||||
static inline int qcom_scm_ice_restore_cfg(void) { return -ENODEV; }
|
||||
static inline int qcom_scm_get_tz_log_feat_id(u64 *version)
|
||||
{ return -ENODEV; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue