ledtrig-heartbeat.c (033692eb3ec8305f6e9998b297aaec6899680637) ledtrig-heartbeat.c (2282e125a406e09331c5a785e3df29035c99a607)
1/*
2 * LED Heartbeat Trigger
3 *
4 * Copyright (C) 2006 Atsushi Nemoto <anemo@mba.ocn.ne.jp>
5 *
6 * Based on Richard Purdie's ledtrig-timer.c and some arch's
7 * CONFIG_HEARTBEAT code.
8 *

--- 107 unchanged lines hidden (view full) ---

116
117 heartbeat_data->invert = !!state;
118
119 return size;
120}
121
122static DEVICE_ATTR(invert, 0644, led_invert_show, led_invert_store);
123
1/*
2 * LED Heartbeat Trigger
3 *
4 * Copyright (C) 2006 Atsushi Nemoto <anemo@mba.ocn.ne.jp>
5 *
6 * Based on Richard Purdie's ledtrig-timer.c and some arch's
7 * CONFIG_HEARTBEAT code.
8 *

--- 107 unchanged lines hidden (view full) ---

116
117 heartbeat_data->invert = !!state;
118
119 return size;
120}
121
122static DEVICE_ATTR(invert, 0644, led_invert_show, led_invert_store);
123
124static void heartbeat_trig_activate(struct led_classdev *led_cdev)
124static int heartbeat_trig_activate(struct led_classdev *led_cdev)
125{
126 struct heartbeat_trig_data *heartbeat_data;
127 int rc;
128
129 heartbeat_data = kzalloc(sizeof(*heartbeat_data), GFP_KERNEL);
130 if (!heartbeat_data)
125{
126 struct heartbeat_trig_data *heartbeat_data;
127 int rc;
128
129 heartbeat_data = kzalloc(sizeof(*heartbeat_data), GFP_KERNEL);
130 if (!heartbeat_data)
131 return;
131 return 0;
132
133 led_cdev->trigger_data = heartbeat_data;
134 heartbeat_data->led_cdev = led_cdev;
135 rc = device_create_file(led_cdev->dev, &dev_attr_invert);
136 if (rc) {
137 kfree(led_cdev->trigger_data);
132
133 led_cdev->trigger_data = heartbeat_data;
134 heartbeat_data->led_cdev = led_cdev;
135 rc = device_create_file(led_cdev->dev, &dev_attr_invert);
136 if (rc) {
137 kfree(led_cdev->trigger_data);
138 return;
138 return 0;
139 }
140
141 timer_setup(&heartbeat_data->timer, led_heartbeat_function, 0);
142 heartbeat_data->phase = 0;
143 if (!led_cdev->blink_brightness)
144 led_cdev->blink_brightness = led_cdev->max_brightness;
145 led_heartbeat_function(&heartbeat_data->timer);
146 set_bit(LED_BLINK_SW, &led_cdev->work_flags);
147 led_cdev->activated = true;
139 }
140
141 timer_setup(&heartbeat_data->timer, led_heartbeat_function, 0);
142 heartbeat_data->phase = 0;
143 if (!led_cdev->blink_brightness)
144 led_cdev->blink_brightness = led_cdev->max_brightness;
145 led_heartbeat_function(&heartbeat_data->timer);
146 set_bit(LED_BLINK_SW, &led_cdev->work_flags);
147 led_cdev->activated = true;
148
149 return 0;
148}
149
150static void heartbeat_trig_deactivate(struct led_classdev *led_cdev)
151{
152 struct heartbeat_trig_data *heartbeat_data = led_cdev->trigger_data;
153
154 if (led_cdev->activated) {
155 del_timer_sync(&heartbeat_data->timer);

--- 61 unchanged lines hidden ---
150}
151
152static void heartbeat_trig_deactivate(struct led_classdev *led_cdev)
153{
154 struct heartbeat_trig_data *heartbeat_data = led_cdev->trigger_data;
155
156 if (led_cdev->activated) {
157 del_timer_sync(&heartbeat_data->timer);

--- 61 unchanged lines hidden ---