Re: [PATCH v2 1/3] thermal: tegra: continue if sensor register fails

From: Daniel Lezcano
Date: Wed Nov 21 2018 - 07:51:25 EST


On 21/11/2018 11:23, Wei Ni wrote:
>
>
> On 21/11/2018 4:55 PM, Daniel Lezcano wrote:
>> On 13/11/2018 11:06, Wei Ni wrote:
>>> Don't bail when a sensor fails to register with the
>>> thermal zone and allow other sensors to register.
>>> This allows other sensors to register with thermal
>>> framework even if one sensor fails registration.
>>
>> I'm not sure if ignoring the error is really safe. Can you describe the
>> real situation you want to overcome ? How do you differentiate critical
>> sensors ?
>
> The driver will always try to register 4 thermal zones, including cpu,
> gpu, mem and pll, but if the dts file doesn't set the corresponding
> sensors, then the register will be failed.
> Normally, the dts file will set all 4 sensors, but there may have some
> platform doesn't support them all. So we post this patch.

Ignoring errors is not the way to go to support different platforms. Fix
the DT.


> BTW, what do you mean "critical sensors"? We will set critical trip temp
> for all sensors.

I meant sensor for thermal zone getting really high temperature.


>>> Signed-off-by: Wei Ni <wni@xxxxxxxxxx>
>>> ---
>>> drivers/thermal/tegra/soctherm.c | 8 +++++---
>>> 1 file changed, 5 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
>>> index ed28110a3535..a824d2e63af3 100644
>>> --- a/drivers/thermal/tegra/soctherm.c
>>> +++ b/drivers/thermal/tegra/soctherm.c
>>> @@ -1370,9 +1370,9 @@ static int tegra_soctherm_probe(struct platform_device *pdev)
>>> &tegra_of_thermal_ops);
>>> if (IS_ERR(z)) {
>>> err = PTR_ERR(z);
>>> - dev_err(&pdev->dev, "failed to register sensor: %d\n",
>>> - err);
>>> - goto disable_clocks;
>>> + dev_warn(&pdev->dev, "failed to register sensor %s: %d\n",
>>> + soc->ttgs[i]->name, err);
>>> + continue;
>>> }
>>>
>>> zone->tz = z;
>>> @@ -1434,6 +1434,8 @@ static int __maybe_unused soctherm_resume(struct device *dev)
>>> struct thermal_zone_device *tz;
>>>
>>> tz = tegra->thermctl_tzs[soc->ttgs[i]->id];
>>> + if (!tz)
>>> + continue;
>>> err = tegra_soctherm_set_hwtrips(dev, soc->ttgs[i], tz);
>>> if (err) {
>>> dev_err(&pdev->dev,
>>>
>>
>>


--
<http://www.linaro.org/> Linaro.org â Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog