All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: Alim Akhtar <alim.akhtar@gmail.com>
Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>,
	Kukjin Kim <kgene@kernel.org>,
	linux-pm@vger.kernel.org,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/5] thermal: exynos: Fix first temperature read after registering sensor
Date: Wed, 04 Nov 2015 12:18:09 +0100	[thread overview]
Message-ID: <20151104121809.24f99f79@amdc2363> (raw)
In-Reply-To: <CAGOxZ51BuqBGBECngB3YnNQJ4Ae+LNfTvqntg+GxdAih4GPXzQ@mail.gmail.com>

Hi Alim,

> Hello,
> 
> On Thu, Oct 8, 2015 at 11:04 AM, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
> > Thermal core could not read the temperature after registering the
> > thermal sensor with thermal_zone_of_sensor_register() because the
> > driver was not yet initialized.
> >
> > The call trace looked like:
> >     exynos_tmu_probe()
> >         thermal_zone_of_sensor_register()
> >             of_thermal_set_mode()
> >                 thermal_zone_device_update()
> >                     exynos_get_temp()
> >                         if (!data->tmu_read) return -EINVAL;
> >         exynos_map_dt_data()
> >             data->tmu_read = ...
> >
> > This produced an error in dmesg:
> > thermal thermal_zone0: failed to read out thermal zone (-22)
> >
> > Register the thermal_zone_device later, after parsing Device Tree
> > and enabling necessary clocks, but before calling
> > exynos_tmu_initialize() which uses the registered
> > thermal_zone_device.
> >
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> > Fixes: 3b6a1a805f34 ("thermal: samsung: core: Exynos TMU rework to
> > use device tree for configuration") ---
> Patch looks good to me.
> 
> Before this patch I was getting below on exynos5800 board:
> [    2.648629] thermal thermal_zone0: failed to read out thermal zone
> (-22) [    2.653906] 10060000.tmu supply vtmu not found, using dummy
> regulator [    2.660521] thermal thermal_zone1: failed to read out
> thermal zone (-22) [    2.666985] 10064000.tmu supply vtmu not found,
> using dummy regulator [    2.673658] thermal thermal_zone2: failed to
> read out thermal zone (-22) [    2.680093] 10068000.tmu supply vtmu
> not found, using dummy regulator [    2.686901] thermal
> thermal_zone3: failed to read out thermal zone (-22) [    2.693187]
> 1006c000.tmu supply vtmu not found, using dummy regulator
> [    2.699914] thermal thermal_zone4: failed to read out thermal zone
> (-22) [    2.706332] 100a0000.tmu supply vtmu not found, using dummy
> regulator
> 
> 
> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
> 
> Tested on exynos5800 peach board, so
> Tested-by: Alim Akhtar <alim.akhtar@samsung.com>
> 
> 
> >  drivers/thermal/samsung/exynos_tmu.c | 27 +++++++++++++++++--------
> --
> >  1 file changed, 17 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/thermal/samsung/exynos_tmu.c
> > b/drivers/thermal/samsung/exynos_tmu.c index
> > 23f4320f8ef7..bc71a61f0c4a 100644 ---
> > a/drivers/thermal/samsung/exynos_tmu.c +++
> > b/drivers/thermal/samsung/exynos_tmu.c @@ -1289,13 +1289,6 @@
> > static int exynos_tmu_probe(struct platform_device *pdev)
> > platform_set_drvdata(pdev, data); mutex_init(&data->lock);
> >
> > -       data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0,
> > data,
> > -
> > &exynos_sensor_ops);
> > -       if (IS_ERR(data->tzd)) {
> > -               pr_err("thermal: tz: %p ERROR\n", data->tzd);
> > -               return PTR_ERR(data->tzd);
> > -       }
> > -
> >         /*
> >          * Try enabling the regulator if found
> >          * TODO: Add regulator as an SOC feature, so that regulator
> > enable @@ -1365,21 +1358,36 @@ static int exynos_tmu_probe(struct
> > platform_device *pdev) break;
> >         };
> >
> > +       /*
> > +        * data->tzd must be registered before calling
> > exynos_tmu_initialize(),
> > +        * requesting irq and calling exynos_tmu_control().
> > +        */
> > +       data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0,
> > data,
> > +
> > &exynos_sensor_ops);
> > +       if (IS_ERR(data->tzd)) {
> > +               ret = PTR_ERR(data->tzd);
> > +               dev_err(&pdev->dev, "Failed to register sensor:
> > %d\n", ret);
> > +               goto err_sclk;
> > +       }
> > +
> >         ret = exynos_tmu_initialize(pdev);
> >         if (ret) {
> >                 dev_err(&pdev->dev, "Failed to initialize TMU\n");
> > -               goto err_sclk;
> > +               goto err_thermal;
> >         }
> >
> >         ret = devm_request_irq(&pdev->dev, data->irq,
> > exynos_tmu_irq, IRQF_TRIGGER_RISING | IRQF_SHARED,
> > dev_name(&pdev->dev), data); if (ret) {
> >                 dev_err(&pdev->dev, "Failed to request irq: %d\n",
> > data->irq);
> > -               goto err_sclk;
> > +               goto err_thermal;
> >         }
> >
> >         exynos_tmu_control(pdev, true);
> >         return 0;
> > +
> > +err_thermal:
> > +       thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd);
> >  err_sclk:
> >         clk_disable_unprepare(data->sclk);
> >  err_clk:
> > @@ -1390,7 +1398,6 @@ err_clk_sec:
> >  err_sensor:
> >         if (!IS_ERR_OR_NULL(data->regulator))
> >                 regulator_disable(data->regulator);
> > -       thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd);
> >
> >         return ret;
> >  }
> > --
> > 1.9.1
> >
> >
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 
> 

Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

WARNING: multiple messages have this Message-ID (diff)
From: l.majewski@samsung.com (Lukasz Majewski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/5] thermal: exynos: Fix first temperature read after registering sensor
Date: Wed, 04 Nov 2015 12:18:09 +0100	[thread overview]
Message-ID: <20151104121809.24f99f79@amdc2363> (raw)
In-Reply-To: <CAGOxZ51BuqBGBECngB3YnNQJ4Ae+LNfTvqntg+GxdAih4GPXzQ@mail.gmail.com>

Hi Alim,

> Hello,
> 
> On Thu, Oct 8, 2015 at 11:04 AM, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
> > Thermal core could not read the temperature after registering the
> > thermal sensor with thermal_zone_of_sensor_register() because the
> > driver was not yet initialized.
> >
> > The call trace looked like:
> >     exynos_tmu_probe()
> >         thermal_zone_of_sensor_register()
> >             of_thermal_set_mode()
> >                 thermal_zone_device_update()
> >                     exynos_get_temp()
> >                         if (!data->tmu_read) return -EINVAL;
> >         exynos_map_dt_data()
> >             data->tmu_read = ...
> >
> > This produced an error in dmesg:
> > thermal thermal_zone0: failed to read out thermal zone (-22)
> >
> > Register the thermal_zone_device later, after parsing Device Tree
> > and enabling necessary clocks, but before calling
> > exynos_tmu_initialize() which uses the registered
> > thermal_zone_device.
> >
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> > Fixes: 3b6a1a805f34 ("thermal: samsung: core: Exynos TMU rework to
> > use device tree for configuration") ---
> Patch looks good to me.
> 
> Before this patch I was getting below on exynos5800 board:
> [    2.648629] thermal thermal_zone0: failed to read out thermal zone
> (-22) [    2.653906] 10060000.tmu supply vtmu not found, using dummy
> regulator [    2.660521] thermal thermal_zone1: failed to read out
> thermal zone (-22) [    2.666985] 10064000.tmu supply vtmu not found,
> using dummy regulator [    2.673658] thermal thermal_zone2: failed to
> read out thermal zone (-22) [    2.680093] 10068000.tmu supply vtmu
> not found, using dummy regulator [    2.686901] thermal
> thermal_zone3: failed to read out thermal zone (-22) [    2.693187]
> 1006c000.tmu supply vtmu not found, using dummy regulator
> [    2.699914] thermal thermal_zone4: failed to read out thermal zone
> (-22) [    2.706332] 100a0000.tmu supply vtmu not found, using dummy
> regulator
> 
> 
> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
> 
> Tested on exynos5800 peach board, so
> Tested-by: Alim Akhtar <alim.akhtar@samsung.com>
> 
> 
> >  drivers/thermal/samsung/exynos_tmu.c | 27 +++++++++++++++++--------
> --
> >  1 file changed, 17 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/thermal/samsung/exynos_tmu.c
> > b/drivers/thermal/samsung/exynos_tmu.c index
> > 23f4320f8ef7..bc71a61f0c4a 100644 ---
> > a/drivers/thermal/samsung/exynos_tmu.c +++
> > b/drivers/thermal/samsung/exynos_tmu.c @@ -1289,13 +1289,6 @@
> > static int exynos_tmu_probe(struct platform_device *pdev)
> > platform_set_drvdata(pdev, data); mutex_init(&data->lock);
> >
> > -       data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0,
> > data,
> > -
> > &exynos_sensor_ops);
> > -       if (IS_ERR(data->tzd)) {
> > -               pr_err("thermal: tz: %p ERROR\n", data->tzd);
> > -               return PTR_ERR(data->tzd);
> > -       }
> > -
> >         /*
> >          * Try enabling the regulator if found
> >          * TODO: Add regulator as an SOC feature, so that regulator
> > enable @@ -1365,21 +1358,36 @@ static int exynos_tmu_probe(struct
> > platform_device *pdev) break;
> >         };
> >
> > +       /*
> > +        * data->tzd must be registered before calling
> > exynos_tmu_initialize(),
> > +        * requesting irq and calling exynos_tmu_control().
> > +        */
> > +       data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0,
> > data,
> > +
> > &exynos_sensor_ops);
> > +       if (IS_ERR(data->tzd)) {
> > +               ret = PTR_ERR(data->tzd);
> > +               dev_err(&pdev->dev, "Failed to register sensor:
> > %d\n", ret);
> > +               goto err_sclk;
> > +       }
> > +
> >         ret = exynos_tmu_initialize(pdev);
> >         if (ret) {
> >                 dev_err(&pdev->dev, "Failed to initialize TMU\n");
> > -               goto err_sclk;
> > +               goto err_thermal;
> >         }
> >
> >         ret = devm_request_irq(&pdev->dev, data->irq,
> > exynos_tmu_irq, IRQF_TRIGGER_RISING | IRQF_SHARED,
> > dev_name(&pdev->dev), data); if (ret) {
> >                 dev_err(&pdev->dev, "Failed to request irq: %d\n",
> > data->irq);
> > -               goto err_sclk;
> > +               goto err_thermal;
> >         }
> >
> >         exynos_tmu_control(pdev, true);
> >         return 0;
> > +
> > +err_thermal:
> > +       thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd);
> >  err_sclk:
> >         clk_disable_unprepare(data->sclk);
> >  err_clk:
> > @@ -1390,7 +1398,6 @@ err_clk_sec:
> >  err_sensor:
> >         if (!IS_ERR_OR_NULL(data->regulator))
> >                 regulator_disable(data->regulator);
> > -       thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd);
> >
> >         return ret;
> >  }
> > --
> > 1.9.1
> >
> >
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 
> 

Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2015-11-04 11:18 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-08  5:34 [PATCH 1/5] thermal: exynos: Fix unbalanced regulator disable on probe failure Krzysztof Kozlowski
2015-10-08  5:34 ` Krzysztof Kozlowski
2015-10-08  5:34 ` [PATCH 2/5] thermal: exynos: Fix first temperature read after registering sensor Krzysztof Kozlowski
2015-10-08  5:34   ` Krzysztof Kozlowski
2015-10-08 16:43   ` Alim Akhtar
2015-10-08 16:43     ` Alim Akhtar
2015-11-04 11:18     ` Lukasz Majewski [this message]
2015-11-04 11:18       ` Lukasz Majewski
2015-10-08  5:34 ` [PATCH 3/5] thermal: exynos: Use IS_ERR() because regulator cannot be NULL Krzysztof Kozlowski
2015-10-08  5:34   ` Krzysztof Kozlowski
2015-10-08 16:46   ` Alim Akhtar
2015-10-08 16:46     ` Alim Akhtar
2015-11-04 11:17     ` Lukasz Majewski
2015-11-04 11:17       ` Lukasz Majewski
2015-10-08  5:34 ` [PATCH 4/5] thermal: exynos: Remove unneeded semicolon Krzysztof Kozlowski
2015-10-08  5:34   ` Krzysztof Kozlowski
2015-11-04 10:52   ` Lukasz Majewski
2015-11-04 10:52     ` Lukasz Majewski
2015-10-08  5:34 ` [PATCH 5/5] thermal: exynos: Directly return 0 instead of using local ret variable Krzysztof Kozlowski
2015-10-08  5:34   ` Krzysztof Kozlowski
2015-10-08 16:47   ` Alim Akhtar
2015-10-08 16:47     ` Alim Akhtar
2015-11-04 10:51     ` Lukasz Majewski
2015-11-04 10:51       ` Lukasz Majewski
2015-10-08 16:45 ` [PATCH 1/5] thermal: exynos: Fix unbalanced regulator disable on probe failure Alim Akhtar
2015-10-08 16:45   ` Alim Akhtar
2015-10-09 10:58   ` Krzysztof Kozlowski
2015-10-09 10:58     ` Krzysztof Kozlowski
2015-10-10  1:46     ` Alim Akhtar
2015-10-10  1:46       ` Alim Akhtar
2015-11-04 10:52       ` Lukasz Majewski
2015-11-04 10:52         ` Lukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151104121809.24f99f79@amdc2363 \
    --to=l.majewski@samsung.com \
    --cc=alim.akhtar@gmail.com \
    --cc=edubezval@gmail.com \
    --cc=k.kozlowski@samsung.com \
    --cc=kgene@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=rui.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.