@@ -7,6 +7,7 @@
#include <linux/delay.h>
#include <linux/bitops.h>
#include <linux/regmap.h>
+#include <linux/mfd/syscon.h>
#include <linux/thermal.h>
#include "tsens.h"
@@ -168,8 +169,17 @@ static int init_8960(struct tsens_priv *priv)
u32 reg_cntl;
priv->tm_map = dev_get_regmap(priv->dev, NULL);
- if (!priv->tm_map)
+ if (!priv->tm_map) {
+ struct device *parent = priv->dev->parent;
+
+ if (parent)
+ priv->tm_map = syscon_node_to_regmap(parent->of_node);
+ }
+
+ if (!priv->tm_map || IS_ERR(priv->tm_map)) {
+ dev_err(priv->dev, "failed to get tsens regmap\n");
return -ENODEV;
+ }
/*
* The status registers for each sensor are discontiguous
Devices based on 8060 tsens driver (ipq8064) use the reg of the gcc driver. Try to load the regmap of the parent as they share the same regs. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> --- drivers/thermal/qcom/tsens-8960.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)