• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/leds/

Lines Matching defs:led

77 	struct led_state		led[2];
112 static inline int bd2802_is_rgb_off(struct bd2802_led *led, enum led_ids id,
117 return !led->led[id].r;
119 return !led->led[id].g;
121 return !led->led[id].b;
123 dev_err(&led->client->dev, "%s: Invalid color\n", __func__);
128 static inline int bd2802_is_led_off(struct bd2802_led *led, enum led_ids id)
130 if (led->led[id].r || led->led[id].g || led->led[id].b)
136 static inline int bd2802_is_all_off(struct bd2802_led *led)
141 if (!bd2802_is_led_off(led, i))
175 static void bd2802_update_state(struct bd2802_led *led, enum led_ids id,
185 led->led[i].r = led_bit;
188 led->led[i].g = led_bit;
191 led->led[i].b = led_bit;
194 dev_err(&led->client->dev,
204 if (!bd2802_is_led_off(led, id))
207 if (bd2802_is_all_off(led) && !led->adf_on) {
208 gpio_set_value(led->pdata->reset_gpio, 0);
213 * In this case, other led is turned on, and current led is turned
217 bd2802_write_byte(led->client, BD2802_REG_CONTROL, value);
220 static void bd2802_configure(struct bd2802_led *led)
222 struct bd2802_led_platform_data *pdata = led->pdata;
226 bd2802_write_byte(led->client, reg, pdata->rgb_time);
229 bd2802_write_byte(led->client, reg, pdata->rgb_time);
232 static void bd2802_reset_cancel(struct bd2802_led *led)
234 gpio_set_value(led->pdata->reset_gpio, 1);
236 bd2802_configure(led);
239 static void bd2802_enable(struct bd2802_led *led, enum led_ids id)
244 other_led_on = !bd2802_is_led_off(led, other_led);
250 bd2802_write_byte(led->client, BD2802_REG_CONTROL, value);
253 static void bd2802_set_on(struct bd2802_led *led, enum led_ids id,
258 if (bd2802_is_all_off(led) && !led->adf_on)
259 bd2802_reset_cancel(led);
262 bd2802_write_byte(led->client, reg, led->rgb_current);
264 bd2802_write_byte(led->client, reg, BD2802_CURRENT_000);
266 bd2802_write_byte(led->client, reg, BD2802_PATTERN_FULL);
268 bd2802_enable(led, id);
269 bd2802_update_state(led, id, color, BD2802_ON);
272 static void bd2802_set_blink(struct bd2802_led *led, enum led_ids id,
277 if (bd2802_is_all_off(led) && !led->adf_on)
278 bd2802_reset_cancel(led);
281 bd2802_write_byte(led->client, reg, BD2802_CURRENT_000);
283 bd2802_write_byte(led->client, reg, led->rgb_current);
285 bd2802_write_byte(led->client, reg, led->wave_pattern);
287 bd2802_enable(led, id);
288 bd2802_update_state(led, id, color, BD2802_BLINK);
291 static void bd2802_turn_on(struct bd2802_led *led, enum led_ids id,
295 dev_err(&led->client->dev,
301 bd2802_set_blink(led, id, color);
303 bd2802_set_on(led, id, color);
306 static void bd2802_turn_off(struct bd2802_led *led, enum led_ids id,
311 if (bd2802_is_rgb_off(led, id, color))
315 bd2802_write_byte(led->client, reg, BD2802_CURRENT_000);
317 bd2802_write_byte(led->client, reg, BD2802_CURRENT_000);
319 bd2802_update_state(led, id, color, BD2802_OFF);
322 static void bd2802_restore_state(struct bd2802_led *led)
327 if (led->led[i].r)
328 bd2802_turn_on(led, i, RED, led->led[i].r);
329 if (led->led[i].g)
330 bd2802_turn_on(led, i, GREEN, led->led[i].g);
331 if (led->led[i].b)
332 bd2802_turn_on(led, i, BLUE, led->led[i].b);
340 struct bd2802_led *led = i2c_get_clientdata(to_i2c_client(dev));\
348 down_write(&led->rwsem); \
349 bd2802_write_byte(led->client, reg_addr, (u8) val); \
350 up_write(&led->rwsem); \
406 static void bd2802_enable_adv_conf(struct bd2802_led *led)
411 ret = device_create_file(&led->client->dev,
414 dev_err(&led->client->dev, "failed: sysfs file %s\n",
420 if (bd2802_is_all_off(led))
421 bd2802_reset_cancel(led);
423 led->adf_on = 1;
429 device_remove_file(&led->client->dev,
433 static void bd2802_disable_adv_conf(struct bd2802_led *led)
438 device_remove_file(&led->client->dev,
441 if (bd2802_is_all_off(led))
442 gpio_set_value(led->pdata->reset_gpio, 0);
444 led->adf_on = 0;
450 struct bd2802_led *led = i2c_get_clientdata(to_i2c_client(dev));
453 down_read(&led->rwsem);
454 if (led->adf_on)
458 up_read(&led->rwsem);
466 struct bd2802_led *led = i2c_get_clientdata(to_i2c_client(dev));
471 down_write(&led->rwsem);
472 if (!led->adf_on && !strncmp(buf, "on", 2))
473 bd2802_enable_adv_conf(led);
474 else if (led->adf_on && !strncmp(buf, "off", 3))
475 bd2802_disable_adv_conf(led);
476 up_write(&led->rwsem);
494 struct bd2802_led *led = i2c_get_clientdata(to_i2c_client(dev));\
496 down_read(&led->rwsem); \
497 ret = sprintf(buf, "0x%02x\n", led->attr_name); \
498 up_read(&led->rwsem); \
504 struct bd2802_led *led = i2c_get_clientdata(to_i2c_client(dev));\
512 down_write(&led->rwsem); \
513 led->attr_name = val; \
514 up_write(&led->rwsem); \
537 struct bd2802_led *led = container_of(work, struct bd2802_led, work);
539 if (led->state)
540 bd2802_turn_on(led, led->led_id, led->color, led->state);
542 bd2802_turn_off(led, led->led_id, led->color);
549 struct bd2802_led *led = \
551 led->led_id = id; \
552 led->color = clr; \
554 led->state = BD2802_OFF; \
556 led->state = BD2802_ON; \
557 schedule_work(&led->work); \
562 struct bd2802_led *led = \
566 led->led_id = id; \
567 led->color = clr; \
568 led->state = BD2802_BLINK; \
569 schedule_work(&led->work); \
580 static int bd2802_register_led_classdev(struct bd2802_led *led)
584 INIT_WORK(&led->work, bd2802_led_work);
586 led->cdev_led1r.name = "led1_R";
587 led->cdev_led1r.brightness = LED_OFF;
588 led->cdev_led1r.brightness_set = bd2802_set_led1r_brightness;
589 led->cdev_led1r.blink_set = bd2802_set_led1r_blink;
591 ret = led_classdev_register(&led->client->dev, &led->cdev_led1r);
593 dev_err(&led->client->dev, "couldn't register LED %s\n",
594 led->cdev_led1r.name);
598 led->cdev_led1g.name = "led1_G";
599 led->cdev_led1g.brightness = LED_OFF;
600 led->cdev_led1g.brightness_set = bd2802_set_led1g_brightness;
601 led->cdev_led1g.blink_set = bd2802_set_led1g_blink;
603 ret = led_classdev_register(&led->client->dev, &led->cdev_led1g);
605 dev_err(&led->client->dev, "couldn't register LED %s\n",
606 led->cdev_led1g.name);
610 led->cdev_led1b.name = "led1_B";
611 led->cdev_led1b.brightness = LED_OFF;
612 led->cdev_led1b.brightness_set = bd2802_set_led1b_brightness;
613 led->cdev_led1b.blink_set = bd2802_set_led1b_blink;
615 ret = led_classdev_register(&led->client->dev, &led->cdev_led1b);
617 dev_err(&led->client->dev, "couldn't register LED %s\n",
618 led->cdev_led1b.name);
622 led->cdev_led2r.name = "led2_R";
623 led->cdev_led2r.brightness = LED_OFF;
624 led->cdev_led2r.brightness_set = bd2802_set_led2r_brightness;
625 led->cdev_led2r.blink_set = bd2802_set_led2r_blink;
627 ret = led_classdev_register(&led->client->dev, &led->cdev_led2r);
629 dev_err(&led->client->dev, "couldn't register LED %s\n",
630 led->cdev_led2r.name);
634 led->cdev_led2g.name = "led2_G";
635 led->cdev_led2g.brightness = LED_OFF;
636 led->cdev_led2g.brightness_set = bd2802_set_led2g_brightness;
637 led->cdev_led2g.blink_set = bd2802_set_led2g_blink;
639 ret = led_classdev_register(&led->client->dev, &led->cdev_led2g);
641 dev_err(&led->client->dev, "couldn't register LED %s\n",
642 led->cdev_led2g.name);
646 led->cdev_led2b.name = "led2_B";
647 led->cdev_led2b.brightness = LED_OFF;
648 led->cdev_led2b.brightness_set = bd2802_set_led2b_brightness;
649 led->cdev_led2b.blink_set = bd2802_set_led2b_blink;
650 led->cdev_led2b.flags |= LED_CORE_SUSPENDRESUME;
652 ret = led_classdev_register(&led->client->dev, &led->cdev_led2b);
654 dev_err(&led->client->dev, "couldn't register LED %s\n",
655 led->cdev_led2b.name);
662 led_classdev_unregister(&led->cdev_led2g);
664 led_classdev_unregister(&led->cdev_led2r);
666 led_classdev_unregister(&led->cdev_led1b);
668 led_classdev_unregister(&led->cdev_led1g);
670 led_classdev_unregister(&led->cdev_led1r);
676 static void bd2802_unregister_led_classdev(struct bd2802_led *led)
678 cancel_work_sync(&led->work);
679 led_classdev_unregister(&led->cdev_led1r);
685 struct bd2802_led *led;
689 led = kzalloc(sizeof(struct bd2802_led), GFP_KERNEL);
690 if (!led) {
695 led->client = client;
696 pdata = led->pdata = client->dev.platform_data;
697 i2c_set_clientdata(client, led);
715 gpio_set_value(led->pdata->reset_gpio, 0);
718 led->wave_pattern = BD2802_PATTERN_HALF;
719 led->rgb_current = BD2802_CURRENT_032;
721 init_rwsem(&led->rwsem);
724 ret = device_create_file(&led->client->dev,
727 dev_err(&led->client->dev, "failed: sysfs file %s\n",
733 ret = bd2802_register_led_classdev(led);
741 device_remove_file(&led->client->dev, bd2802_attributes[i]);
743 kfree(led);
750 struct bd2802_led *led = i2c_get_clientdata(client);
753 gpio_set_value(led->pdata->reset_gpio, 0);
754 bd2802_unregister_led_classdev(led);
755 if (led->adf_on)
756 bd2802_disable_adv_conf(led);
758 device_remove_file(&led->client->dev, bd2802_attributes[i]);
759 kfree(led);
766 struct bd2802_led *led = i2c_get_clientdata(client);
768 gpio_set_value(led->pdata->reset_gpio, 0);
775 struct bd2802_led *led = i2c_get_clientdata(client);
777 if (!bd2802_is_all_off(led) || led->adf_on) {
778 bd2802_reset_cancel(led);
779 bd2802_restore_state(led);