Hi 2021. október 1., péntek 18:08 keltezéssel, Tim Crawford írta: > Update kb_led_color to use the attr macro instead of manually making the > struct. While touching it, also change its show method to use > sysfs_emit() instead of sprintf(). > If you're already touching this part of the code, you should probably create an attribute group and set the `groups` field of the led_classdev struct instead of manually adding the attribute. Regards, Barnabás Pőcze > Signed-off-by: Tim Crawford <tcrawford@xxxxxxxxxxxx> > --- > drivers/platform/x86/system76_acpi.c | 18 ++++-------------- > 1 file changed, 4 insertions(+), 14 deletions(-) > > diff --git a/drivers/platform/x86/system76_acpi.c b/drivers/platform/x86/system76_acpi.c > index 5c525c242211..dd00eb2663d6 100644 > --- a/drivers/platform/x86/system76_acpi.c > +++ b/drivers/platform/x86/system76_acpi.c > @@ -354,7 +354,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 > @@ -382,14 +382,7 @@ static ssize_t kb_led_color_store( > return size; > } > > -static const struct device_attribute kb_led_color_dev_attr = { > - .attr = { > - .name = "color", > - .mode = 0644, > - }, > - .show = kb_led_color_show, > - .store = kb_led_color_store, > -}; > +static DEVICE_ATTR_RW(kb_led_color); > > // Notify that the keyboard LED was changed by hardware > static void kb_led_notify(struct system76_data *data) > @@ -669,10 +662,7 @@ static int system76_add(struct acpi_device *acpi_dev) > return err; > > if (data->kb_color >= 0) { > - err = device_create_file( > - data->kb_led.dev, > - &kb_led_color_dev_attr > - ); > + err = device_create_file(data->kb_led.dev, &dev_attr_kb_led_color); > if (err) > return err; > } > @@ -716,7 +706,7 @@ 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); > + device_remove_file(data->kb_led.dev, &dev_attr_kb_led_color); > > devm_led_classdev_unregister(&acpi_dev->dev, &data->ap_led); > devm_led_classdev_unregister(&acpi_dev->dev, &data->kb_led); > -- > 2.31.1