Commit 603a7dd0 authored by Tim Crawford's avatar Tim Crawford Committed by Hans de Goede
Browse files

platform/x86: system76_acpi: Add attribute group for kb_led_color



Create the attribute groups for kb_led_color and set the `groups` field
in kb_led. While touching it, also change its show method to use
sysfs_emit() instead of sprintf().

Signed-off-by: default avatarTim Crawford <tcrawford@system76.com>
Link: https://lore.kernel.org/r/20211006202202.7479-5-tcrawford@system76.com


Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 76f7eba3
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -348,7 +348,7 @@ static ssize_t kb_led_color_show(

	led = (struct led_classdev *)dev->driver_data;
	data = container_of(led, struct system76_data, kb_led);
	return sprintf(buf, "%06X\n", data->kb_color);
	return sysfs_emit(buf, "%06X\n", data->kb_color);
}

// Set the keyboard LED color
@@ -376,7 +376,7 @@ static ssize_t kb_led_color_store(
	return size;
}

static const struct device_attribute kb_led_color_dev_attr = {
static struct device_attribute dev_attr_kb_led_color = {
	.attr = {
		.name = "color",
		.mode = 0644,
@@ -385,6 +385,13 @@ static const struct device_attribute kb_led_color_dev_attr = {
	.store = kb_led_color_store,
};

static struct attribute *system76_kb_led_color_attrs[] = {
	&dev_attr_kb_led_color.attr,
	NULL,
};

ATTRIBUTE_GROUPS(system76_kb_led_color);

// Notify that the keyboard LED was changed by hardware
static void kb_led_notify(struct system76_data *data)
{
@@ -685,6 +692,7 @@ static int system76_add(struct acpi_device *acpi_dev)
	data->kb_led.brightness_set_blocking = kb_led_set;
	if (acpi_has_method(acpi_device_handle(data->acpi_dev), "SKBC")) {
		data->kb_led.max_brightness = 255;
		data->kb_led.groups = system76_kb_led_color_groups;
		data->kb_toggle_brightness = 72;
		data->kb_color = 0xffffff;
		system76_set(data, "SKBC", data->kb_color);
@@ -696,15 +704,6 @@ static int system76_add(struct acpi_device *acpi_dev)
	if (err)
		return err;

	if (data->kb_color >= 0) {
		err = device_create_file(
			data->kb_led.dev,
			&kb_led_color_dev_attr
		);
		if (err)
			return err;
	}

	data->input = devm_input_allocate_device(&acpi_dev->dev);
	if (!data->input)
		return -ENOMEM;
@@ -753,9 +752,6 @@ static int system76_remove(struct acpi_device *acpi_dev)

	system76_battery_exit();

	if (data->kb_color >= 0)
		device_remove_file(data->kb_led.dev, &kb_led_color_dev_attr);

	devm_led_classdev_unregister(&acpi_dev->dev, &data->ap_led);
	devm_led_classdev_unregister(&acpi_dev->dev, &data->kb_led);