Home
last modified time | relevance | path

Searched refs:pwm (Results 1 – 25 of 769) sorted by relevance

12345678910>>...31

/Linux-v5.4/drivers/pwm/
DMakefile4 obj-$(CONFIG_PWM_AB8500) += pwm-ab8500.o
5 obj-$(CONFIG_PWM_ATMEL) += pwm-atmel.o
6 obj-$(CONFIG_PWM_ATMEL_HLCDC_PWM) += pwm-atmel-hlcdc.o
7 obj-$(CONFIG_PWM_ATMEL_TCB) += pwm-atmel-tcb.o
8 obj-$(CONFIG_PWM_BCM_IPROC) += pwm-bcm-iproc.o
9 obj-$(CONFIG_PWM_BCM_KONA) += pwm-bcm-kona.o
10 obj-$(CONFIG_PWM_BCM2835) += pwm-bcm2835.o
11 obj-$(CONFIG_PWM_BERLIN) += pwm-berlin.o
12 obj-$(CONFIG_PWM_BRCMSTB) += pwm-brcmstb.o
13 obj-$(CONFIG_PWM_CLPS711X) += pwm-clps711x.o
[all …]
Dpwm-renesas-tpu.c92 static void tpu_pwm_write(struct tpu_pwm_device *pwm, int reg_nr, u16 value) in tpu_pwm_write() argument
94 void __iomem *base = pwm->tpu->base + TPU_CHANNEL_OFFSET in tpu_pwm_write()
95 + pwm->channel * TPU_CHANNEL_SIZE; in tpu_pwm_write()
100 static void tpu_pwm_set_pin(struct tpu_pwm_device *pwm, in tpu_pwm_set_pin() argument
105 dev_dbg(&pwm->tpu->pdev->dev, "%u: configuring pin as %s\n", in tpu_pwm_set_pin()
106 pwm->channel, states[state]); in tpu_pwm_set_pin()
110 tpu_pwm_write(pwm, TPU_TIORn, in tpu_pwm_set_pin()
111 pwm->polarity == PWM_POLARITY_INVERSED ? in tpu_pwm_set_pin()
115 tpu_pwm_write(pwm, TPU_TIORn, in tpu_pwm_set_pin()
116 pwm->polarity == PWM_POLARITY_INVERSED ? in tpu_pwm_set_pin()
[all …]
Dcore.c32 static struct pwm_device *pwm_to_device(unsigned int pwm) in pwm_to_device() argument
34 return radix_tree_lookup(&pwm_tree, pwm); in pwm_to_device()
37 static int alloc_pwms(int pwm, unsigned int count) in alloc_pwms() argument
42 if (pwm >= MAX_PWMS) in alloc_pwms()
45 if (pwm >= 0) in alloc_pwms()
46 from = pwm; in alloc_pwms()
51 if (pwm >= 0 && start != pwm) in alloc_pwms()
65 struct pwm_device *pwm = &chip->pwms[i]; in free_pwms() local
67 radix_tree_delete(&pwm_tree, pwm->pwm); in free_pwms()
99 static int pwm_device_request(struct pwm_device *pwm, const char *label) in pwm_device_request() argument
[all …]
Dpwm-berlin.c72 static int berlin_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) in berlin_pwm_request() argument
80 return pwm_set_chip_data(pwm, channel); in berlin_pwm_request()
83 static void berlin_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm) in berlin_pwm_free() argument
85 struct berlin_pwm_channel *channel = pwm_get_chip_data(pwm); in berlin_pwm_free()
93 struct berlin_pwm_chip *pwm = to_berlin_pwm_chip(chip); in berlin_pwm_config() local
98 cycles = clk_get_rate(pwm->clk); in berlin_pwm_config()
115 value = berlin_pwm_readl(pwm, pwm_dev->hwpwm, BERLIN_PWM_CONTROL); in berlin_pwm_config()
120 berlin_pwm_writel(pwm, pwm_dev->hwpwm, value, BERLIN_PWM_CONTROL); in berlin_pwm_config()
122 berlin_pwm_writel(pwm, pwm_dev->hwpwm, duty, BERLIN_PWM_DUTY); in berlin_pwm_config()
123 berlin_pwm_writel(pwm, pwm_dev->hwpwm, period, BERLIN_PWM_TCNT); in berlin_pwm_config()
[all …]
Dpwm-tegra.c66 static int tegra_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in tegra_pwm_config() argument
116 if (!pwm_is_enabled(pwm)) { in tegra_pwm_config()
123 pwm_writel(pc, pwm->hwpwm, val); in tegra_pwm_config()
128 if (!pwm_is_enabled(pwm)) in tegra_pwm_config()
134 static int tegra_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in tegra_pwm_enable() argument
144 val = pwm_readl(pc, pwm->hwpwm); in tegra_pwm_enable()
146 pwm_writel(pc, pwm->hwpwm, val); in tegra_pwm_enable()
151 static void tegra_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) in tegra_pwm_disable() argument
156 val = pwm_readl(pc, pwm->hwpwm); in tegra_pwm_disable()
158 pwm_writel(pc, pwm->hwpwm, val); in tegra_pwm_disable()
[all …]
Dsysfs.c19 struct pwm_device *pwm; member
33 return export->pwm; in child_to_pwm_device()
40 const struct pwm_device *pwm = child_to_pwm_device(child); in period_show() local
43 pwm_get_state(pwm, &state); in period_show()
53 struct pwm_device *pwm = export->pwm; in period_store() local
63 pwm_get_state(pwm, &state); in period_store()
65 ret = pwm_apply_state(pwm, &state); in period_store()
75 const struct pwm_device *pwm = child_to_pwm_device(child); in duty_cycle_show() local
78 pwm_get_state(pwm, &state); in duty_cycle_show()
88 struct pwm_device *pwm = export->pwm; in duty_cycle_store() local
[all …]
Dpwm-sun4i.c106 struct pwm_device *pwm, in sun4i_pwm_get_state() argument
118 if ((PWM_REG_PRESCAL(val, pwm->hwpwm) == PWM_PRESCAL_MASK) && in sun4i_pwm_get_state()
122 prescaler = prescaler_table[PWM_REG_PRESCAL(val, pwm->hwpwm)]; in sun4i_pwm_get_state()
127 if (val & BIT_CH(PWM_ACT_STATE, pwm->hwpwm)) in sun4i_pwm_get_state()
132 if ((val & BIT_CH(PWM_CLK_GATING | PWM_EN, pwm->hwpwm)) == in sun4i_pwm_get_state()
133 BIT_CH(PWM_CLK_GATING | PWM_EN, pwm->hwpwm)) in sun4i_pwm_get_state()
138 val = sun4i_pwm_readl(sun4i_pwm, PWM_CH_PRD(pwm->hwpwm)); in sun4i_pwm_get_state()
198 static int sun4i_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, in sun4i_pwm_apply() argument
208 pwm_get_state(pwm, &cstate); in sun4i_pwm_apply()
236 if (PWM_REG_PRESCAL(ctrl, pwm->hwpwm) != prescaler) { in sun4i_pwm_apply()
[all …]
Dpwm-jz4740.c35 static int jz4740_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) in jz4740_pwm_request() argument
41 if (pwm->hwpwm < 2) in jz4740_pwm_request()
44 jz4740_timer_start(pwm->hwpwm); in jz4740_pwm_request()
49 static void jz4740_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm) in jz4740_pwm_free() argument
51 jz4740_timer_set_ctrl(pwm->hwpwm, 0); in jz4740_pwm_free()
53 jz4740_timer_stop(pwm->hwpwm); in jz4740_pwm_free()
56 static int jz4740_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in jz4740_pwm_enable() argument
58 uint32_t ctrl = jz4740_timer_get_ctrl(pwm->pwm); in jz4740_pwm_enable()
61 jz4740_timer_set_ctrl(pwm->hwpwm, ctrl); in jz4740_pwm_enable()
62 jz4740_timer_enable(pwm->hwpwm); in jz4740_pwm_enable()
[all …]
Dpwm-pxa.c60 static int pxa_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in pxa_pwm_config() argument
69 offset = pwm->hwpwm ? 0x10 : 0; in pxa_pwm_config()
104 static int pxa_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in pxa_pwm_enable() argument
111 static void pxa_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) in pxa_pwm_disable() argument
154 struct pwm_device *pwm; in pxa_pwm_of_xlate() local
156 pwm = pwm_request_from_chip(pc, 0, NULL); in pxa_pwm_of_xlate()
157 if (IS_ERR(pwm)) in pxa_pwm_of_xlate()
158 return pwm; in pxa_pwm_of_xlate()
160 pwm->args.period = args->args[0]; in pxa_pwm_of_xlate()
162 return pwm; in pxa_pwm_of_xlate()
[all …]
Dpwm-twl.c32 #define TWL4030_PWM_TOGGLE(pwm, x) ((x) << (pwm)) argument
46 #define TWL6030_PWM_TOGGLE(pwm, x) ((x) << (pwm * 3)) argument
60 static int twl_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in twl_pwm_config() argument
83 base = pwm->hwpwm * 3; in twl_pwm_config()
89 dev_err(chip->dev, "%s: Failed to configure PWM\n", pwm->label); in twl_pwm_config()
94 static int twl4030_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in twl4030_pwm_enable() argument
103 dev_err(chip->dev, "%s: Failed to read GPBR1\n", pwm->label); in twl4030_pwm_enable()
107 val |= TWL4030_PWM_TOGGLE(pwm->hwpwm, TWL4030_PWMXCLK_ENABLE); in twl4030_pwm_enable()
111 dev_err(chip->dev, "%s: Failed to enable PWM\n", pwm->label); in twl4030_pwm_enable()
113 val |= TWL4030_PWM_TOGGLE(pwm->hwpwm, TWL4030_PWMX_ENABLE); in twl4030_pwm_enable()
[all …]
Dpwm-stmpe.c39 static int stmpe_24xx_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in stmpe_24xx_pwm_enable() argument
48 pwm->hwpwm); in stmpe_24xx_pwm_enable()
52 value = ret | BIT(pwm->hwpwm); in stmpe_24xx_pwm_enable()
57 pwm->hwpwm); in stmpe_24xx_pwm_enable()
65 struct pwm_device *pwm) in stmpe_24xx_pwm_disable() argument
74 pwm->hwpwm); in stmpe_24xx_pwm_disable()
78 value = ret & ~BIT(pwm->hwpwm); in stmpe_24xx_pwm_disable()
83 pwm->hwpwm); in stmpe_24xx_pwm_disable()
99 static int stmpe_24xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in stmpe_24xx_pwm_config() argument
113 if (pwm_is_enabled(pwm)) { in stmpe_24xx_pwm_config()
[all …]
Dpwm-crc.c42 static int crc_pwm_enable(struct pwm_chip *c, struct pwm_device *pwm) in crc_pwm_enable() argument
51 static void crc_pwm_disable(struct pwm_chip *c, struct pwm_device *pwm) in crc_pwm_disable() argument
58 static int crc_pwm_config(struct pwm_chip *c, struct pwm_device *pwm, in crc_pwm_config() argument
70 if (pwm_get_period(pwm) != period_ns) { in crc_pwm_config()
74 crc_pwm_disable(c, pwm); in crc_pwm_config()
81 crc_pwm_enable(c, pwm); in crc_pwm_config()
99 struct crystalcove_pwm *pwm; in crystalcove_pwm_probe() local
103 pwm = devm_kzalloc(&pdev->dev, sizeof(*pwm), GFP_KERNEL); in crystalcove_pwm_probe()
104 if (!pwm) in crystalcove_pwm_probe()
107 pwm->chip.dev = &pdev->dev; in crystalcove_pwm_probe()
[all …]
Dpwm-lpss.c37 static inline u32 pwm_lpss_read(const struct pwm_device *pwm) in pwm_lpss_read() argument
39 struct pwm_lpss_chip *lpwm = to_lpwm(pwm->chip); in pwm_lpss_read()
41 return readl(lpwm->regs + pwm->hwpwm * PWM_SIZE + PWM); in pwm_lpss_read()
44 static inline void pwm_lpss_write(const struct pwm_device *pwm, u32 value) in pwm_lpss_write() argument
46 struct pwm_lpss_chip *lpwm = to_lpwm(pwm->chip); in pwm_lpss_write()
48 writel(value, lpwm->regs + pwm->hwpwm * PWM_SIZE + PWM); in pwm_lpss_write()
51 static int pwm_lpss_wait_for_update(struct pwm_device *pwm) in pwm_lpss_wait_for_update() argument
53 struct pwm_lpss_chip *lpwm = to_lpwm(pwm->chip); in pwm_lpss_wait_for_update()
54 const void __iomem *addr = lpwm->regs + pwm->hwpwm * PWM_SIZE + PWM; in pwm_lpss_wait_for_update()
72 dev_err(pwm->chip->dev, "PWM_SW_UPDATE was not cleared\n"); in pwm_lpss_wait_for_update()
[all …]
Dpwm-pca9685.c89 struct pwm_device *pwm; in pca9685_pwm_gpio_request() local
93 pwm = &pca->chip.pwms[offset]; in pca9685_pwm_gpio_request()
95 if (pwm->flags & (PWMF_REQUESTED | PWMF_EXPORTED)) { in pca9685_pwm_gpio_request()
100 pwm_set_chip_data(pwm, (void *)1); in pca9685_pwm_gpio_request()
107 static bool pca9685_pwm_is_gpio(struct pca9685 *pca, struct pwm_device *pwm) in pca9685_pwm_is_gpio() argument
113 if (pwm->hwpwm >= PCA9685_MAXCHAN) { in pca9685_pwm_is_gpio()
125 } else if (pwm_get_chip_data(pwm)) { in pca9685_pwm_is_gpio()
136 struct pwm_device *pwm = &pca->chip.pwms[offset]; in pca9685_pwm_gpio_get() local
139 regmap_read(pca->regmap, LED_N_ON_H(pwm->hwpwm), &value); in pca9685_pwm_gpio_get()
148 struct pwm_device *pwm = &pca->chip.pwms[offset]; in pca9685_pwm_gpio_set() local
[all …]
Dpwm-vt8500.c31 #define REG_CTRL(pwm) (((pwm) << 4) + 0x00) argument
32 #define REG_SCALAR(pwm) (((pwm) << 4) + 0x04) argument
33 #define REG_PERIOD(pwm) (((pwm) << 4) + 0x08) argument
34 #define REG_DUTY(pwm) (((pwm) << 4) + 0x0C) argument
72 static int vt8500_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in vt8500_pwm_config() argument
108 writel(prescale, vt8500->base + REG_SCALAR(pwm->hwpwm)); in vt8500_pwm_config()
109 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_SCALAR_UPDATE); in vt8500_pwm_config()
111 writel(pv, vt8500->base + REG_PERIOD(pwm->hwpwm)); in vt8500_pwm_config()
112 pwm_busy_wait(vt8500, pwm->hwpwm, STATUS_PERIOD_UPDATE); in vt8500_pwm_config()
114 writel(dc, vt8500->base + REG_DUTY(pwm->hwpwm)); in vt8500_pwm_config()
[all …]
Dpwm-img.c92 static int img_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, in img_pwm_config() argument
136 val &= ~(PWM_CTRL_CFG_DIV_MASK << PWM_CTRL_CFG_DIV_SHIFT(pwm->hwpwm)); in img_pwm_config()
138 PWM_CTRL_CFG_DIV_SHIFT(pwm->hwpwm); in img_pwm_config()
143 img_pwm_writel(pwm_chip, PWM_CH_CFG(pwm->hwpwm), val); in img_pwm_config()
151 static int img_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm) in img_pwm_enable() argument
162 val |= BIT(pwm->hwpwm); in img_pwm_enable()
167 PERIP_PWM_PDM_CONTROL_CH_SHIFT(pwm->hwpwm), 0); in img_pwm_enable()
172 static void img_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) in img_pwm_disable() argument
178 val &= ~BIT(pwm->hwpwm); in img_pwm_disable()
242 struct img_pwm_chip *pwm; in img_pwm_probe() local
[all …]
Dpwm-twl-led.c58 static int twl4030_pwmled_config(struct pwm_chip *chip, struct pwm_device *pwm, in twl4030_pwmled_config() argument
81 base = pwm->hwpwm * 2 + TWL4030_PWMA_REG; in twl4030_pwmled_config()
87 dev_err(chip->dev, "%s: Failed to configure PWM\n", pwm->label); in twl4030_pwmled_config()
92 static int twl4030_pwmled_enable(struct pwm_chip *chip, struct pwm_device *pwm) in twl4030_pwmled_enable() argument
101 dev_err(chip->dev, "%s: Failed to read LEDEN\n", pwm->label); in twl4030_pwmled_enable()
105 val |= TWL4030_LED_TOGGLE(pwm->hwpwm, TWL4030_LED_PINS); in twl4030_pwmled_enable()
109 dev_err(chip->dev, "%s: Failed to enable PWM\n", pwm->label); in twl4030_pwmled_enable()
117 struct pwm_device *pwm) in twl4030_pwmled_disable() argument
126 dev_err(chip->dev, "%s: Failed to read LEDEN\n", pwm->label); in twl4030_pwmled_disable()
130 val &= ~TWL4030_LED_TOGGLE(pwm->hwpwm, TWL4030_LED_PINS); in twl4030_pwmled_disable()
[all …]
/Linux-v5.4/drivers/clocksource/
Dsamsung_pwm_timer.c80 static struct samsung_pwm_clocksource pwm; variable
93 reg = readl(pwm.base + REG_TCFG0); in samsung_timer_set_prescale()
96 writel(reg, pwm.base + REG_TCFG0); in samsung_timer_set_prescale()
108 bits = (fls(divisor) - 1) - pwm.variant.div_base; in samsung_timer_set_divisor()
112 reg = readl(pwm.base + REG_TCFG1); in samsung_timer_set_divisor()
115 writel(reg, pwm.base + REG_TCFG1); in samsung_timer_set_divisor()
130 tcon = readl_relaxed(pwm.base + REG_TCON); in samsung_time_stop()
132 writel_relaxed(tcon, pwm.base + REG_TCON); in samsung_time_stop()
148 tcon = readl_relaxed(pwm.base + REG_TCON); in samsung_time_setup()
153 writel_relaxed(tcnt, pwm.base + REG_TCNTB(channel)); in samsung_time_setup()
[all …]
/Linux-v5.4/include/linux/
Dpwm.h80 unsigned int pwm; member
93 static inline void pwm_get_state(const struct pwm_device *pwm, in pwm_get_state() argument
96 *state = pwm->state; in pwm_get_state()
99 static inline bool pwm_is_enabled(const struct pwm_device *pwm) in pwm_is_enabled() argument
103 pwm_get_state(pwm, &state); in pwm_is_enabled()
108 static inline void pwm_set_period(struct pwm_device *pwm, unsigned int period) in pwm_set_period() argument
110 if (pwm) in pwm_set_period()
111 pwm->state.period = period; in pwm_set_period()
114 static inline unsigned int pwm_get_period(const struct pwm_device *pwm) in pwm_get_period() argument
118 pwm_get_state(pwm, &state); in pwm_get_period()
[all …]
/Linux-v5.4/Documentation/devicetree/bindings/pwm/
Dpwm.txt8 with a property containing a 'pwm-list':
10 pwm-list ::= <single-pwm> [pwm-list]
11 single-pwm ::= <pwm-phandle> <pwm-specifier>
12 pwm-phandle : phandle to PWM controller node
13 pwm-specifier : array of #pwm-cells specifying the given PWM
18 An optional property "pwm-names" may contain a list of strings to label
19 each of the PWM devices listed in the "pwms" property. If no "pwm-names"
23 "pwm-names" property to map the name of the PWM device requested by the
29 pwm: pwm {
30 #pwm-cells = <2>;
[all …]
Drenesas,pwm-rcar.txt4 - compatible: should be "renesas,pwm-rcar" and one of the following.
5 - "renesas,pwm-r8a7743": for RZ/G1M
6 - "renesas,pwm-r8a7744": for RZ/G1N
7 - "renesas,pwm-r8a7745": for RZ/G1E
8 - "renesas,pwm-r8a774a1": for RZ/G2M
9 - "renesas,pwm-r8a774c0": for RZ/G2E
10 - "renesas,pwm-r8a7778": for R-Car M1A
11 - "renesas,pwm-r8a7779": for R-Car H1
12 - "renesas,pwm-r8a7790": for R-Car H2
13 - "renesas,pwm-r8a7791": for R-Car M2-W
[all …]
Dnvidia,tegra20-pwm.txt5 - "nvidia,tegra20-pwm": for Tegra20
6 - "nvidia,tegra30-pwm", "nvidia,tegra20-pwm": for Tegra30
7 - "nvidia,tegra114-pwm", "nvidia,tegra20-pwm": for Tegra114
8 - "nvidia,tegra124-pwm", "nvidia,tegra20-pwm": for Tegra124
9 - "nvidia,tegra132-pwm", "nvidia,tegra20-pwm": for Tegra132
10 - "nvidia,tegra210-pwm", "nvidia,tegra20-pwm": for Tegra210
11 - "nvidia,tegra186-pwm": for Tegra186
13 - #pwm-cells: should be 2. See pwm.txt in this directory for a description of
20 - pwm
37 pwm: pwm@7000a000 {
[all …]
Dpwm-meson.txt5 - compatible: Shall contain "amlogic,meson8b-pwm"
6 or "amlogic,meson-gxbb-pwm"
7 or "amlogic,meson-gxbb-ao-pwm"
8 or "amlogic,meson-axg-ee-pwm"
9 or "amlogic,meson-axg-ao-pwm"
10 or "amlogic,meson-g12a-ee-pwm"
11 or "amlogic,meson-g12a-ao-pwm-ab"
12 or "amlogic,meson-g12a-ao-pwm-cd"
13 - #pwm-cells: Should be 3. See pwm.txt in this directory for a description of
23 pwm_ab: pwm@8550 {
[all …]
Dmxs-pwm.txt4 - compatible: should be "fsl,imx23-pwm"
6 - #pwm-cells: should be 2. See pwm.txt in this directory for a description of
8 - fsl,pwm-number: the number of PWM devices
12 pwm: pwm@80064000 {
13 compatible = "fsl,imx28-pwm", "fsl,imx23-pwm";
15 #pwm-cells = <2>;
16 fsl,pwm-number = <8>;
/Linux-v5.4/drivers/input/keyboard/
Dlm8323.c147 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()
[all …]

12345678910>>...31