Skip to content

Commit

Permalink
leds: Convert timers to use timer_setup()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Willy Tarreau <[email protected]>
Cc: [email protected]
Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: Jacek Anaszewski <[email protected]>
  • Loading branch information
kees authored and jacek-anaszewski committed Oct 25, 2017
1 parent 3f3d60d commit 4940466
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 15 deletions.
7 changes: 3 additions & 4 deletions drivers/leds/led-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ static int __led_set_brightness_blocking(struct led_classdev *led_cdev,
return led_cdev->brightness_set_blocking(led_cdev, value);
}

static void led_timer_function(unsigned long data)
static void led_timer_function(struct timer_list *t)
{
struct led_classdev *led_cdev = (void *)data;
struct led_classdev *led_cdev = from_timer(led_cdev, t, blink_timer);
unsigned long brightness;
unsigned long delay;

Expand Down Expand Up @@ -178,8 +178,7 @@ void led_init_core(struct led_classdev *led_cdev)
{
INIT_WORK(&led_cdev->set_brightness_work, set_brightness_delayed);

setup_timer(&led_cdev->blink_timer, led_timer_function,
(unsigned long)led_cdev);
timer_setup(&led_cdev->blink_timer, led_timer_function, 0);
}
EXPORT_SYMBOL_GPL(led_init_core);

Expand Down
14 changes: 8 additions & 6 deletions drivers/leds/trigger/ledtrig-activity.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,19 @@ static int panic_detected;

struct activity_data {
struct timer_list timer;
struct led_classdev *led_cdev;
u64 last_used;
u64 last_boot;
int time_left;
int state;
int invert;
};

static void led_activity_function(unsigned long data)
static void led_activity_function(struct timer_list *t)
{
struct led_classdev *led_cdev = (struct led_classdev *)data;
struct activity_data *activity_data = led_cdev->trigger_data;
struct activity_data *activity_data = from_timer(activity_data, t,
timer);
struct led_classdev *led_cdev = activity_data->led_cdev;
struct timespec boot_time;
unsigned int target;
unsigned int usage;
Expand Down Expand Up @@ -195,11 +197,11 @@ static void activity_activate(struct led_classdev *led_cdev)
return;
}

setup_timer(&activity_data->timer,
led_activity_function, (unsigned long)led_cdev);
activity_data->led_cdev = led_cdev;
timer_setup(&activity_data->timer, led_activity_function, 0);
if (!led_cdev->blink_brightness)
led_cdev->blink_brightness = led_cdev->max_brightness;
led_activity_function(activity_data->timer.data);
led_activity_function(&activity_data->timer);
set_bit(LED_BLINK_SW, &led_cdev->work_flags);
led_cdev->activated = true;
}
Expand Down
12 changes: 7 additions & 5 deletions drivers/leds/trigger/ledtrig-transient.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@ struct transient_trig_data {
int restore_state;
unsigned long duration;
struct timer_list timer;
struct led_classdev *led_cdev;
};

static void transient_timer_function(unsigned long data)
static void transient_timer_function(struct timer_list *t)
{
struct led_classdev *led_cdev = (struct led_classdev *) data;
struct transient_trig_data *transient_data = led_cdev->trigger_data;
struct transient_trig_data *transient_data =
from_timer(transient_data, t, timer);
struct led_classdev *led_cdev = transient_data->led_cdev;

transient_data->activate = 0;
led_set_brightness_nosleep(led_cdev, transient_data->restore_state);
Expand Down Expand Up @@ -169,6 +171,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)
return;
}
led_cdev->trigger_data = tdata;
tdata->led_cdev = led_cdev;

rc = device_create_file(led_cdev->dev, &dev_attr_activate);
if (rc)
Expand All @@ -182,8 +185,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)
if (rc)
goto err_out_state;

setup_timer(&tdata->timer, transient_timer_function,
(unsigned long) led_cdev);
timer_setup(&tdata->timer, transient_timer_function, 0);
led_cdev->activated = true;

return;
Expand Down

0 comments on commit 4940466

Please sign in to comment.