aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-10-10 18:07:27 -0400
committerDavid S. Miller <davem@davemloft.net>2017-11-15 00:27:50 -0500
commit68fa10dce0bfe263000ea3fd147ed74f5a4342c2 (patch)
tree5fd5a005805e6384486973dddf4ffb31e8c325f2
parenta16036e9b2fbdadf44f9fbbdf95d173d3f78170b (diff)
sparc/led: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Adds a static variable to hold timeout value. Cc: "David S. Miller" <davem@davemloft.net> Cc: Geliang Tang <geliangtang@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: sparclinux@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc/kernel/led.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c
index e278bf52963b..519f5ba7ed7e 100644
--- a/arch/sparc/kernel/led.c
+++ b/arch/sparc/kernel/led.c
@@ -31,19 +31,20 @@ static inline void led_toggle(void)
31} 31}
32 32
33static struct timer_list led_blink_timer; 33static struct timer_list led_blink_timer;
34static unsigned long led_blink_timer_timeout;
34 35
35static void led_blink(unsigned long timeout) 36static void led_blink(struct timer_list *unused)
36{ 37{
38 unsigned long timeout = led_blink_timer_timeout;
39
37 led_toggle(); 40 led_toggle();
38 41
39 /* reschedule */ 42 /* reschedule */
40 if (!timeout) { /* blink according to load */ 43 if (!timeout) { /* blink according to load */
41 led_blink_timer.expires = jiffies + 44 led_blink_timer.expires = jiffies +
42 ((1 + (avenrun[0] >> FSHIFT)) * HZ); 45 ((1 + (avenrun[0] >> FSHIFT)) * HZ);
43 led_blink_timer.data = 0;
44 } else { /* blink at user specified interval */ 46 } else { /* blink at user specified interval */
45 led_blink_timer.expires = jiffies + (timeout * HZ); 47 led_blink_timer.expires = jiffies + (timeout * HZ);
46 led_blink_timer.data = timeout;
47 } 48 }
48 add_timer(&led_blink_timer); 49 add_timer(&led_blink_timer);
49} 50}
@@ -88,9 +89,11 @@ static ssize_t led_proc_write(struct file *file, const char __user *buffer,
88 } else if (!strcmp(buf, "toggle")) { 89 } else if (!strcmp(buf, "toggle")) {
89 led_toggle(); 90 led_toggle();
90 } else if ((*buf > '0') && (*buf <= '9')) { 91 } else if ((*buf > '0') && (*buf <= '9')) {
91 led_blink(simple_strtoul(buf, NULL, 10)); 92 led_blink_timer_timeout = simple_strtoul(buf, NULL, 10);
93 led_blink(&led_blink_timer);
92 } else if (!strcmp(buf, "load")) { 94 } else if (!strcmp(buf, "load")) {
93 led_blink(0); 95 led_blink_timer_timeout = 0;
96 led_blink(&led_blink_timer);
94 } else { 97 } else {
95 auxio_set_led(AUXIO_LED_OFF); 98 auxio_set_led(AUXIO_LED_OFF);
96 } 99 }
@@ -115,8 +118,7 @@ static struct proc_dir_entry *led;
115 118
116static int __init led_init(void) 119static int __init led_init(void)
117{ 120{
118 init_timer(&led_blink_timer); 121 timer_setup(&led_blink_timer, led_blink, 0);
119 led_blink_timer.function = led_blink;
120 122
121 led = proc_create("led", 0, NULL, &led_proc_fops); 123 led = proc_create("led", 0, NULL, &led_proc_fops);
122 if (!led) 124 if (!led)