Messages in this thread Patch in this message | | | From | Brian Norris <> | Subject | [PATCH] power: supply: core: Ignore -EIO for uevent | Date | Wed, 24 Aug 2022 16:57:20 -0700 |
| |
For uevents, we enumerate all properties. Some battery implementations don't implement all standard properties, and may return -EIO for properties that aren't recognized. This means we never report uevents for such batteries.
It's better to ignore these errors and skip the property, as we do with ENODATA and ENODEV.
Example battery implementation: Acer Chromebook Tab 10 (a.k.a. Google Gru-Scarlet) has a virtual "SBS" battery implementation in its Embedded Controller on top of an otherwise non-SBS battery.
Signed-off-by: Brian Norris <briannorris@chromium.org> ---
drivers/power/supply/power_supply_sysfs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c index 4239591e1522..36fce572a213 100644 --- a/drivers/power/supply/power_supply_sysfs.c +++ b/drivers/power/supply/power_supply_sysfs.c @@ -439,10 +439,12 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env, dev_attr = &pwr_attr->dev_attr; ret = power_supply_show_property(dev, dev_attr, prop_buf); - if (ret == -ENODEV || ret == -ENODATA) { + if (ret == -ENODEV || ret == -ENODATA || ret == -EIO) { /* * When a battery is absent, we expect -ENODEV. Don't abort; - * send the uevent with at least the the PRESENT=0 property + * send the uevent with at least the PRESENT=0 property. Some + * batteries also report EIO, even for some standard + * properties. */ return 0; } -- 2.37.2.672.g94769d06f0-goog
| |