Lines Matching refs:mvpwm
120 struct mvebu_pwm *mvpwm; member
285 static void __iomem *mvebu_pwmreg_blink_on_duration(struct mvebu_pwm *mvpwm) in mvebu_pwmreg_blink_on_duration() argument
287 return mvpwm->membase + PWM_BLINK_ON_DURATION_OFF; in mvebu_pwmreg_blink_on_duration()
290 static void __iomem *mvebu_pwmreg_blink_off_duration(struct mvebu_pwm *mvpwm) in mvebu_pwmreg_blink_off_duration() argument
292 return mvpwm->membase + PWM_BLINK_OFF_DURATION_OFF; in mvebu_pwmreg_blink_off_duration()
613 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_request() local
614 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_request()
619 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_request()
621 if (mvpwm->gpiod) { in mvebu_pwm_request()
633 mvpwm->gpiod = desc; in mvebu_pwm_request()
636 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_request()
642 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_free() local
645 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_free()
646 gpiochip_free_own_desc(mvpwm->gpiod); in mvebu_pwm_free()
647 mvpwm->gpiod = NULL; in mvebu_pwm_free()
648 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_free()
655 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_get_state() local
656 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_get_state()
661 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_get_state()
663 u = readl_relaxed(mvebu_pwmreg_blink_on_duration(mvpwm)); in mvebu_pwm_get_state()
665 do_div(val, mvpwm->clk_rate); in mvebu_pwm_get_state()
675 val += readl_relaxed(mvebu_pwmreg_blink_off_duration(mvpwm)); in mvebu_pwm_get_state()
677 do_div(val, mvpwm->clk_rate); in mvebu_pwm_get_state()
691 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_get_state()
697 struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); in mvebu_pwm_apply() local
698 struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; in mvebu_pwm_apply()
706 val = (unsigned long long) mvpwm->clk_rate * state->duty_cycle; in mvebu_pwm_apply()
715 val = (unsigned long long) mvpwm->clk_rate * in mvebu_pwm_apply()
725 spin_lock_irqsave(&mvpwm->lock, flags); in mvebu_pwm_apply()
727 writel_relaxed(on, mvebu_pwmreg_blink_on_duration(mvpwm)); in mvebu_pwm_apply()
728 writel_relaxed(off, mvebu_pwmreg_blink_off_duration(mvpwm)); in mvebu_pwm_apply()
734 spin_unlock_irqrestore(&mvpwm->lock, flags); in mvebu_pwm_apply()
749 struct mvebu_pwm *mvpwm = mvchip->mvpwm; in mvebu_pwm_suspend() local
752 &mvpwm->blink_select); in mvebu_pwm_suspend()
753 mvpwm->blink_on_duration = in mvebu_pwm_suspend()
754 readl_relaxed(mvebu_pwmreg_blink_on_duration(mvpwm)); in mvebu_pwm_suspend()
755 mvpwm->blink_off_duration = in mvebu_pwm_suspend()
756 readl_relaxed(mvebu_pwmreg_blink_off_duration(mvpwm)); in mvebu_pwm_suspend()
761 struct mvebu_pwm *mvpwm = mvchip->mvpwm; in mvebu_pwm_resume() local
764 mvpwm->blink_select); in mvebu_pwm_resume()
765 writel_relaxed(mvpwm->blink_on_duration, in mvebu_pwm_resume()
766 mvebu_pwmreg_blink_on_duration(mvpwm)); in mvebu_pwm_resume()
767 writel_relaxed(mvpwm->blink_off_duration, in mvebu_pwm_resume()
768 mvebu_pwmreg_blink_off_duration(mvpwm)); in mvebu_pwm_resume()
776 struct mvebu_pwm *mvpwm; in mvebu_pwm_probe() local
808 mvpwm = devm_kzalloc(dev, sizeof(struct mvebu_pwm), GFP_KERNEL); in mvebu_pwm_probe()
809 if (!mvpwm) in mvebu_pwm_probe()
811 mvchip->mvpwm = mvpwm; in mvebu_pwm_probe()
812 mvpwm->mvchip = mvchip; in mvebu_pwm_probe()
814 mvpwm->membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); in mvebu_pwm_probe()
815 if (IS_ERR(mvpwm->membase)) in mvebu_pwm_probe()
816 return PTR_ERR(mvpwm->membase); in mvebu_pwm_probe()
818 mvpwm->clk_rate = clk_get_rate(mvchip->clk); in mvebu_pwm_probe()
819 if (!mvpwm->clk_rate) { in mvebu_pwm_probe()
824 mvpwm->chip.dev = dev; in mvebu_pwm_probe()
825 mvpwm->chip.ops = &mvebu_pwm_ops; in mvebu_pwm_probe()
826 mvpwm->chip.npwm = mvchip->chip.ngpio; in mvebu_pwm_probe()
833 mvpwm->chip.base = -1; in mvebu_pwm_probe()
835 spin_lock_init(&mvpwm->lock); in mvebu_pwm_probe()
837 return pwmchip_add(&mvpwm->chip); in mvebu_pwm_probe()
1268 pwmchip_remove(&mvchip->mvpwm->chip); in mvebu_gpio_probe()