Lines Matching refs:led_cdev
30 struct led_classdev *led_cdev = (void *)data; in led_timer_function() local
34 if (!led_cdev->blink_delay_on || !led_cdev->blink_delay_off) { in led_timer_function()
35 led_set_brightness_async(led_cdev, LED_OFF); in led_timer_function()
39 if (led_cdev->flags & LED_BLINK_ONESHOT_STOP) { in led_timer_function()
40 led_cdev->flags &= ~LED_BLINK_ONESHOT_STOP; in led_timer_function()
44 brightness = led_get_brightness(led_cdev); in led_timer_function()
47 if (led_cdev->delayed_set_value) { in led_timer_function()
48 led_cdev->blink_brightness = in led_timer_function()
49 led_cdev->delayed_set_value; in led_timer_function()
50 led_cdev->delayed_set_value = 0; in led_timer_function()
52 brightness = led_cdev->blink_brightness; in led_timer_function()
53 delay = led_cdev->blink_delay_on; in led_timer_function()
58 led_cdev->blink_brightness = brightness; in led_timer_function()
60 delay = led_cdev->blink_delay_off; in led_timer_function()
63 led_set_brightness_async(led_cdev, brightness); in led_timer_function()
69 if (led_cdev->flags & LED_BLINK_ONESHOT) { in led_timer_function()
70 if (led_cdev->flags & LED_BLINK_INVERT) { in led_timer_function()
72 led_cdev->flags |= LED_BLINK_ONESHOT_STOP; in led_timer_function()
75 led_cdev->flags |= LED_BLINK_ONESHOT_STOP; in led_timer_function()
79 mod_timer(&led_cdev->blink_timer, jiffies + msecs_to_jiffies(delay)); in led_timer_function()
84 struct led_classdev *led_cdev = in set_brightness_delayed() local
87 led_stop_software_blink(led_cdev); in set_brightness_delayed()
89 led_set_brightness_async(led_cdev, led_cdev->delayed_set_value); in set_brightness_delayed()
92 static void led_set_software_blink(struct led_classdev *led_cdev, in led_set_software_blink() argument
98 current_brightness = led_get_brightness(led_cdev); in led_set_software_blink()
100 led_cdev->blink_brightness = current_brightness; in led_set_software_blink()
101 if (!led_cdev->blink_brightness) in led_set_software_blink()
102 led_cdev->blink_brightness = led_cdev->max_brightness; in led_set_software_blink()
104 led_cdev->blink_delay_on = delay_on; in led_set_software_blink()
105 led_cdev->blink_delay_off = delay_off; in led_set_software_blink()
109 led_set_brightness_async(led_cdev, LED_OFF); in led_set_software_blink()
115 led_set_brightness_async(led_cdev, led_cdev->blink_brightness); in led_set_software_blink()
119 mod_timer(&led_cdev->blink_timer, jiffies + 1); in led_set_software_blink()
123 static void led_blink_setup(struct led_classdev *led_cdev, in led_blink_setup() argument
127 if (!(led_cdev->flags & LED_BLINK_ONESHOT) && in led_blink_setup()
128 led_cdev->blink_set && in led_blink_setup()
129 !led_cdev->blink_set(led_cdev, delay_on, delay_off)) in led_blink_setup()
136 led_set_software_blink(led_cdev, *delay_on, *delay_off); in led_blink_setup()
139 void led_init_core(struct led_classdev *led_cdev) in led_init_core() argument
141 INIT_WORK(&led_cdev->set_brightness_work, set_brightness_delayed); in led_init_core()
143 setup_timer(&led_cdev->blink_timer, led_timer_function, in led_init_core()
144 (unsigned long)led_cdev); in led_init_core()
148 void led_blink_set(struct led_classdev *led_cdev, in led_blink_set() argument
152 del_timer_sync(&led_cdev->blink_timer); in led_blink_set()
154 led_cdev->flags &= ~LED_BLINK_ONESHOT; in led_blink_set()
155 led_cdev->flags &= ~LED_BLINK_ONESHOT_STOP; in led_blink_set()
157 led_blink_setup(led_cdev, delay_on, delay_off); in led_blink_set()
161 void led_blink_set_oneshot(struct led_classdev *led_cdev, in led_blink_set_oneshot() argument
166 if ((led_cdev->flags & LED_BLINK_ONESHOT) && in led_blink_set_oneshot()
167 timer_pending(&led_cdev->blink_timer)) in led_blink_set_oneshot()
170 led_cdev->flags |= LED_BLINK_ONESHOT; in led_blink_set_oneshot()
171 led_cdev->flags &= ~LED_BLINK_ONESHOT_STOP; in led_blink_set_oneshot()
174 led_cdev->flags |= LED_BLINK_INVERT; in led_blink_set_oneshot()
176 led_cdev->flags &= ~LED_BLINK_INVERT; in led_blink_set_oneshot()
178 led_blink_setup(led_cdev, delay_on, delay_off); in led_blink_set_oneshot()
182 void led_stop_software_blink(struct led_classdev *led_cdev) in led_stop_software_blink() argument
184 del_timer_sync(&led_cdev->blink_timer); in led_stop_software_blink()
185 led_cdev->blink_delay_on = 0; in led_stop_software_blink()
186 led_cdev->blink_delay_off = 0; in led_stop_software_blink()
190 void led_set_brightness(struct led_classdev *led_cdev, in led_set_brightness() argument
196 if (led_cdev->blink_delay_on || led_cdev->blink_delay_off) { in led_set_brightness()
197 led_cdev->delayed_set_value = brightness; in led_set_brightness()
199 schedule_work(&led_cdev->set_brightness_work); in led_set_brightness()
203 if (led_cdev->flags & SET_BRIGHTNESS_ASYNC) { in led_set_brightness()
204 led_set_brightness_async(led_cdev, brightness); in led_set_brightness()
206 } else if (led_cdev->flags & SET_BRIGHTNESS_SYNC) in led_set_brightness()
207 ret = led_set_brightness_sync(led_cdev, brightness); in led_set_brightness()
212 dev_dbg(led_cdev->dev, "Setting LED brightness failed (%d)\n", in led_set_brightness()
217 int led_update_brightness(struct led_classdev *led_cdev) in led_update_brightness() argument
221 if (led_cdev->brightness_get) { in led_update_brightness()
222 ret = led_cdev->brightness_get(led_cdev); in led_update_brightness()
224 led_cdev->brightness = ret; in led_update_brightness()
234 void led_sysfs_disable(struct led_classdev *led_cdev) in led_sysfs_disable() argument
236 lockdep_assert_held(&led_cdev->led_access); in led_sysfs_disable()
238 led_cdev->flags |= LED_SYSFS_DISABLE; in led_sysfs_disable()
243 void led_sysfs_enable(struct led_classdev *led_cdev) in led_sysfs_enable() argument
245 lockdep_assert_held(&led_cdev->led_access); in led_sysfs_enable()
247 led_cdev->flags &= ~LED_SYSFS_DISABLE; in led_sysfs_enable()