From 6009e24b133f348ec93056f87305398bfe6ee4eb Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Mon, 14 Oct 2019 11:20:51 -0700 Subject: [PATCH] input: touchscreen: synaptics_dsx: Migrate SCM calls Migrate secure world calls to qcom_scm driver in synaptics_dsx_core.c. Change-Id: Ie339dcad416658a0f1227b9a9ee995799695dc94 Signed-off-by: Elliot Berman --- drivers/firmware/qcom_scm-smc.c | 22 ++++++++++++++++++++++ drivers/firmware/qcom_scm.c | 7 +++++++ drivers/firmware/qcom_scm.h | 5 +++++ include/linux/qcom_scm.h | 3 +++ 4 files changed, 37 insertions(+) diff --git a/drivers/firmware/qcom_scm-smc.c b/drivers/firmware/qcom_scm-smc.c index 5dc3b7319b19..33e6a46aec7b 100644 --- a/drivers/firmware/qcom_scm-smc.c +++ b/drivers/firmware/qcom_scm-smc.c @@ -853,6 +853,28 @@ int __qcom_scm_get_sec_dump_state(struct device *dev, u32 *dump_state) return ret; } +int __qcom_scm_tz_blsp_modify_owner(struct device *dev, int food, u64 subsystem, + int *out) +{ + int ret; + struct qcom_scm_desc desc = { + .svc = QCOM_SCM_SVC_TZ, + .cmd = QOCM_SCM_TZ_BLSP_MODIFY_OWNER, + .owner = ARM_SMCCC_OWNER_SIP + }; + + desc.args[0] = subsystem; + desc.args[1] = food; + desc.arginfo = QCOM_SCM_ARGS(2); + + ret = qcom_scm_call(dev, &desc); + + if (out) + *out = desc.res[0]; + + return ret; +} + int __qcom_scm_io_readl(struct device *dev, phys_addr_t addr, unsigned int *val) { diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index c53835171f2c..7c6b949fa110 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -329,6 +329,13 @@ int qcom_scm_get_sec_dump_state(u32 *dump_state) } EXPORT_SYMBOL(qcom_scm_get_sec_dump_state); +int qcom_scm_tz_blsp_modify_owner(int food, u64 subsystem, int *out) +{ + return __qcom_scm_tz_blsp_modify_owner(__scm->dev, subsystem, food, + out); +} +EXPORT_SYMBOL(qcom_scm_tz_blsp_modify_owner); + int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val) { return __qcom_scm_io_readl(__scm->dev, addr, val); diff --git a/drivers/firmware/qcom_scm.h b/drivers/firmware/qcom_scm.h index 4e925c19ee5a..6a0cd805ed62 100644 --- a/drivers/firmware/qcom_scm.h +++ b/drivers/firmware/qcom_scm.h @@ -41,6 +41,11 @@ extern int __qcom_scm_pas_mss_reset(struct device *dev, bool reset); #define QCOM_SCM_UTIL_GET_SEC_DUMP_STATE 0x10 extern int __qcom_scm_get_sec_dump_state(struct device *dev, u32 *dump_state); +#define QCOM_SCM_SVC_TZ 0x04 +#define QOCM_SCM_TZ_BLSP_MODIFY_OWNER 0x03 +extern int __qcom_scm_tz_blsp_modify_owner(struct device *dev, int food, + u64 subsystem, int *out); + #define QCOM_SCM_SVC_IO 0x05 #define QCOM_SCM_IO_READ 0x01 #define QCOM_SCM_IO_WRITE 0x02 diff --git a/include/linux/qcom_scm.h b/include/linux/qcom_scm.h index ef19c6793b3e..3086587fa367 100644 --- a/include/linux/qcom_scm.h +++ b/include/linux/qcom_scm.h @@ -48,6 +48,7 @@ extern int qcom_scm_pas_mem_setup(u32 peripheral, phys_addr_t addr, extern int qcom_scm_pas_auth_and_reset(u32 peripheral); extern int qcom_scm_pas_shutdown(u32 peripheral); extern int qcom_scm_get_sec_dump_state(u32 *dump_state); +extern int qcom_scm_tz_blsp_modify_owner(int food, u64 subsystem, int *out); extern int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val); extern int qcom_scm_io_writel(phys_addr_t addr, unsigned int val); extern int qcom_scm_io_reset(void); @@ -128,6 +129,8 @@ static inline int qcom_scm_pas_auth_and_reset(u32 peripheral) static inline int qcom_scm_pas_shutdown(u32 peripheral) { return -ENODEV; } static inline int qcom_scm_get_sec_dump_state(u32 *dump_state) {return -ENODEV; } +static inline int qcom_scm_tz_blsp_modify_owner(int food, u64 subsystem, + int *out) { return -ENODEV; } static inline int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val) { return -ENODEV; } static inline int qcom_scm_io_writel(phys_addr_t addr, unsigned int val)