Lines Matching defs:led

8 #include <linux/led-class-flash.h>
9 #include <linux/led-class-multicolor.h>
15 #include <media/v4l2-flash-led-class.h>
101 struct mt6360_led *led = container_of(mccdev, struct mt6360_led, mc);
102 struct mt6360_priv *priv = led->priv;
135 struct mt6360_led *led = container_of(lcdev, struct mt6360_led, isnk);
136 struct mt6360_priv *priv = led->priv;
137 u32 enable_mask = MT6360_ISNK_ENMASK(led->led_no);
138 u32 val = level ? MT6360_ISNK_ENMASK(led->led_no) : 0;
143 ret = regmap_update_bits(priv->regmap, MT6360_REG_ISNK(led->led_no),
159 struct mt6360_led *led =
161 struct mt6360_priv *priv = led->priv;
162 u32 enable_mask = MT6360_TORCHEN_MASK | MT6360_FLCSEN_MASK(led->led_no);
163 u32 val = level ? MT6360_FLCSEN_MASK(led->led_no) : 0;
181 curr = prev | BIT(led->led_no);
183 curr = prev & ~BIT(led->led_no);
190 MT6360_REG_FLEDITOR(led->led_no),
223 struct mt6360_led *led =
225 struct mt6360_priv *priv = led->priv;
230 MT6360_REG_FLEDISTRB(led->led_no),
236 struct mt6360_led *led =
238 struct mt6360_priv *priv = led->priv;
241 u32 enable_mask = MT6360_STROBEN_MASK | MT6360_FLCSEN_MASK(led->led_no);
242 u32 val = state ? MT6360_FLCSEN_MASK(led->led_no) : 0;
260 curr = prev | BIT(led->led_no);
262 curr = prev & ~BIT(led->led_no);
271 led->led_no, state);
302 struct mt6360_led *led =
304 struct mt6360_priv *priv = led->priv;
307 *state = !!(priv->fled_strobe_used & BIT(led->led_no));
315 struct mt6360_led *led =
317 struct mt6360_priv *priv = led->priv;
332 struct mt6360_led *led =
334 struct mt6360_priv *priv = led->priv;
350 if (led->led_no == MT6360_LED_FLASH1) {
384 static int mt6360_isnk_init_default_state(struct mt6360_led *led)
386 struct mt6360_priv *priv = led->priv;
391 ret = regmap_read(priv->regmap, MT6360_REG_ISNK(led->led_no), &regval);
400 if (!(regval & MT6360_ISNK_ENMASK(led->led_no)))
403 switch (led->default_state) {
405 led->isnk.brightness = led->isnk.max_brightness;
408 led->isnk.brightness = min(level, led->isnk.max_brightness);
411 led->isnk.brightness = LED_OFF;
414 return mt6360_isnk_brightness_set(&led->isnk, led->isnk.brightness);
417 static int mt6360_flash_init_default_state(struct mt6360_led *led)
419 struct led_classdev_flash *flash = &led->flash;
420 struct mt6360_priv *priv = led->priv;
421 u32 enable_mask = MT6360_TORCHEN_MASK | MT6360_FLCSEN_MASK(led->led_no);
426 ret = regmap_read(priv->regmap, MT6360_REG_FLEDITOR(led->led_no),
441 switch (led->default_state) {
462 struct mt6360_led *led = container_of(flash, struct mt6360_led, flash);
463 struct mt6360_priv *priv = led->priv;
464 u32 mask = MT6360_FLCSEN_MASK(led->led_no);
475 priv->fled_strobe_used |= BIT(led->led_no);
477 priv->fled_strobe_used &= ~BIT(led->led_no);
488 static void mt6360_init_v4l2_flash_config(struct mt6360_led *led,
494 lcdev = &led->flash.led_cdev;
510 static void mt6360_init_v4l2_flash_config(struct mt6360_led *led,
516 static int mt6360_led_register(struct device *parent, struct mt6360_led *led,
519 struct mt6360_priv *priv = led->priv;
523 if ((led->led_no == MT6360_LED_ISNK1 ||
524 led->led_no == MT6360_VIRTUAL_MULTICOLOR) &&
539 switch (led->led_no) {
541 ret = mt6360_mc_brightness_set(&led->mc.led_cdev, LED_OFF);
549 &led->mc, init_data);
556 ret = mt6360_isnk_init_default_state(led);
559 led->led_no);
563 ret = devm_led_classdev_register_ext(parent, &led->isnk,
567 led->led_no);
572 ret = mt6360_flash_init_default_state(led);
575 led->led_no);
579 ret = devm_led_classdev_flash_register_ext(parent, &led->flash,
583 led->led_no);
587 mt6360_init_v4l2_flash_config(led, &v4l2_config);
588 led->v4l2_flash = v4l2_flash_init(parent, init_data->fwnode,
589 &led->flash,
592 if (IS_ERR(led->v4l2_flash)) {
594 led->led_no);
595 return PTR_ERR(led->v4l2_flash);
613 static int mt6360_init_isnk_properties(struct mt6360_led *led,
617 struct mt6360_priv *priv = led->priv;
623 if (led->led_no == MT6360_VIRTUAL_MULTICOLOR) {
642 "led %d, no color specified\n",
643 led->led_no);
655 "Multicolor must include 2 or more led channel\n");
659 led->mc.num_colors = num_color;
660 led->mc.subled_info = sub_led;
662 lcdev = &led->mc.led_cdev;
665 if (led->led_no == MT6360_LED_ISNKML) {
670 lcdev = &led->isnk;
674 ret = fwnode_property_read_u32(init_data->fwnode, "led-max-microamp",
678 "Not specified led-max-microamp, config to the minimum\n");
691 static int mt6360_init_flash_properties(struct mt6360_led *led,
694 struct led_classdev_flash *flash = &led->flash;
696 struct mt6360_priv *priv = led->priv;
701 ret = fwnode_property_read_u32(init_data->fwnode, "led-max-microamp",
705 "Not specified led-max-microamp, config to the minimum\n");
764 struct mt6360_led *led = priv->leds + i;
766 if (led->v4l2_flash)
767 v4l2_flash_release(led->v4l2_flash);
781 "No child node or node count over max led number %zu\n",
802 struct mt6360_led *led = priv->leds + i;
830 led->led_no = reg;
831 led->priv = priv;
832 led->default_state = led_init_default_state_get(child);
836 ret = mt6360_init_isnk_properties(led, &init_data);
838 ret = mt6360_init_flash_properties(led, &init_data);
843 ret = mt6360_led_register(&pdev->dev, led, &init_data);
867 { .compatible = "mediatek,mt6360-led", },
874 .name = "mt6360-led",