aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds/leds.h
diff options
context:
space:
mode:
authorAkinobu Mita <akinobu.mita@gmail.com>2019-09-29 23:18:49 +0900
committerPavel <pavel@ucw.cz>2019-11-03 17:38:14 +0100
commit11f70002213774ed233950f71ea8803fa3700aa3 (patch)
treeba8c781e79c59e15456b49b1a363a15be74955c7 /drivers/leds/leds.h
parentleds: tlc591xx: update the maximum brightness (diff)
downloadlinux-dev-11f70002213774ed233950f71ea8803fa3700aa3.tar.xz
linux-dev-11f70002213774ed233950f71ea8803fa3700aa3.zip
leds: remove PAGE_SIZE limit of /sys/class/leds/<led>/trigger
Reading /sys/class/leds/<led>/trigger returns all available LED triggers. However, the size of this file is limited to PAGE_SIZE because of the limitation for sysfs attribute. Enabling LED CPU trigger on systems with thousands of CPUs easily hits PAGE_SIZE limit, and makes it impossible to see all available LED triggers and which trigger is currently activated. We work around it here by converting /sys/class/leds/<led>/trigger to binary attribute, which is not limited by length. This is _not_ good design, do not copy it. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: "Rafael J. Wysocki" <rafael@kernel.org> Cc: Pavel Machek <pavel@ucw.cz> Cc: Dan Murphy <dmurphy@ti.com>A Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Pavel Machek <pavel@ucw.cz>
Diffstat (limited to '')
-rw-r--r--drivers/leds/leds.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h
index 0b577cece8f7..2d9eb48bbed9 100644
--- a/drivers/leds/leds.h
+++ b/drivers/leds/leds.h
@@ -23,6 +23,12 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev,
enum led_brightness value);
void led_set_brightness_nosleep(struct led_classdev *led_cdev,
enum led_brightness value);
+ssize_t led_trigger_read(struct file *filp, struct kobject *kobj,
+ struct bin_attribute *attr, char *buf,
+ loff_t pos, size_t count);
+ssize_t led_trigger_write(struct file *filp, struct kobject *kobj,
+ struct bin_attribute *bin_attr, char *buf,
+ loff_t pos, size_t count);
extern struct rw_semaphore leds_list_lock;
extern struct list_head leds_list;