drivers: thermal: tsens: Work with old DTBs

Message ID 39d6b8e4b2cc5836839cfae7cdf0ee3470653b64.1576058136.git.amit.kucheria@linaro.org
State New
Headers show
Series
  • drivers: thermal: tsens: Work with old DTBs
Related show

Commit Message

Amit Kucheria Dec. 11, 2019, 9:58 a.m.
In order for the old DTBs to continue working, the new interrupt code
must not return an error if interrupts are not defined.

Fixes: 634e11d5b450a ("drivers: thermal: tsens: Add interrupt support")
Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>

---
 drivers/thermal/qcom/tsens.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

-- 
2.20.1

Comments

Amit Kucheria Dec. 12, 2019, 9:50 a.m. | #1
On Wed, Dec 11, 2019 at 9:42 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>

> On 11/12/2019 10:58, Amit Kucheria wrote:

> > In order for the old DTBs to continue working, the new interrupt code

> > must not return an error if interrupts are not defined.

> >

> > Fixes: 634e11d5b450a ("drivers: thermal: tsens: Add interrupt support")

> > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>

> > ---

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

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

> >

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

> > index 015e7d2015985..d8f51067ed411 100644

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

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

> > @@ -109,7 +109,7 @@ static int tsens_register(struct tsens_priv *priv)

> >

> >       irq = platform_get_irq_byname(pdev, "uplow");

> >       if (irq < 0) {

> > -             ret = irq;

>

> 'ret' remains uninitialized here.

>

> > +             dev_warn(&pdev->dev, "Missing uplow irq in DT\n");

> >               goto err_put_device;

> >       }

> >

> > @@ -118,7 +118,8 @@ static int tsens_register(struct tsens_priv *priv)

> >                                       IRQF_TRIGGER_HIGH | IRQF_ONESHOT,

> >                                       dev_name(&pdev->dev), priv);

> >       if (ret) {

> > -             dev_err(&pdev->dev, "%s: failed to get irq\n", __func__);

> > +             dev_warn(&pdev->dev, "%s: failed to get uplow irq\n", __func__);

> > +             ret = 0;

> >               goto err_put_device;

> >       }

>

> The code now is unable to make a distinction between an error in the DT

> and the old DT :/

>

> Why not version the DT?


Versioning the DT is probably overkill for this driver. Just checking
for ENXIO as suggested by Stephan seems to be enough. We don't lose
the error checking for devm_request_threaded_irq either.

Regards,
Amit

Patch

diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 015e7d2015985..d8f51067ed411 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -109,7 +109,7 @@  static int tsens_register(struct tsens_priv *priv)
 
 	irq = platform_get_irq_byname(pdev, "uplow");
 	if (irq < 0) {
-		ret = irq;
+		dev_warn(&pdev->dev, "Missing uplow irq in DT\n");
 		goto err_put_device;
 	}
 
@@ -118,7 +118,8 @@  static int tsens_register(struct tsens_priv *priv)
 					IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
 					dev_name(&pdev->dev), priv);
 	if (ret) {
-		dev_err(&pdev->dev, "%s: failed to get irq\n", __func__);
+		dev_warn(&pdev->dev, "%s: failed to get uplow irq\n", __func__);
+		ret = 0;
 		goto err_put_device;
 	}