diff options
Diffstat (limited to 'drivers/leds')
-rw-r--r-- | drivers/leds/Kconfig | 4 | ||||
-rw-r--r-- | drivers/leds/led-class.c | 2 | ||||
-rw-r--r-- | drivers/leds/led-core.c | 7 | ||||
-rw-r--r-- | drivers/leds/ledtrig-heartbeat.c | 16 |
4 files changed, 18 insertions, 11 deletions
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index 04cb8c88d74b..12b2b55c519e 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig | |||
@@ -379,7 +379,7 @@ config LEDS_NETXBIG | |||
379 | 379 | ||
380 | config LEDS_ASIC3 | 380 | config LEDS_ASIC3 |
381 | bool "LED support for the HTC ASIC3" | 381 | bool "LED support for the HTC ASIC3" |
382 | depends on LEDS_CLASS | 382 | depends on LEDS_CLASS=y |
383 | depends on MFD_ASIC3 | 383 | depends on MFD_ASIC3 |
384 | default y | 384 | default y |
385 | help | 385 | help |
@@ -390,7 +390,7 @@ config LEDS_ASIC3 | |||
390 | 390 | ||
391 | config LEDS_RENESAS_TPU | 391 | config LEDS_RENESAS_TPU |
392 | bool "LED support for Renesas TPU" | 392 | bool "LED support for Renesas TPU" |
393 | depends on LEDS_CLASS && HAVE_CLK && GENERIC_GPIO | 393 | depends on LEDS_CLASS=y && HAVE_CLK && GENERIC_GPIO |
394 | help | 394 | help |
395 | This option enables build of the LED TPU platform driver, | 395 | This option enables build of the LED TPU platform driver, |
396 | suitable to drive any TPU channel on newer Renesas SoCs. | 396 | suitable to drive any TPU channel on newer Renesas SoCs. |
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 8ee92c81aec2..e663e6f413e9 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c | |||
@@ -29,7 +29,7 @@ static void led_update_brightness(struct led_classdev *led_cdev) | |||
29 | led_cdev->brightness = led_cdev->brightness_get(led_cdev); | 29 | led_cdev->brightness = led_cdev->brightness_get(led_cdev); |
30 | } | 30 | } |
31 | 31 | ||
32 | static ssize_t led_brightness_show(struct device *dev, | 32 | static ssize_t led_brightness_show(struct device *dev, |
33 | struct device_attribute *attr, char *buf) | 33 | struct device_attribute *attr, char *buf) |
34 | { | 34 | { |
35 | struct led_classdev *led_cdev = dev_get_drvdata(dev); | 35 | struct led_classdev *led_cdev = dev_get_drvdata(dev); |
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c index d6860043f6f9..d65353d8d3fc 100644 --- a/drivers/leds/led-core.c +++ b/drivers/leds/led-core.c | |||
@@ -44,13 +44,6 @@ static void led_set_software_blink(struct led_classdev *led_cdev, | |||
44 | if (!led_cdev->blink_brightness) | 44 | if (!led_cdev->blink_brightness) |
45 | led_cdev->blink_brightness = led_cdev->max_brightness; | 45 | led_cdev->blink_brightness = led_cdev->max_brightness; |
46 | 46 | ||
47 | if (led_get_trigger_data(led_cdev) && | ||
48 | delay_on == led_cdev->blink_delay_on && | ||
49 | delay_off == led_cdev->blink_delay_off) | ||
50 | return; | ||
51 | |||
52 | led_stop_software_blink(led_cdev); | ||
53 | |||
54 | led_cdev->blink_delay_on = delay_on; | 47 | led_cdev->blink_delay_on = delay_on; |
55 | led_cdev->blink_delay_off = delay_off; | 48 | led_cdev->blink_delay_off = delay_off; |
56 | 49 | ||
diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c index 41dc76db4311..a019fbb70880 100644 --- a/drivers/leds/ledtrig-heartbeat.c +++ b/drivers/leds/ledtrig-heartbeat.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/reboot.h> | 21 | #include <linux/reboot.h> |
22 | #include "leds.h" | 22 | #include "leds.h" |
23 | 23 | ||
24 | static int panic_heartbeats; | ||
25 | |||
24 | struct heartbeat_trig_data { | 26 | struct heartbeat_trig_data { |
25 | unsigned int phase; | 27 | unsigned int phase; |
26 | unsigned int period; | 28 | unsigned int period; |
@@ -34,6 +36,11 @@ static void led_heartbeat_function(unsigned long data) | |||
34 | unsigned long brightness = LED_OFF; | 36 | unsigned long brightness = LED_OFF; |
35 | unsigned long delay = 0; | 37 | unsigned long delay = 0; |
36 | 38 | ||
39 | if (unlikely(panic_heartbeats)) { | ||
40 | led_set_brightness(led_cdev, LED_OFF); | ||
41 | return; | ||
42 | } | ||
43 | |||
37 | /* acts like an actual heart beat -- ie thump-thump-pause... */ | 44 | /* acts like an actual heart beat -- ie thump-thump-pause... */ |
38 | switch (heartbeat_data->phase) { | 45 | switch (heartbeat_data->phase) { |
39 | case 0: | 46 | case 0: |
@@ -111,12 +118,19 @@ static int heartbeat_reboot_notifier(struct notifier_block *nb, | |||
111 | return NOTIFY_DONE; | 118 | return NOTIFY_DONE; |
112 | } | 119 | } |
113 | 120 | ||
121 | static int heartbeat_panic_notifier(struct notifier_block *nb, | ||
122 | unsigned long code, void *unused) | ||
123 | { | ||
124 | panic_heartbeats = 1; | ||
125 | return NOTIFY_DONE; | ||
126 | } | ||
127 | |||
114 | static struct notifier_block heartbeat_reboot_nb = { | 128 | static struct notifier_block heartbeat_reboot_nb = { |
115 | .notifier_call = heartbeat_reboot_notifier, | 129 | .notifier_call = heartbeat_reboot_notifier, |
116 | }; | 130 | }; |
117 | 131 | ||
118 | static struct notifier_block heartbeat_panic_nb = { | 132 | static struct notifier_block heartbeat_panic_nb = { |
119 | .notifier_call = heartbeat_reboot_notifier, | 133 | .notifier_call = heartbeat_panic_notifier, |
120 | }; | 134 | }; |
121 | 135 | ||
122 | static int __init heartbeat_trig_init(void) | 136 | static int __init heartbeat_trig_init(void) |