• Home
  • Raw
  • Download

Lines Matching refs:led_cdev

28 static int __led_set_brightness(struct led_classdev *led_cdev,  in __led_set_brightness()  argument
31 if (!led_cdev->brightness_set) in __led_set_brightness()
34 led_cdev->brightness_set(led_cdev, value); in __led_set_brightness()
39 static int __led_set_brightness_blocking(struct led_classdev *led_cdev, in __led_set_brightness_blocking() argument
42 if (!led_cdev->brightness_set_blocking) in __led_set_brightness_blocking()
45 return led_cdev->brightness_set_blocking(led_cdev, value); in __led_set_brightness_blocking()
50 struct led_classdev *led_cdev = (void *)data; in led_timer_function() local
54 if (!led_cdev->blink_delay_on || !led_cdev->blink_delay_off) { in led_timer_function()
55 led_set_brightness_nosleep(led_cdev, LED_OFF); in led_timer_function()
56 clear_bit(LED_BLINK_SW, &led_cdev->work_flags); in led_timer_function()
61 &led_cdev->work_flags)) { in led_timer_function()
62 clear_bit(LED_BLINK_SW, &led_cdev->work_flags); in led_timer_function()
66 brightness = led_get_brightness(led_cdev); in led_timer_function()
70 &led_cdev->work_flags)) in led_timer_function()
71 brightness = led_cdev->new_blink_brightness; in led_timer_function()
73 brightness = led_cdev->blink_brightness; in led_timer_function()
74 delay = led_cdev->blink_delay_on; in led_timer_function()
79 led_cdev->blink_brightness = brightness; in led_timer_function()
81 delay = led_cdev->blink_delay_off; in led_timer_function()
84 led_set_brightness_nosleep(led_cdev, brightness); in led_timer_function()
90 if (test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags)) { in led_timer_function()
91 if (test_bit(LED_BLINK_INVERT, &led_cdev->work_flags)) { in led_timer_function()
94 &led_cdev->work_flags); in led_timer_function()
98 &led_cdev->work_flags); in led_timer_function()
102 mod_timer(&led_cdev->blink_timer, jiffies + msecs_to_jiffies(delay)); in led_timer_function()
107 struct led_classdev *led_cdev = in set_brightness_delayed() local
111 if (test_and_clear_bit(LED_BLINK_DISABLE, &led_cdev->work_flags)) { in set_brightness_delayed()
112 led_cdev->delayed_set_value = LED_OFF; in set_brightness_delayed()
113 led_stop_software_blink(led_cdev); in set_brightness_delayed()
116 ret = __led_set_brightness(led_cdev, led_cdev->delayed_set_value); in set_brightness_delayed()
118 ret = __led_set_brightness_blocking(led_cdev, in set_brightness_delayed()
119 led_cdev->delayed_set_value); in set_brightness_delayed()
122 !(ret == -ENODEV && (led_cdev->flags & LED_UNREGISTERING) && in set_brightness_delayed()
123 (led_cdev->flags & LED_HW_PLUGGABLE))) in set_brightness_delayed()
124 dev_err(led_cdev->dev, in set_brightness_delayed()
128 static void led_set_software_blink(struct led_classdev *led_cdev, in led_set_software_blink() argument
134 current_brightness = led_get_brightness(led_cdev); in led_set_software_blink()
136 led_cdev->blink_brightness = current_brightness; in led_set_software_blink()
137 if (!led_cdev->blink_brightness) in led_set_software_blink()
138 led_cdev->blink_brightness = led_cdev->max_brightness; in led_set_software_blink()
140 led_cdev->blink_delay_on = delay_on; in led_set_software_blink()
141 led_cdev->blink_delay_off = delay_off; in led_set_software_blink()
145 led_set_brightness_nosleep(led_cdev, LED_OFF); in led_set_software_blink()
151 led_set_brightness_nosleep(led_cdev, in led_set_software_blink()
152 led_cdev->blink_brightness); in led_set_software_blink()
156 set_bit(LED_BLINK_SW, &led_cdev->work_flags); in led_set_software_blink()
157 mod_timer(&led_cdev->blink_timer, jiffies + 1); in led_set_software_blink()
161 static void led_blink_setup(struct led_classdev *led_cdev, in led_blink_setup() argument
165 if (!test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags) && in led_blink_setup()
166 led_cdev->blink_set && in led_blink_setup()
167 !led_cdev->blink_set(led_cdev, delay_on, delay_off)) in led_blink_setup()
174 led_set_software_blink(led_cdev, *delay_on, *delay_off); in led_blink_setup()
177 void led_init_core(struct led_classdev *led_cdev) in led_init_core() argument
179 INIT_WORK(&led_cdev->set_brightness_work, set_brightness_delayed); in led_init_core()
181 setup_timer(&led_cdev->blink_timer, led_timer_function, in led_init_core()
182 (unsigned long)led_cdev); in led_init_core()
186 void led_blink_set(struct led_classdev *led_cdev, in led_blink_set() argument
190 del_timer_sync(&led_cdev->blink_timer); in led_blink_set()
192 clear_bit(LED_BLINK_SW, &led_cdev->work_flags); in led_blink_set()
193 clear_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags); in led_blink_set()
194 clear_bit(LED_BLINK_ONESHOT_STOP, &led_cdev->work_flags); in led_blink_set()
196 led_blink_setup(led_cdev, delay_on, delay_off); in led_blink_set()
200 void led_blink_set_oneshot(struct led_classdev *led_cdev, in led_blink_set_oneshot() argument
205 if (test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags) && in led_blink_set_oneshot()
206 timer_pending(&led_cdev->blink_timer)) in led_blink_set_oneshot()
209 set_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags); in led_blink_set_oneshot()
210 clear_bit(LED_BLINK_ONESHOT_STOP, &led_cdev->work_flags); in led_blink_set_oneshot()
213 set_bit(LED_BLINK_INVERT, &led_cdev->work_flags); in led_blink_set_oneshot()
215 clear_bit(LED_BLINK_INVERT, &led_cdev->work_flags); in led_blink_set_oneshot()
217 led_blink_setup(led_cdev, delay_on, delay_off); in led_blink_set_oneshot()
221 void led_stop_software_blink(struct led_classdev *led_cdev) in led_stop_software_blink() argument
223 del_timer_sync(&led_cdev->blink_timer); in led_stop_software_blink()
224 led_cdev->blink_delay_on = 0; in led_stop_software_blink()
225 led_cdev->blink_delay_off = 0; in led_stop_software_blink()
226 clear_bit(LED_BLINK_SW, &led_cdev->work_flags); in led_stop_software_blink()
230 void led_set_brightness(struct led_classdev *led_cdev, in led_set_brightness() argument
237 if (test_bit(LED_BLINK_SW, &led_cdev->work_flags)) { in led_set_brightness()
244 set_bit(LED_BLINK_DISABLE, &led_cdev->work_flags); in led_set_brightness()
245 schedule_work(&led_cdev->set_brightness_work); in led_set_brightness()
248 &led_cdev->work_flags); in led_set_brightness()
249 led_cdev->new_blink_brightness = brightness; in led_set_brightness()
254 led_set_brightness_nosleep(led_cdev, brightness); in led_set_brightness()
258 void led_set_brightness_nopm(struct led_classdev *led_cdev, in led_set_brightness_nopm() argument
262 if (!__led_set_brightness(led_cdev, value)) in led_set_brightness_nopm()
266 led_cdev->delayed_set_value = value; in led_set_brightness_nopm()
267 schedule_work(&led_cdev->set_brightness_work); in led_set_brightness_nopm()
271 void led_set_brightness_nosleep(struct led_classdev *led_cdev, in led_set_brightness_nosleep() argument
274 led_cdev->brightness = min(value, led_cdev->max_brightness); in led_set_brightness_nosleep()
276 if (led_cdev->flags & LED_SUSPENDED) in led_set_brightness_nosleep()
279 led_set_brightness_nopm(led_cdev, led_cdev->brightness); in led_set_brightness_nosleep()
283 int led_set_brightness_sync(struct led_classdev *led_cdev, in led_set_brightness_sync() argument
286 if (led_cdev->blink_delay_on || led_cdev->blink_delay_off) in led_set_brightness_sync()
289 led_cdev->brightness = min(value, led_cdev->max_brightness); in led_set_brightness_sync()
291 if (led_cdev->flags & LED_SUSPENDED) in led_set_brightness_sync()
294 return __led_set_brightness_blocking(led_cdev, led_cdev->brightness); in led_set_brightness_sync()
298 int led_update_brightness(struct led_classdev *led_cdev) in led_update_brightness() argument
302 if (led_cdev->brightness_get) { in led_update_brightness()
303 ret = led_cdev->brightness_get(led_cdev); in led_update_brightness()
305 led_cdev->brightness = ret; in led_update_brightness()
315 void led_sysfs_disable(struct led_classdev *led_cdev) in led_sysfs_disable() argument
317 lockdep_assert_held(&led_cdev->led_access); in led_sysfs_disable()
319 led_cdev->flags |= LED_SYSFS_DISABLE; in led_sysfs_disable()
324 void led_sysfs_enable(struct led_classdev *led_cdev) in led_sysfs_enable() argument
326 lockdep_assert_held(&led_cdev->led_access); in led_sysfs_enable()
328 led_cdev->flags &= ~LED_SYSFS_DISABLE; in led_sysfs_enable()