diff options
author | Kees Cook <keescook@chromium.org> | 2017-10-10 18:07:27 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-15 00:27:50 -0500 |
commit | 68fa10dce0bfe263000ea3fd147ed74f5a4342c2 (patch) | |
tree | 5fd5a005805e6384486973dddf4ffb31e8c325f2 | |
parent | a16036e9b2fbdadf44f9fbbdf95d173d3f78170b (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.c | 16 |
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 | ||
33 | static struct timer_list led_blink_timer; | 33 | static struct timer_list led_blink_timer; |
34 | static unsigned long led_blink_timer_timeout; | ||
34 | 35 | ||
35 | static void led_blink(unsigned long timeout) | 36 | static 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 | ||
116 | static int __init led_init(void) | 119 | static 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) |