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