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