Lines Matching refs:mvpwm
125 struct mvebu_pwm *mvpwm; member
290 static unsigned int mvebu_pwmreg_blink_on_duration(struct mvebu_pwm *mvpwm) in mvebu_pwmreg_blink_on_duration() argument
292 return mvpwm->offset + PWM_BLINK_ON_DURATION_OFF; in mvebu_pwmreg_blink_on_duration()
295 static unsigned int mvebu_pwmreg_blink_off_duration(struct mvebu_pwm *mvpwm) in mvebu_pwmreg_blink_off_duration() argument
297 return mvpwm->offset + PWM_BLINK_OFF_DURATION_OFF; in mvebu_pwmreg_blink_off_duration()
625 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_request() local
626 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_request()
631 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_request()
633 if (mvpwm->gpiod) { in mvebu_pwm_request()
645 mvpwm->gpiod = desc; in mvebu_pwm_request()
648 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_request()
654 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_free() local
657 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_free()
658 gpiochip_free_own_desc(mvpwm->gpiod); in mvebu_pwm_free()
659 mvpwm->gpiod = NULL; in mvebu_pwm_free()
660 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_free()
667 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_get_state() local
668 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_get_state()
673 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_get_state()
675 regmap_read(mvpwm->regs, mvebu_pwmreg_blink_on_duration(mvpwm), &u); in mvebu_pwm_get_state()
682 mvpwm->clk_rate); in mvebu_pwm_get_state()
684 regmap_read(mvpwm->regs, mvebu_pwmreg_blink_off_duration(mvpwm), &u); in mvebu_pwm_get_state()
690 state->period = DIV_ROUND_UP_ULL(val * NSEC_PER_SEC, mvpwm->clk_rate); in mvebu_pwm_get_state()
698 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_get_state()
704 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_apply() local
705 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_apply()
710 val = (unsigned long long) mvpwm->clk_rate * state->duty_cycle; in mvebu_pwm_apply()
725 val = (unsigned long long) mvpwm->clk_rate * state->period; in mvebu_pwm_apply()
737 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_apply()
739 regmap_write(mvpwm->regs, mvebu_pwmreg_blink_on_duration(mvpwm), on); in mvebu_pwm_apply()
740 regmap_write(mvpwm->regs, mvebu_pwmreg_blink_off_duration(mvpwm), off); in mvebu_pwm_apply()
746 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_apply()
761 struct mvebu_pwm *mvpwm = mvchip->mvpwm; in mvebu_pwm_suspend() local
764 &mvpwm->blink_select); in mvebu_pwm_suspend()
765 regmap_read(mvpwm->regs, mvebu_pwmreg_blink_on_duration(mvpwm), in mvebu_pwm_suspend()
766 &mvpwm->blink_on_duration); in mvebu_pwm_suspend()
767 regmap_read(mvpwm->regs, mvebu_pwmreg_blink_off_duration(mvpwm), in mvebu_pwm_suspend()
768 &mvpwm->blink_off_duration); in mvebu_pwm_suspend()
773 struct mvebu_pwm *mvpwm = mvchip->mvpwm; in mvebu_pwm_resume() local
776 mvpwm->blink_select); in mvebu_pwm_resume()
777 regmap_write(mvpwm->regs, mvebu_pwmreg_blink_on_duration(mvpwm), in mvebu_pwm_resume()
778 mvpwm->blink_on_duration); in mvebu_pwm_resume()
779 regmap_write(mvpwm->regs, mvebu_pwmreg_blink_off_duration(mvpwm), in mvebu_pwm_resume()
780 mvpwm->blink_off_duration); in mvebu_pwm_resume()
788 struct mvebu_pwm *mvpwm; in mvebu_pwm_probe() local
816 mvpwm = devm_kzalloc(dev, sizeof(struct mvebu_pwm), GFP_KERNEL); in mvebu_pwm_probe()
817 if (!mvpwm) in mvebu_pwm_probe()
819 mvchip->mvpwm = mvpwm; in mvebu_pwm_probe()
820 mvpwm->mvchip = mvchip; in mvebu_pwm_probe()
821 mvpwm->offset = offset; in mvebu_pwm_probe()
824 mvpwm->regs = mvchip->regs; in mvebu_pwm_probe()
835 mvpwm->offset += PWM_BLINK_COUNTER_B_OFF; in mvebu_pwm_probe()
845 mvpwm->regs = devm_regmap_init_mmio(&pdev->dev, base, in mvebu_pwm_probe()
847 if (IS_ERR(mvpwm->regs)) in mvebu_pwm_probe()
848 return PTR_ERR(mvpwm->regs); in mvebu_pwm_probe()
865 mvpwm->clk_rate = clk_get_rate(mvchip->clk); in mvebu_pwm_probe()
866 if (!mvpwm->clk_rate) { in mvebu_pwm_probe()
871 mvpwm->chip.dev = dev; in mvebu_pwm_probe()
872 mvpwm->chip.ops = &mvebu_pwm_ops; in mvebu_pwm_probe()
873 mvpwm->chip.npwm = mvchip->chip.ngpio; in mvebu_pwm_probe()
880 mvpwm->chip.base = -1; in mvebu_pwm_probe()
882 spin_lock_init(&mvpwm->lock); in mvebu_pwm_probe()
884 return pwmchip_add(&mvpwm->chip); in mvebu_pwm_probe()
1308 pwmchip_remove(&mvchip->mvpwm->chip); in mvebu_gpio_probe()