power: supply: sysfs: prepare for power supply extensions
authorThomas Weißschuh <linux@weissschuh.net>
Mon, 11 Nov 2024 21:40:07 +0000 (22:40 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 4 Dec 2024 23:02:31 +0000 (00:02 +0100)
The upcoming extension API will add properties which are not part of the
the power_supply_desc.
Use power_supply_has_property() so the properties from extensions are
also checked.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20241111-power-supply-extensions-v4-5-7240144daa8e@weissschuh.net
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/power_supply_sysfs.c

index a7351b9c8fe34a464a4e69b1a1a4a4179c1a4b4f..bfe48fe01a8d03828c2e539e1e6e5e9fc5c60167 100644 (file)
@@ -378,7 +378,6 @@ static umode_t power_supply_attr_is_visible(struct kobject *kobj,
        struct device *dev = kobj_to_dev(kobj);
        struct power_supply *psy = dev_get_drvdata(dev);
        umode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
-       int i;
 
        if (!power_supply_attrs[attrno].prop_name)
                return 0;
@@ -386,19 +385,11 @@ static umode_t power_supply_attr_is_visible(struct kobject *kobj,
        if (attrno == POWER_SUPPLY_PROP_TYPE)
                return mode;
 
-       for (i = 0; i < psy->desc->num_properties; i++) {
-               int property = psy->desc->properties[i];
-
-               if (property == attrno) {
-                       if (power_supply_property_is_writeable(psy, property) > 0)
-                               mode |= S_IWUSR;
-
-                       return mode;
-               }
-       }
-
-       if (power_supply_battery_info_has_prop(psy->battery_info, attrno))
+       if (power_supply_has_property(psy, attrno)) {
+               if (power_supply_property_is_writeable(psy, attrno) > 0)
+                       mode |= S_IWUSR;
                return mode;
+       }
 
        return 0;
 }