From 5330a6895ed09dd99a4dbec4d45a16f10c0752ef Mon Sep 17 00:00:00 2001 From: Ajay Prathi Date: Thu, 19 Dec 2019 16:17:10 +0530 Subject: [PATCH 1/2] firmware: qcom_scm: Add changes for tsens reinit Add scm call support to reinitialize tsens. Change-Id: I52c2048cdc6ff1c078b9e6610eea6522221ec96b Signed-off-by: Ajay Prathi --- drivers/firmware/qcom_scm-smc.c | 17 ++++++++++++++++- drivers/firmware/qcom_scm.c | 8 +++++++- drivers/firmware/qcom_scm.h | 6 +++++- include/linux/qcom_scm.h | 5 ++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/qcom_scm-smc.c b/drivers/firmware/qcom_scm-smc.c index d600e457ad2e..c882ca07e2ef 100644 --- a/drivers/firmware/qcom_scm-smc.c +++ b/drivers/firmware/qcom_scm-smc.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2015,2019 The Linux Foundation. All rights reserved. +/* Copyright (c) 2015,2020 The Linux Foundation. All rights reserved. */ #include @@ -1870,6 +1870,21 @@ int __qcom_scm_camera_protect_phy_lanes(struct device *dev, bool protect, return qcom_scm_call(dev, &desc); } +int __qcom_scm_tsens_reinit(struct device *dev, int *tsens_ret) +{ + unsigned int ret; + struct qcom_scm_desc desc = { + .svc = QCOM_SCM_SVC_TSENS, + .cmd = QCOM_SCM_TSENS_INIT_ID, + }; + + ret = qcom_scm_call(dev, &desc); + if (tsens_ret) + *tsens_ret = desc.res[0]; + + return ret; +} + int __qcom_scm_ice_restore_cfg(struct device *dev) { struct qcom_scm_desc desc = { diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index ac7249b671e7..34cbb16b607e 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2010,2015,2019 The Linux Foundation. All rights reserved. +/* Copyright (c) 2010,2015,2020 The Linux Foundation. All rights reserved. * Copyright (C) 2015 Linaro Ltd. */ #include @@ -915,6 +915,12 @@ int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask) } EXPORT_SYMBOL(qcom_scm_camera_protect_phy_lanes); +int qcom_scm_tsens_reinit(int *tsens_ret) +{ + return __qcom_scm_tsens_reinit(__scm->dev, tsens_ret); +} +EXPORT_SYMBOL(qcom_scm_tsens_reinit); + int qcom_scm_ice_restore_cfg(void) { return __qcom_scm_ice_restore_cfg(__scm->dev); diff --git a/drivers/firmware/qcom_scm.h b/drivers/firmware/qcom_scm.h index 32e84fff6f98..e1d70dedb0ac 100644 --- a/drivers/firmware/qcom_scm.h +++ b/drivers/firmware/qcom_scm.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2010-2015,2019 The Linux Foundation. All rights reserved. +/* Copyright (c) 2010-2015,2020 The Linux Foundation. All rights reserved. */ #ifndef __QCOM_SCM_INT_H #define __QCOM_SCM_INT_H @@ -228,6 +228,10 @@ extern int __qcom_scm_camera_protect_phy_lanes(struct device *dev, extern int __qcom_scm_qseecom_do(struct device *dev, u32 cmd_id, struct scm_desc *desc, bool retry); +#define QCOM_SCM_SVC_TSENS 0x1E +#define QCOM_SCM_TSENS_INIT_ID 0x5 +extern int __qcom_scm_tsens_reinit(struct device *dev, int *tsens_ret); + // TOS Services and Function IDs #define QCOM_SCM_SVC_QSEELOG 0x01 #define QCOM_SCM_QSEELOG_REGISTER 0x06 diff --git a/include/linux/qcom_scm.h b/include/linux/qcom_scm.h index c403f7a3ca16..31ffaaa89590 100644 --- a/include/linux/qcom_scm.h +++ b/include/linux/qcom_scm.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2010-2015, 2018-2019 The Linux Foundation. All rights reserved. +/* Copyright (c) 2010-2015, 2018-2020 The Linux Foundation. All rights reserved. * Copyright (C) 2015 Linaro Ltd. */ #ifndef __QCOM_SCM_H @@ -179,6 +179,7 @@ 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_all(uint32_t protect, uint32_t param); extern int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask); +extern int qcom_scm_tsens_reinit(int *tsens_ret); 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); @@ -336,6 +337,8 @@ static inline int qcom_scm_camera_protect_all(uint32_t protect, uint32_t param) { return -ENODEV; } static inline int qcom_scm_camera_protect_phy_lanes(bool protect, u64 regmask) { return -EINVAL; } +static inline int qcom_scm_tsens_reinit(int *tsens_ret) + { return -ENODEV; } 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; } From e03586f944539196510a936129499b0b2142679b Mon Sep 17 00:00:00 2001 From: Ajay Prathi Date: Tue, 24 Dec 2019 14:19:05 +0530 Subject: [PATCH 2/2] arm64: defconfig: Enable TSENS driver for lahaina Add configuration changes in lahaina to support tsens driver. Change-Id: Ib6f6a1684bb62355741e826419e179b159cb3d31 Signed-off-by: Ajay Prathi --- arch/arm64/configs/vendor/lahaina_debug.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm64/configs/vendor/lahaina_debug.config b/arch/arm64/configs/vendor/lahaina_debug.config index 4d71564af1b0..d2f3ee1c140f 100644 --- a/arch/arm64/configs/vendor/lahaina_debug.config +++ b/arch/arm64/configs/vendor/lahaina_debug.config @@ -37,3 +37,6 @@ CONFIG_MHI_BUS=y CONFIG_MHI_DEBUG=y CONFIG_MHI_UCI=y CONFIG_ARM_QCOM_CPUFREQ_HW=y +CONFIG_THERMAL_TSENS=y +# CONFIG_USB_F_FS_IPC_LOGGING is not set +# CONFIG_MSM_JTAGV8 is not set