Message ID | 20200716022817.30439-3-ansuelsmth@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for ipq8064 tsens | expand |
On Thu, Jul 16, 2020 at 7:58 AM Ansuel Smith <ansuelsmth@gmail.com> wrote: > > Devices based on 8060 tsens driver (ipq8064) use the reg of the gcc typo: 8960 > 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(-) > > diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c > index 2a28a5af209e..45788eb3c666 100644 > --- a/drivers/thermal/qcom/tsens-8960.c > +++ b/drivers/thermal/qcom/tsens-8960.c > @@ -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 > -- > 2.27.0 >
diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c index 2a28a5af209e..45788eb3c666 100644 --- a/drivers/thermal/qcom/tsens-8960.c +++ b/drivers/thermal/qcom/tsens-8960.c @@ -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(-)