Commit 322900ac authored by Hans de Goede's avatar Hans de Goede Committed by Sebastian Reichel
Browse files

power: supply: sysfs: Move power_supply_show_enum_with_available() up



Move power_supply_show_enum_with_available() higher up in
the power_supply_sysfs.c file.

This is a preparation patch to avoid needing a forward declaration
when replacing power_supply_show_usb_type() with it later on.

This commit only moves the function, there are no changes to it.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20240831142039.28830-6-hdegoede@redhat.com


Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent a6456d43
Loading
Loading
Loading
Loading
+31 −31
Original line number Diff line number Diff line
@@ -237,6 +237,37 @@ static enum power_supply_property dev_attr_psp(struct device_attribute *attr)
	return  to_ps_attr(attr) - power_supply_attrs;
}

static ssize_t power_supply_show_enum_with_available(
			struct device *dev, const char * const labels[], int label_count,
			unsigned int available_values, int value, char *buf)
{
	bool match = false, available, active;
	ssize_t count = 0;
	int i;

	for (i = 0; i < label_count; i++) {
		available = available_values & BIT(i);
		active = i == value;

		if (available && active) {
			count += sysfs_emit_at(buf, count, "[%s] ", labels[i]);
			match = true;
		} else if (available) {
			count += sysfs_emit_at(buf, count, "%s ", labels[i]);
		}
	}

	if (!match) {
		dev_warn(dev, "driver reporting unavailable enum value %d\n", value);
		return -EINVAL;
	}

	if (count)
		buf[count - 1] = '\n';

	return count;
}

static ssize_t power_supply_show_usb_type(struct device *dev,
					  const struct power_supply_desc *desc,
					  union power_supply_propval *value,
@@ -518,37 +549,6 @@ int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env)
	return ret;
}

static ssize_t power_supply_show_enum_with_available(
			struct device *dev, const char * const labels[], int label_count,
			unsigned int available_values, int value, char *buf)
{
	bool match = false, available, active;
	ssize_t count = 0;
	int i;

	for (i = 0; i < label_count; i++) {
		available = available_values & BIT(i);
		active = i == value;

		if (available && active) {
			count += sysfs_emit_at(buf, count, "[%s] ", labels[i]);
			match = true;
		} else if (available) {
			count += sysfs_emit_at(buf, count, "%s ", labels[i]);
		}
	}

	if (!match) {
		dev_warn(dev, "driver reporting unavailable enum value %d\n", value);
		return -EINVAL;
	}

	if (count)
		buf[count - 1] = '\n';

	return count;
}

ssize_t power_supply_charge_behaviour_show(struct device *dev,
					   unsigned int available_behaviours,
					   enum power_supply_charge_behaviour current_behaviour,