Lines Matching refs:led
67 static inline int lm3533_led_get_ctrlbank_id(struct lm3533_led *led) in lm3533_led_get_ctrlbank_id() argument
69 return led->id + 2; in lm3533_led_get_ctrlbank_id()
72 static inline u8 lm3533_led_get_lv_reg(struct lm3533_led *led, u8 base) in lm3533_led_get_lv_reg() argument
74 return base + led->id; in lm3533_led_get_lv_reg()
77 static inline u8 lm3533_led_get_pattern(struct lm3533_led *led) in lm3533_led_get_pattern() argument
79 return led->id; in lm3533_led_get_pattern()
82 static inline u8 lm3533_led_get_pattern_reg(struct lm3533_led *led, in lm3533_led_get_pattern_reg() argument
85 return base + lm3533_led_get_pattern(led) * LM3533_REG_PATTERN_STEP; in lm3533_led_get_pattern_reg()
88 static int lm3533_led_pattern_enable(struct lm3533_led *led, int enable) in lm3533_led_pattern_enable() argument
96 dev_dbg(led->cdev.dev, "%s - %d\n", __func__, enable); in lm3533_led_pattern_enable()
98 mutex_lock(&led->mutex); in lm3533_led_pattern_enable()
100 state = test_bit(LM3533_LED_FLAG_PATTERN_ENABLE, &led->flags); in lm3533_led_pattern_enable()
104 pattern = lm3533_led_get_pattern(led); in lm3533_led_pattern_enable()
112 ret = lm3533_update(led->lm3533, LM3533_REG_PATTERN_ENABLE, val, mask); in lm3533_led_pattern_enable()
114 dev_err(led->cdev.dev, "failed to enable pattern %d (%d)\n", in lm3533_led_pattern_enable()
119 __change_bit(LM3533_LED_FLAG_PATTERN_ENABLE, &led->flags); in lm3533_led_pattern_enable()
121 mutex_unlock(&led->mutex); in lm3533_led_pattern_enable()
128 struct lm3533_led *led = container_of(work, struct lm3533_led, work); in lm3533_led_work() local
130 dev_dbg(led->cdev.dev, "%s - %u\n", __func__, led->new_brightness); in lm3533_led_work()
132 if (led->new_brightness == 0) in lm3533_led_work()
133 lm3533_led_pattern_enable(led, 0); /* disable blink */ in lm3533_led_work()
135 lm3533_ctrlbank_set_brightness(&led->cb, led->new_brightness); in lm3533_led_work()
141 struct lm3533_led *led = to_lm3533_led(cdev); in lm3533_led_set() local
143 dev_dbg(led->cdev.dev, "%s - %d\n", __func__, value); in lm3533_led_set()
145 led->new_brightness = value; in lm3533_led_set()
146 schedule_work(&led->work); in lm3533_led_set()
151 struct lm3533_led *led = to_lm3533_led(cdev); in lm3533_led_get() local
155 ret = lm3533_ctrlbank_get_brightness(&led->cb, &val); in lm3533_led_get()
159 dev_dbg(led->cdev.dev, "%s - %u\n", __func__, val); in lm3533_led_get()
261 static u8 lm3533_led_delay_set(struct lm3533_led *led, u8 base, in lm3533_led_delay_set() argument
277 dev_dbg(led->cdev.dev, "%s - %lu: %u (0x%02x)\n", __func__, in lm3533_led_delay_set()
279 reg = lm3533_led_get_pattern_reg(led, base); in lm3533_led_delay_set()
280 ret = lm3533_write(led->lm3533, reg, val); in lm3533_led_delay_set()
282 dev_err(led->cdev.dev, "failed to set delay (%02x)\n", reg); in lm3533_led_delay_set()
289 static int lm3533_led_delay_on_set(struct lm3533_led *led, unsigned long *t) in lm3533_led_delay_on_set() argument
291 return lm3533_led_delay_set(led, LM3533_REG_PATTERN_HIGH_TIME_BASE, t); in lm3533_led_delay_on_set()
294 static int lm3533_led_delay_off_set(struct lm3533_led *led, unsigned long *t) in lm3533_led_delay_off_set() argument
296 return lm3533_led_delay_set(led, LM3533_REG_PATTERN_LOW_TIME_BASE, t); in lm3533_led_delay_off_set()
303 struct lm3533_led *led = to_lm3533_led(cdev); in lm3533_led_blink_set() local
306 dev_dbg(led->cdev.dev, "%s - on = %lu, off = %lu\n", __func__, in lm3533_led_blink_set()
318 ret = lm3533_led_delay_on_set(led, delay_on); in lm3533_led_blink_set()
322 ret = lm3533_led_delay_off_set(led, delay_off); in lm3533_led_blink_set()
326 return lm3533_led_pattern_enable(led, 1); in lm3533_led_blink_set()
333 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_id() local
335 return scnprintf(buf, PAGE_SIZE, "%d\n", led->id); in show_id()
355 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_risefalltime() local
360 reg = lm3533_led_get_pattern_reg(led, base); in show_risefalltime()
361 ret = lm3533_read(led->lm3533, reg, &val); in show_risefalltime()
387 struct lm3533_led *led = to_lm3533_led(led_cdev); in store_risefalltime() local
395 reg = lm3533_led_get_pattern_reg(led, base); in store_risefalltime()
396 ret = lm3533_write(led->lm3533, reg, val); in store_risefalltime()
423 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_als_channel() local
429 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in show_als_channel()
430 ret = lm3533_read(led->lm3533, reg, &val); in show_als_channel()
444 struct lm3533_led *led = to_lm3533_led(led_cdev); in store_als_channel() local
458 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in store_als_channel()
462 ret = lm3533_update(led->lm3533, reg, val, mask); in store_als_channel()
473 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_als_en() local
479 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in show_als_en()
480 ret = lm3533_read(led->lm3533, reg, &val); in show_als_en()
494 struct lm3533_led *led = to_lm3533_led(led_cdev); in store_als_en() local
504 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in store_als_en()
512 ret = lm3533_update(led->lm3533, reg, val, mask); in store_als_en()
523 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_linear() local
529 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in show_linear()
530 ret = lm3533_read(led->lm3533, reg, &val); in show_linear()
547 struct lm3533_led *led = to_lm3533_led(led_cdev); in store_linear() local
557 reg = lm3533_led_get_lv_reg(led, LM3533_REG_CTRLBANK_BCONF_BASE); in store_linear()
565 ret = lm3533_update(led->lm3533, reg, val, mask); in store_linear()
577 struct lm3533_led *led = to_lm3533_led(led_cdev); in show_pwm() local
581 ret = lm3533_ctrlbank_get_pwm(&led->cb, &val); in show_pwm()
593 struct lm3533_led *led = to_lm3533_led(led_cdev); in store_pwm() local
600 ret = lm3533_ctrlbank_set_pwm(&led->cb, val); in store_pwm()
631 struct lm3533_led *led = to_lm3533_led(led_cdev); in lm3533_led_attr_is_visible() local
636 if (!led->lm3533->have_als) in lm3533_led_attr_is_visible()
653 static int lm3533_led_setup(struct lm3533_led *led, in lm3533_led_setup() argument
658 ret = lm3533_ctrlbank_set_max_current(&led->cb, pdata->max_current); in lm3533_led_setup()
662 return lm3533_ctrlbank_set_pwm(&led->cb, pdata->pwm); in lm3533_led_setup()
669 struct lm3533_led *led; in lm3533_led_probe() local
689 led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL); in lm3533_led_probe()
690 if (!led) in lm3533_led_probe()
693 led->lm3533 = lm3533; in lm3533_led_probe()
694 led->cdev.name = pdata->name; in lm3533_led_probe()
695 led->cdev.default_trigger = pdata->default_trigger; in lm3533_led_probe()
696 led->cdev.brightness_set = lm3533_led_set; in lm3533_led_probe()
697 led->cdev.brightness_get = lm3533_led_get; in lm3533_led_probe()
698 led->cdev.blink_set = lm3533_led_blink_set; in lm3533_led_probe()
699 led->cdev.brightness = LED_OFF; in lm3533_led_probe()
700 led->cdev.groups = lm3533_led_attribute_groups, in lm3533_led_probe()
701 led->id = pdev->id; in lm3533_led_probe()
703 mutex_init(&led->mutex); in lm3533_led_probe()
704 INIT_WORK(&led->work, lm3533_led_work); in lm3533_led_probe()
710 led->cb.lm3533 = lm3533; in lm3533_led_probe()
711 led->cb.id = lm3533_led_get_ctrlbank_id(led); in lm3533_led_probe()
712 led->cb.dev = lm3533->dev; in lm3533_led_probe()
714 platform_set_drvdata(pdev, led); in lm3533_led_probe()
716 ret = led_classdev_register(pdev->dev.parent, &led->cdev); in lm3533_led_probe()
722 led->cb.dev = led->cdev.dev; in lm3533_led_probe()
724 ret = lm3533_led_setup(led, pdata); in lm3533_led_probe()
728 ret = lm3533_ctrlbank_enable(&led->cb); in lm3533_led_probe()
735 led_classdev_unregister(&led->cdev); in lm3533_led_probe()
736 flush_work(&led->work); in lm3533_led_probe()
743 struct lm3533_led *led = platform_get_drvdata(pdev); in lm3533_led_remove() local
747 lm3533_ctrlbank_disable(&led->cb); in lm3533_led_remove()
748 led_classdev_unregister(&led->cdev); in lm3533_led_remove()
749 flush_work(&led->work); in lm3533_led_remove()
757 struct lm3533_led *led = platform_get_drvdata(pdev); in lm3533_led_shutdown() local
761 lm3533_ctrlbank_disable(&led->cb); in lm3533_led_shutdown()
762 lm3533_led_set(&led->cdev, LED_OFF); /* disable blink */ in lm3533_led_shutdown()
763 flush_work(&led->work); in lm3533_led_shutdown()