mirror of
https://github.com/torvalds/linux.git
synced 2025-01-01 15:51:46 +00:00
power: supply: ab8500: Defer thermal zone probe
The call thermal_zone_get_zone_by_name() used to return the
thermal zone right away, but recent refactorings in the
thermal core has changed this so the thermal zone used by
the battery is probed later, and the call returns -ENODEV.
This was always quite fragile. If we get -ENODEV, then
return a -EPROBE_DEFER and try again later.
Cc: phone-devel@vger.kernel.org
Fixes: 2b0e7ac084
("power: supply: ab8500: Integrate thermal zone")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
f9be5cb6c1
commit
767e684367
@ -725,7 +725,14 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
|
||||
/* Get thermal zone and ADC */
|
||||
di->tz = thermal_zone_get_zone_by_name("battery-thermal");
|
||||
if (IS_ERR(di->tz)) {
|
||||
return dev_err_probe(dev, PTR_ERR(di->tz),
|
||||
ret = PTR_ERR(di->tz);
|
||||
/*
|
||||
* This usually just means we are probing before the thermal
|
||||
* zone, so just defer.
|
||||
*/
|
||||
if (ret == -ENODEV)
|
||||
ret = -EPROBE_DEFER;
|
||||
return dev_err_probe(dev, ret,
|
||||
"failed to get battery thermal zone\n");
|
||||
}
|
||||
di->bat_ctrl = devm_iio_channel_get(dev, "bat_ctrl");
|
||||
|
Loading…
Reference in New Issue
Block a user