[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <985ed415774fdac9ac21afad4b4b74f30f6c5068.1533815718.git.amit.kucheria@linaro.org>
Date: Thu, 9 Aug 2018 18:02:39 +0530
From: Amit Kucheria <amit.kucheria@...aro.org>
To: linux-kernel@...r.kernel.org
Cc: rnayak@...eaurora.org, linux-arm-msm@...r.kernel.org,
bjorn.andersson@...aro.org, edubezval@...il.com,
smohanad@...eaurora.org, andy.gross@...aro.org,
dianders@...omium.org, mka@...omium.org,
Zhang Rui <rui.zhang@...el.com>, linux-pm@...r.kernel.org
Subject: [PATCH v1 07/10] thermal: tsens: Check if the IP is correctly enabled by firmware
The SROT registers are initialised by the secure firmware at boot. We
don't have write access to the registers. Check if the block is enabled
before continuing.
Signed-off-by: Amit Kucheria <amit.kucheria@...aro.org>
---
drivers/thermal/qcom/tsens-common.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 0b8a793f15f4..d250b757d1f0 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -12,6 +12,11 @@
#include <linux/regmap.h>
#include "tsens.h"
+/* SROT */
+#define CTRL_OFFSET 0x4
+#define TSENS_EN BIT(0)
+
+/* TM */
#define STATUS_OFFSET 0x30
#define SN_ADDR_OFFSET 0x4
#define SN_ST_TEMP_MASK 0x3ff
@@ -119,6 +124,8 @@ int __init init_common(struct tsens_device *tmdev)
{
void __iomem *tm_base, *srot_base;
struct resource *res;
+ u32 code;
+ int ret;
struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
if (!op)
@@ -151,5 +158,15 @@ int __init init_common(struct tsens_device *tmdev)
if (IS_ERR(tmdev->tm_map))
return PTR_ERR(tmdev->tm_map);
+ if (tmdev->srot_map) {
+ ret = regmap_read(tmdev->srot_map, CTRL_OFFSET, &code);
+ if (ret)
+ return ret;
+ if (!(code & TSENS_EN)) {
+ dev_err(tmdev->dev, "tsens device is not enabled\n");
+ return -ENODEV;
+ }
+ }
+
return 0;
}
--
2.17.1
Powered by blists - more mailing lists