Lines Matching full:leds

3  * CZ.NIC's Turris Omnia LEDs driver
47 * @leds: flexible array of per-LED data
54 struct omnia_led leds[]; member
96 struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent); in omnia_led_brightness_set_blocking() local
100 mutex_lock(&leds->lock); in omnia_led_brightness_set_blocking()
118 err = omnia_led_send_color_cmd(leds->client, led); in omnia_led_brightness_set_blocking()
131 err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_STATE, state); in omnia_led_brightness_set_blocking()
136 mutex_unlock(&leds->lock); in omnia_led_brightness_set_blocking()
146 struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent); in omnia_hwtrig_activate() local
150 mutex_lock(&leds->lock); in omnia_hwtrig_activate()
161 err = omnia_led_send_color_cmd(leds->client, led); in omnia_hwtrig_activate()
166 err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_MODE, in omnia_hwtrig_activate()
172 mutex_unlock(&leds->lock); in omnia_hwtrig_activate()
179 struct omnia_leds *leds = dev_get_drvdata(cdev->dev->parent); in omnia_hwtrig_deactivate() local
183 mutex_lock(&leds->lock); in omnia_hwtrig_deactivate()
188 err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_MODE, in omnia_hwtrig_deactivate()
191 mutex_unlock(&leds->lock); in omnia_hwtrig_deactivate()
281 * can be used to control the intensity of all the LEDs at once, so that if they
327 struct omnia_leds *leds = i2c_get_clientdata(client); in gamma_correction_show() local
331 if (leds->has_gamma_correction) { in gamma_correction_show()
345 struct omnia_leds *leds = i2c_get_clientdata(client); in gamma_correction_store() local
349 if (!leds->has_gamma_correction) in gamma_correction_store()
370 struct omnia_leds *leds = data; in omnia_brightness_changed_threaded_fn() local
372 if (unlikely(!leds->brightness_knode)) { in omnia_brightness_changed_threaded_fn()
377 leds->brightness_knode = sysfs_get_dirent(leds->client->dev.kobj.sd, "brightness"); in omnia_brightness_changed_threaded_fn()
378 if (!leds->brightness_knode) in omnia_brightness_changed_threaded_fn()
382 sysfs_notify_dirent(leds->brightness_knode); in omnia_brightness_changed_threaded_fn()
389 struct omnia_leds *leds = data; in omnia_brightness_knode_put() local
391 if (leds->brightness_knode) in omnia_brightness_knode_put()
392 sysfs_put(leds->brightness_knode); in omnia_brightness_knode_put()
395 static int omnia_request_brightness_irq(struct omnia_leds *leds) in omnia_request_brightness_irq() argument
397 struct device *dev = &leds->client->dev; in omnia_request_brightness_irq()
400 if (!leds->client->irq) { in omnia_request_brightness_irq()
412 ret = devm_add_action(dev, omnia_brightness_knode_put, leds); in omnia_request_brightness_irq()
416 return devm_request_threaded_irq(dev, leds->client->irq, NULL, in omnia_request_brightness_irq()
418 "leds-turris-omnia", leds); in omnia_request_brightness_irq()
472 struct omnia_leds *leds; in omnia_leds_probe() local
478 return dev_err_probe(dev, -ENODEV, "LEDs are not defined in device tree!\n"); in omnia_leds_probe()
480 return dev_err_probe(dev, -EINVAL, "Too many LEDs defined in device tree!\n"); in omnia_leds_probe()
482 leds = devm_kzalloc(dev, struct_size(leds, leds, count), GFP_KERNEL); in omnia_leds_probe()
483 if (!leds) in omnia_leds_probe()
486 leds->client = client; in omnia_leds_probe()
487 i2c_set_clientdata(client, leds); in omnia_leds_probe()
493 leds->has_gamma_correction = ret & OMNIA_FEAT_LED_GAMMA_CORRECTION; in omnia_leds_probe()
496 ret = omnia_request_brightness_irq(leds); in omnia_leds_probe()
501 mutex_init(&leds->lock); in omnia_leds_probe()
507 led = &leds->leds[0]; in omnia_leds_probe()
521 /* Put all LEDs into default (HW triggered) mode */ in omnia_leds_remove()
524 /* Set all LEDs color to [255, 255, 255] */ in omnia_leds_remove()
529 { .compatible = "cznic,turris-omnia-leds", },
545 .name = "leds-turris-omnia",
554 MODULE_DESCRIPTION("CZ.NIC's Turris Omnia LEDs");