diff mbox series

[RFC,v6,1/8] drivers: thermal: tsens: use get_temp for tsens_valid

Message ID 20200814134123.14566-2-ansuelsmth@gmail.com
State New
Headers show
Series [RFC,v6,1/8] drivers: thermal: tsens: use get_temp for tsens_valid | expand

Commit Message

Christian Marangi Aug. 14, 2020, 1:41 p.m. UTC
Use the driver get_temp function instead of force to use the generic get
temp function. This is needed as tsens v0 version use a custom function
to get the real temperature.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 drivers/thermal/qcom/tsens.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Amit Kucheria Nov. 22, 2020, 7:35 p.m. UTC | #1
Hi Ansuel,

My apologies for being tardy in reviewing this series. Career changes...

On Fri, Aug 14, 2020 at 7:12 PM Ansuel Smith <ansuelsmth@gmail.com> wrote:
>

> Use the driver get_temp function instead of force to use the generic get

> temp function. This is needed as tsens v0 version use a custom function

> to get the real temperature.

>

> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>

> ---

>  drivers/thermal/qcom/tsens.c | 5 ++---

>  1 file changed, 2 insertions(+), 3 deletions(-)

>

> diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c

> index 9af6f71ab640..9fe9a2b26705 100644

> --- a/drivers/thermal/qcom/tsens.c

> +++ b/drivers/thermal/qcom/tsens.c

> @@ -580,7 +580,6 @@ int get_temp_tsens_valid(const struct tsens_sensor *s, int *temp)

>  {

>         struct tsens_priv *priv = s->priv;

>         int hw_id = s->hw_id;

> -       u32 temp_idx = LAST_TEMP_0 + hw_id;

>         u32 valid_idx = VALID_0 + hw_id;

>         u32 valid;

>         int ret;

> @@ -600,9 +599,9 @@ int get_temp_tsens_valid(const struct tsens_sensor *s, int *temp)

>         }

>

>         /* Valid bit is set, OK to read the temperature */

> -       *temp = tsens_hw_to_mC(s, temp_idx);

> +       ret = priv->ops->get_temp(s, temp);


This is wrong.

.get_temp is set to get_temp_tsens_valid() for v1 and v2 platforms. So
you've just broken all those platforms by creating a recursive loop.

I assume you were trying to use the common interrupt code which
currently uses get_temp_tsens_valid()? I suggest trying to add 8960
support to tsens_hw_to_mC().

>

> -       return 0;

> +       return ret;

>  }

>

>  int get_temp_common(const struct tsens_sensor *s, int *temp)

> --

> 2.27.0

>
diff mbox series

Patch

diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 9af6f71ab640..9fe9a2b26705 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -580,7 +580,6 @@  int get_temp_tsens_valid(const struct tsens_sensor *s, int *temp)
 {
 	struct tsens_priv *priv = s->priv;
 	int hw_id = s->hw_id;
-	u32 temp_idx = LAST_TEMP_0 + hw_id;
 	u32 valid_idx = VALID_0 + hw_id;
 	u32 valid;
 	int ret;
@@ -600,9 +599,9 @@  int get_temp_tsens_valid(const struct tsens_sensor *s, int *temp)
 	}
 
 	/* Valid bit is set, OK to read the temperature */
-	*temp = tsens_hw_to_mC(s, temp_idx);
+	ret = priv->ops->get_temp(s, temp);
 
-	return 0;
+	return ret;
 }
 
 int get_temp_common(const struct tsens_sensor *s, int *temp)