aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds/trigger
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-10-25 06:30:01 -0400
committerJacek Anaszewski <jacek.anaszewski@gmail.com>2017-10-25 15:52:22 -0400
commit49404665b935447d4f2d5509fbff569b7bf8c495 (patch)
treeffd76d54cf5547b6a29d5f401c29803dd1cf2add /drivers/leds/trigger
parent3f3d60d6254cfe0b1a2ab675ec1f72f232314eff (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.c14
-rw-r--r--drivers/leds/trigger/ledtrig-transient.c12
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
25struct activity_data { 25struct 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
34static void led_activity_function(unsigned long data) 35static 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
38static void transient_timer_function(unsigned long data) 39static 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;