Hi!

> Many an ethernet PHY (and other chips) supports various HW control modes
> for LEDs connected directly to them.

I guess this should be

"Many ethernet PHYs (and other chips) support various HW control modes
for LEDs connected directly to them."

> This API registers a new private LED trigger called dev-hw-mode. When
> this trigger is enabled for a LED, the various HW control modes which
> are supported by the device for given LED can be get/set via hw_mode
> sysfs file.
> 
> Signed-off-by: Marek Behún <marek.be...@nic.cz>
> ---
>  .../sysfs-class-led-trigger-dev-hw-mode       |   8 +
>  drivers/leds/Kconfig                          |  10 +

I guess this should live in drivers/leds/trigger/ledtrig-hw.c . I'd
call the trigger just "hw"...

> +Contact:     Marek Behún <marek.be...@nic.cz>
> +             linux-l...@vger.kernel.org
> +Description: (W) Set the HW control mode of this LED. The various available 
> HW control modes
> +                 are specific per device to which the LED is connected to 
> and per LED itself.
> +             (R) Show the available HW control modes and the currently 
> selected one.

80 columns :-) (and please fix that globally, at least at places where
it is easy, like comments).

> +     return 0;
> +err_free:
> +     devm_kfree(dev, led);
> +     return ret;
> +}

No need for explicit free with devm_ infrastructure?

> +     cur_mode = led->ops->led_get_hw_mode(dev->parent, led);
> +
> +     for (mode = led->ops->led_iter_hw_mode(dev->parent, led, &iter);
> +          mode;
> +          mode = led->ops->led_iter_hw_mode(dev->parent, led, &iter)) {
> +             bool sel;
> +
> +             sel = cur_mode && !strcmp(mode, cur_mode);
> +
> +             len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s%s ", sel ? 
> "[" : "", mode,
> +                              sel ? "]" : "");
> +     }
> +
> +     if (buf[len - 1] == ' ')
> +             buf[len - 1] = '\n';

Can this ever be false? Are you accessing buf[-1] in such case?

> +int of_register_hw_controlled_leds(struct device *dev, const char 
> *devicename,
> +                                const struct hw_controlled_led_ops *ops);
> +int hw_controlled_led_brightness_set(struct led_classdev *cdev, enum 
> led_brightness brightness);
> +

Could we do something like hw_controlled_led -> hw_led to keep
verbosity down and line lengths reasonable? Or hwc_led?

> +extern struct led_hw_trigger_type hw_control_led_trig_type;
> +extern struct led_trigger hw_control_led_trig;
> +
> +#else /* !IS_ENABLED(CONFIG_LEDS_HW_CONTROLLED) */

CONFIG_LEDS_HWC? Or maybe CONFIG_LEDTRIG_HW?

Best regards,
                                                                        Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature

Reply via email to