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 > --- > .../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 > + 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