diff --git a/arch/arm64/configs/vendor/lahaina_debug.config b/arch/arm64/configs/vendor/lahaina_debug.config index e73eaabdc391..a62c043b5cb4 100644 --- a/arch/arm64/configs/vendor/lahaina_debug.config +++ b/arch/arm64/configs/vendor/lahaina_debug.config @@ -38,3 +38,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 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; }