Lines Matching refs:pwm
147 struct lm8323_pwm pwm[LM8323_NUM_PWMS]; member
351 static void pwm_done(struct lm8323_pwm *pwm) in pwm_done() argument
353 mutex_lock(&pwm->lock); in pwm_done()
354 pwm->running = false; in pwm_done()
355 if (pwm->desired_brightness != pwm->brightness) in pwm_done()
356 schedule_work(&pwm->work); in pwm_done()
357 mutex_unlock(&pwm->lock); in pwm_done()
392 pwm_done(&lm->pwm[i]); in lm8323_irq()
416 static void lm8323_write_pwm_one(struct lm8323_pwm *pwm, int pos, u16 cmd) in lm8323_write_pwm_one() argument
418 lm8323_write(pwm->chip, 4, LM8323_CMD_PWM_WRITE, (pos << 2) | pwm->id, in lm8323_write_pwm_one()
428 static void lm8323_write_pwm(struct lm8323_pwm *pwm, int kill, in lm8323_write_pwm() argument
434 lm8323_write_pwm_one(pwm, i, cmds[i]); in lm8323_write_pwm()
436 lm8323_write_pwm_one(pwm, i++, PWM_END(kill)); in lm8323_write_pwm()
437 lm8323_write(pwm->chip, 2, LM8323_CMD_START_PWM, pwm->id); in lm8323_write_pwm()
438 pwm->running = true; in lm8323_write_pwm()
443 struct lm8323_pwm *pwm = work_to_pwm(work); in lm8323_pwm_work() local
448 mutex_lock(&pwm->lock); in lm8323_pwm_work()
456 if (pwm->running || pwm->desired_brightness == pwm->brightness) in lm8323_pwm_work()
459 kill = (pwm->desired_brightness == 0); in lm8323_pwm_work()
460 up = (pwm->desired_brightness > pwm->brightness); in lm8323_pwm_work()
461 steps = abs(pwm->desired_brightness - pwm->brightness); in lm8323_pwm_work()
467 if ((pwm->fade_time / steps) > (32768 / 512)) { in lm8323_pwm_work()
475 perstep = (hz * pwm->fade_time) / (steps * 1000); in lm8323_pwm_work()
490 lm8323_write_pwm(pwm, kill, num_cmds, pwm_cmds); in lm8323_pwm_work()
491 pwm->brightness = pwm->desired_brightness; in lm8323_pwm_work()
494 mutex_unlock(&pwm->lock); in lm8323_pwm_work()
500 struct lm8323_pwm *pwm = cdev_to_pwm(led_cdev); in lm8323_pwm_set_brightness() local
501 struct lm8323_chip *lm = pwm->chip; in lm8323_pwm_set_brightness()
503 mutex_lock(&pwm->lock); in lm8323_pwm_set_brightness()
504 pwm->desired_brightness = brightness; in lm8323_pwm_set_brightness()
505 mutex_unlock(&pwm->lock); in lm8323_pwm_set_brightness()
508 schedule_work(&pwm->work); in lm8323_pwm_set_brightness()
515 schedule_work(&pwm->work); in lm8323_pwm_set_brightness()
517 lm8323_pwm_work(&pwm->work); in lm8323_pwm_set_brightness()
526 struct lm8323_pwm *pwm = cdev_to_pwm(led_cdev); in lm8323_pwm_show_time() local
528 return sprintf(buf, "%d\n", pwm->fade_time); in lm8323_pwm_show_time()
535 struct lm8323_pwm *pwm = cdev_to_pwm(led_cdev); in lm8323_pwm_store_time() local
543 pwm->fade_time = time; in lm8323_pwm_store_time()
558 struct lm8323_pwm *pwm; in init_pwm() local
562 pwm = &lm->pwm[id - 1]; in init_pwm()
564 pwm->id = id; in init_pwm()
565 pwm->fade_time = 0; in init_pwm()
566 pwm->brightness = 0; in init_pwm()
567 pwm->desired_brightness = 0; in init_pwm()
568 pwm->running = false; in init_pwm()
569 pwm->enabled = false; in init_pwm()
570 INIT_WORK(&pwm->work, lm8323_pwm_work); in init_pwm()
571 mutex_init(&pwm->lock); in init_pwm()
572 pwm->chip = lm; in init_pwm()
575 pwm->cdev.name = name; in init_pwm()
576 pwm->cdev.brightness_set = lm8323_pwm_set_brightness; in init_pwm()
577 pwm->cdev.groups = lm8323_pwm_groups; in init_pwm()
578 if (led_classdev_register(dev, &pwm->cdev) < 0) { in init_pwm()
582 pwm->enabled = true; in init_pwm()
624 int pwm; in lm8323_probe() local
692 for (pwm = 0; pwm < LM8323_NUM_PWMS; pwm++) { in lm8323_probe()
693 err = init_pwm(lm, pwm + 1, &client->dev, in lm8323_probe()
694 pdata->pwm_names[pwm]); in lm8323_probe()
746 while (--pwm >= 0) in lm8323_probe()
747 if (lm->pwm[pwm].enabled) in lm8323_probe()
748 led_classdev_unregister(&lm->pwm[pwm].cdev); in lm8323_probe()
768 if (lm->pwm[i].enabled) in lm8323_remove()
769 led_classdev_unregister(&lm->pwm[i].cdev); in lm8323_remove()
795 if (lm->pwm[i].enabled) in lm8323_suspend()
796 led_classdev_suspend(&lm->pwm[i].cdev); in lm8323_suspend()
812 if (lm->pwm[i].enabled) in lm8323_resume()
813 led_classdev_resume(&lm->pwm[i].cdev); in lm8323_resume()