thermal/drivers/tegra-bpmp: Handle offline zones
Thermal zones located in power domains may not be accessible when the domain is powergated. In this situation, reading the temperature will return -BPMP_EFAULT. When evaluating trips, BPMP will internally use -256C as the temperature for offline zones. For smooth operation, for offline zones, return -EAGAIN when reading the temperature and allow registration of zones even if they are offline during probe. Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20230330094904.2589428-1-cyndis@kapsi.fi
This commit is contained in:
parent
fee5caec88
commit
cdd6076b0a
@ -52,6 +52,8 @@ static int __tegra_bpmp_thermal_get_temp(struct tegra_bpmp_thermal_zone *zone,
|
||||
err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg);
|
||||
if (err)
|
||||
return err;
|
||||
if (msg.rx.ret == -BPMP_EFAULT)
|
||||
return -EAGAIN;
|
||||
if (msg.rx.ret)
|
||||
return -EINVAL;
|
||||
|
||||
@ -209,7 +211,12 @@ static int tegra_bpmp_thermal_probe(struct platform_device *pdev)
|
||||
zone->tegra = tegra;
|
||||
|
||||
err = __tegra_bpmp_thermal_get_temp(zone, &temp);
|
||||
if (err < 0) {
|
||||
|
||||
/*
|
||||
* Sensors in powergated domains may temporarily fail to be read
|
||||
* (-EAGAIN), but will become accessible when the domain is powered on.
|
||||
*/
|
||||
if (err < 0 && err != -EAGAIN) {
|
||||
devm_kfree(&pdev->dev, zone);
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user