Lines Matching +full:pwm +full:- +full:0
1 // SPDX-License-Identifier: GPL-2.0+
10 #include <pwm.h>
12 #include <asm/arch/pwm.h>
17 const struct s5p_timer *pwm = in pwm_enable() local
21 tcon = readl(&pwm->tcon); in pwm_enable()
24 writel(tcon, &pwm->tcon); in pwm_enable()
26 return 0; in pwm_enable()
31 const struct s5p_timer *pwm = in pwm_disable() local
35 tcon = readl(&pwm->tcon); in pwm_disable()
38 writel(tcon, &pwm->tcon); in pwm_disable()
60 const struct s5p_timer *pwm = in pwm_config() local
75 if (period_ns > NS_IN_SEC || duty_ns > NS_IN_SEC || period_ns == 0) in pwm_config()
76 return -ERANGE; in pwm_config()
79 return -EINVAL; in pwm_config()
83 /* Check to see if we are changing the clock rate of the PWM */ in pwm_config()
91 tcmp = tcnt - tcmp; in pwm_config()
93 /* Update the PWM register block. */ in pwm_config()
96 writel(tcnt, &pwm->tcntb0 + offset); in pwm_config()
97 writel(tcmp, &pwm->tcmpb0 + offset); in pwm_config()
100 tcon = readl(&pwm->tcon); in pwm_config()
106 writel(tcon, &pwm->tcon); in pwm_config()
109 writel(tcon, &pwm->tcon); in pwm_config()
111 return 0; in pwm_config()
117 const struct s5p_timer *pwm = in pwm_init() local
127 val = readl(&pwm->tcfg0); in pwm_init()
130 val &= ~0xff; in pwm_init()
131 val |= (prescaler & 0xff); in pwm_init()
134 val &= ~(0xff << 8); in pwm_init()
135 val |= (prescaler & 0xff) << 8; in pwm_init()
137 writel(val, &pwm->tcfg0); in pwm_init()
138 val = readl(&pwm->tcfg1); in pwm_init()
139 val &= ~(0xf << MUX_DIV_SHIFT(pwm_id)); in pwm_init()
140 val |= (div & 0xf) << MUX_DIV_SHIFT(pwm_id); in pwm_init()
141 writel(val, &pwm->tcfg1); in pwm_init()
146 * down from the maximum value to 0, then reset. in pwm_init()
148 ticks_per_period = -1UL; in pwm_init()
160 writel(ticks_per_period, &pwm->tcntb0 + offset); in pwm_init()
162 val = readl(&pwm->tcon) & ~(0xf << TCON_OFFSET(pwm_id)); in pwm_init()
165 writel(val, &pwm->tcon); in pwm_init()
169 return 0; in pwm_init()