diff options
author | Kees Cook <keescook@chromium.org> | 2017-10-25 06:30:01 -0400 |
---|---|---|
committer | Jacek Anaszewski <jacek.anaszewski@gmail.com> | 2017-10-25 15:52:22 -0400 |
commit | 49404665b935447d4f2d5509fbff569b7bf8c495 (patch) | |
tree | ffd76d54cf5547b6a29d5f401c29803dd1cf2add /drivers/leds/trigger | |
parent | 3f3d60d6254cfe0b1a2ab675ec1f72f232314eff (diff) |
leds: 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.
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Willy Tarreau <w@1wt.eu>
Cc: linux-leds@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Diffstat (limited to 'drivers/leds/trigger')
-rw-r--r-- | drivers/leds/trigger/ledtrig-activity.c | 14 | ||||
-rw-r--r-- | drivers/leds/trigger/ledtrig-transient.c | 12 |
2 files changed, 15 insertions, 11 deletions
diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c index c6635c5e227a..5081894082bd 100644 --- a/drivers/leds/trigger/ledtrig-activity.c +++ b/drivers/leds/trigger/ledtrig-activity.c | |||
@@ -24,6 +24,7 @@ static int panic_detected; | |||
24 | 24 | ||
25 | struct activity_data { | 25 | struct activity_data { |
26 | struct timer_list timer; | 26 | struct timer_list timer; |
27 | struct led_classdev *led_cdev; | ||
27 | u64 last_used; | 28 | u64 last_used; |
28 | u64 last_boot; | 29 | u64 last_boot; |
29 | int time_left; | 30 | int time_left; |
@@ -31,10 +32,11 @@ struct activity_data { | |||
31 | int invert; | 32 | int invert; |
32 | }; | 33 | }; |
33 | 34 | ||
34 | static void led_activity_function(unsigned long data) | 35 | static void led_activity_function(struct timer_list *t) |
35 | { | 36 | { |
36 | struct led_classdev *led_cdev = (struct led_classdev *)data; | 37 | struct activity_data *activity_data = from_timer(activity_data, t, |
37 | struct activity_data *activity_data = led_cdev->trigger_data; | 38 | timer); |
39 | struct led_classdev *led_cdev = activity_data->led_cdev; | ||
38 | struct timespec boot_time; | 40 | struct timespec boot_time; |
39 | unsigned int target; | 41 | unsigned int target; |
40 | unsigned int usage; | 42 | unsigned int usage; |
@@ -195,11 +197,11 @@ static void activity_activate(struct led_classdev *led_cdev) | |||
195 | return; | 197 | return; |
196 | } | 198 | } |
197 | 199 | ||
198 | setup_timer(&activity_data->timer, | 200 | activity_data->led_cdev = led_cdev; |
199 | led_activity_function, (unsigned long)led_cdev); | 201 | timer_setup(&activity_data->timer, led_activity_function, 0); |
200 | if (!led_cdev->blink_brightness) | 202 | if (!led_cdev->blink_brightness) |
201 | led_cdev->blink_brightness = led_cdev->max_brightness; | 203 | led_cdev->blink_brightness = led_cdev->max_brightness; |
202 | led_activity_function(activity_data->timer.data); | 204 | led_activity_function(&activity_data->timer); |
203 | set_bit(LED_BLINK_SW, &led_cdev->work_flags); | 205 | set_bit(LED_BLINK_SW, &led_cdev->work_flags); |
204 | led_cdev->activated = true; | 206 | led_cdev->activated = true; |
205 | } | 207 | } |
diff --git a/drivers/leds/trigger/ledtrig-transient.c b/drivers/leds/trigger/ledtrig-transient.c index 7e6011bd3646..7acce64b692a 100644 --- a/drivers/leds/trigger/ledtrig-transient.c +++ b/drivers/leds/trigger/ledtrig-transient.c | |||
@@ -33,12 +33,14 @@ struct transient_trig_data { | |||
33 | int restore_state; | 33 | int restore_state; |
34 | unsigned long duration; | 34 | unsigned long duration; |
35 | struct timer_list timer; | 35 | struct timer_list timer; |
36 | struct led_classdev *led_cdev; | ||
36 | }; | 37 | }; |
37 | 38 | ||
38 | static void transient_timer_function(unsigned long data) | 39 | static void transient_timer_function(struct timer_list *t) |
39 | { | 40 | { |
40 | struct led_classdev *led_cdev = (struct led_classdev *) data; | 41 | struct transient_trig_data *transient_data = |
41 | struct transient_trig_data *transient_data = led_cdev->trigger_data; | 42 | from_timer(transient_data, t, timer); |
43 | struct led_classdev *led_cdev = transient_data->led_cdev; | ||
42 | 44 | ||
43 | transient_data->activate = 0; | 45 | transient_data->activate = 0; |
44 | led_set_brightness_nosleep(led_cdev, transient_data->restore_state); | 46 | led_set_brightness_nosleep(led_cdev, transient_data->restore_state); |
@@ -169,6 +171,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev) | |||
169 | return; | 171 | return; |
170 | } | 172 | } |
171 | led_cdev->trigger_data = tdata; | 173 | led_cdev->trigger_data = tdata; |
174 | tdata->led_cdev = led_cdev; | ||
172 | 175 | ||
173 | rc = device_create_file(led_cdev->dev, &dev_attr_activate); | 176 | rc = device_create_file(led_cdev->dev, &dev_attr_activate); |
174 | if (rc) | 177 | if (rc) |
@@ -182,8 +185,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev) | |||
182 | if (rc) | 185 | if (rc) |
183 | goto err_out_state; | 186 | goto err_out_state; |
184 | 187 | ||
185 | setup_timer(&tdata->timer, transient_timer_function, | 188 | timer_setup(&tdata->timer, transient_timer_function, 0); |
186 | (unsigned long) led_cdev); | ||
187 | led_cdev->activated = true; | 189 | led_cdev->activated = true; |
188 | 190 | ||
189 | return; | 191 | return; |