Lines Matching refs:led_cdev
31 struct led_classdev *led_cdev = dev_get_drvdata(dev); in brightness_show() local
34 led_update_brightness(led_cdev); in brightness_show()
36 return sprintf(buf, "%u\n", led_cdev->brightness); in brightness_show()
42 struct led_classdev *led_cdev = dev_get_drvdata(dev); in brightness_store() local
46 mutex_lock(&led_cdev->led_access); in brightness_store()
48 if (led_sysfs_is_disabled(led_cdev)) { in brightness_store()
58 led_trigger_remove(led_cdev); in brightness_store()
59 led_set_brightness(led_cdev, state); in brightness_store()
63 mutex_unlock(&led_cdev->led_access); in brightness_store()
71 struct led_classdev *led_cdev = dev_get_drvdata(dev); in max_brightness_show() local
73 return sprintf(buf, "%u\n", led_cdev->max_brightness); in max_brightness_show()
110 struct led_classdev *led_cdev = dev_get_drvdata(dev); in brightness_hw_changed_show() local
112 if (led_cdev->brightness_hw_changed == -1) in brightness_hw_changed_show()
115 return sprintf(buf, "%u\n", led_cdev->brightness_hw_changed); in brightness_hw_changed_show()
120 static int led_add_brightness_hw_changed(struct led_classdev *led_cdev) in led_add_brightness_hw_changed() argument
122 struct device *dev = led_cdev->dev; in led_add_brightness_hw_changed()
131 led_cdev->brightness_hw_changed_kn = in led_add_brightness_hw_changed()
133 if (!led_cdev->brightness_hw_changed_kn) { in led_add_brightness_hw_changed()
142 static void led_remove_brightness_hw_changed(struct led_classdev *led_cdev) in led_remove_brightness_hw_changed() argument
144 sysfs_put(led_cdev->brightness_hw_changed_kn); in led_remove_brightness_hw_changed()
145 device_remove_file(led_cdev->dev, &dev_attr_brightness_hw_changed); in led_remove_brightness_hw_changed()
148 void led_classdev_notify_brightness_hw_changed(struct led_classdev *led_cdev, in led_classdev_notify_brightness_hw_changed() argument
151 if (WARN_ON(!led_cdev->brightness_hw_changed_kn)) in led_classdev_notify_brightness_hw_changed()
154 led_cdev->brightness_hw_changed = brightness; in led_classdev_notify_brightness_hw_changed()
155 sysfs_notify_dirent(led_cdev->brightness_hw_changed_kn); in led_classdev_notify_brightness_hw_changed()
159 static int led_add_brightness_hw_changed(struct led_classdev *led_cdev) in led_add_brightness_hw_changed() argument
163 static void led_remove_brightness_hw_changed(struct led_classdev *led_cdev) in led_remove_brightness_hw_changed() argument
172 void led_classdev_suspend(struct led_classdev *led_cdev) in led_classdev_suspend() argument
174 led_cdev->flags |= LED_SUSPENDED; in led_classdev_suspend()
175 led_set_brightness_nopm(led_cdev, 0); in led_classdev_suspend()
183 void led_classdev_resume(struct led_classdev *led_cdev) in led_classdev_resume() argument
185 led_set_brightness_nopm(led_cdev, led_cdev->brightness); in led_classdev_resume()
187 if (led_cdev->flash_resume) in led_classdev_resume()
188 led_cdev->flash_resume(led_cdev); in led_classdev_resume()
190 led_cdev->flags &= ~LED_SUSPENDED; in led_classdev_resume()
197 struct led_classdev *led_cdev = dev_get_drvdata(dev); in led_suspend() local
199 if (led_cdev->flags & LED_CORE_SUSPENDRESUME) in led_suspend()
200 led_classdev_suspend(led_cdev); in led_suspend()
207 struct led_classdev *led_cdev = dev_get_drvdata(dev); in led_resume() local
209 if (led_cdev->flags & LED_CORE_SUSPENDRESUME) in led_resume()
210 led_classdev_resume(led_cdev); in led_resume()
254 struct led_classdev *led_cdev) in of_led_classdev_register() argument
259 ret = led_classdev_next_name(led_cdev->name, name, sizeof(name)); in of_led_classdev_register()
263 led_cdev->dev = device_create_with_groups(leds_class, parent, 0, in of_led_classdev_register()
264 led_cdev, led_cdev->groups, "%s", name); in of_led_classdev_register()
265 if (IS_ERR(led_cdev->dev)) in of_led_classdev_register()
266 return PTR_ERR(led_cdev->dev); in of_led_classdev_register()
267 led_cdev->dev->of_node = np; in of_led_classdev_register()
271 led_cdev->name, dev_name(led_cdev->dev)); in of_led_classdev_register()
273 if (led_cdev->flags & LED_BRIGHT_HW_CHANGED) { in of_led_classdev_register()
274 ret = led_add_brightness_hw_changed(led_cdev); in of_led_classdev_register()
276 device_unregister(led_cdev->dev); in of_led_classdev_register()
281 led_cdev->work_flags = 0; in of_led_classdev_register()
283 init_rwsem(&led_cdev->trigger_lock); in of_led_classdev_register()
286 led_cdev->brightness_hw_changed = -1; in of_led_classdev_register()
288 mutex_init(&led_cdev->led_access); in of_led_classdev_register()
291 list_add_tail(&led_cdev->node, &leds_list); in of_led_classdev_register()
294 if (!led_cdev->max_brightness) in of_led_classdev_register()
295 led_cdev->max_brightness = LED_FULL; in of_led_classdev_register()
297 led_update_brightness(led_cdev); in of_led_classdev_register()
299 led_init_core(led_cdev); in of_led_classdev_register()
302 led_trigger_set_default(led_cdev); in of_led_classdev_register()
306 led_cdev->name); in of_led_classdev_register()
318 void led_classdev_unregister(struct led_classdev *led_cdev) in led_classdev_unregister() argument
321 down_write(&led_cdev->trigger_lock); in led_classdev_unregister()
322 if (led_cdev->trigger) in led_classdev_unregister()
323 led_trigger_set(led_cdev, NULL); in led_classdev_unregister()
324 up_write(&led_cdev->trigger_lock); in led_classdev_unregister()
327 led_cdev->flags |= LED_UNREGISTERING; in led_classdev_unregister()
330 led_stop_software_blink(led_cdev); in led_classdev_unregister()
332 led_set_brightness(led_cdev, LED_OFF); in led_classdev_unregister()
334 flush_work(&led_cdev->set_brightness_work); in led_classdev_unregister()
336 if (led_cdev->flags & LED_BRIGHT_HW_CHANGED) in led_classdev_unregister()
337 led_remove_brightness_hw_changed(led_cdev); in led_classdev_unregister()
339 device_unregister(led_cdev->dev); in led_classdev_unregister()
342 list_del(&led_cdev->node); in led_classdev_unregister()
345 mutex_destroy(&led_cdev->led_access); in led_classdev_unregister()
362 struct led_classdev *led_cdev) in devm_of_led_classdev_register() argument
371 rc = of_led_classdev_register(parent, np, led_cdev); in devm_of_led_classdev_register()
377 *dr = led_cdev; in devm_of_led_classdev_register()
386 struct led_cdev **p = res; in devm_led_classdev_match()
400 struct led_classdev *led_cdev) in devm_led_classdev_unregister() argument
404 devm_led_classdev_match, led_cdev)); in devm_led_classdev_unregister()