lkml.org 
[lkml]   [2020]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH net-next + leds v2 2/7] leds: add generic API for LEDs that can be controlled by hardware
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.behun@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.behun@nic.cz>
> + linux-leds@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
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2020-09-09 22:48    [W:0.208 / U:0.796 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site