1 # SPDX-License-Identifier: GPL-2.0-only
3 bool "Pulse-Width Modulation (PWM) Support"
5 Generic Pulse-Width Modulation (PWM) support.
7 In Pulse-Width Modulation, a variation of the width of pulses
8 in a rectangular pulse signal is used as a means to alter the
9 average power of the signal. Applications include efficient
10 power delivery and voltage regulation. In computer systems,
11 PWMs are commonly used to control fans or the brightness of
14 This framework provides a generic interface to PWM devices
15 within the Linux kernel. On the driver side it provides an API
16 to register and unregister a PWM chip, an abstraction of a PWM
17 controller, that supports one or more PWM devices. Client
18 drivers can request PWM devices and use the generic framework
19 to configure as well as enable and disable them.
21 This generic framework replaces the legacy PWM framework which
22 allows only a single driver implementing the required API. Not
23 all legacy implementations have been ported to the framework
24 yet. The framework provides an API that is backward compatible
25 with the legacy framework so that existing client drivers
26 continue to work as expected.
37 bool "PWM lowlevel drivers additional checks and debug messages"
38 depends on DEBUG_KERNEL
40 This option enables some additional checks to help lowlevel driver
41 authors to get their callbacks implemented correctly.
42 It is expected to introduce some runtime overhead and diagnostic
43 output to the kernel log, so only enable while working on a driver.
46 tristate "AB8500 PWM support"
47 depends on AB8500_CORE && ARCH_U8500
49 Generic PWM framework driver for Analog Baseband AB8500.
51 To compile this driver as a module, choose M here: the module
52 will be called pwm-ab8500.
55 tristate "Atmel PWM support"
57 depends on ARCH_AT91 || COMPILE_TEST
59 Generic PWM framework driver for Atmel SoC.
61 To compile this driver as a module, choose M here: the module
62 will be called pwm-atmel.
64 config PWM_ATMEL_HLCDC_PWM
65 tristate "Atmel HLCDC PWM support"
66 depends on MFD_ATMEL_HLCDC
69 Generic PWM framework driver for the PWM output of the HLCDC
70 (Atmel High-end LCD Controller). This PWM output is mainly used
71 to control the LCD backlight.
73 To compile this driver as a module, choose M here: the module
74 will be called pwm-atmel-hlcdc.
77 tristate "Atmel TC Block PWM support"
81 Generic PWM framework driver for Atmel Timer Counter Block.
83 A Timer Counter Block provides 6 PWM devices grouped by 2.
84 Devices in a given group must have the same period.
86 To compile this driver as a module, choose M here: the module
87 will be called pwm-atmel-tcb.
90 tristate "iProc PWM support"
91 depends on ARCH_BCM_IPROC || COMPILE_TEST
93 default ARCH_BCM_IPROC
95 Generic PWM framework driver for Broadcom iProc PWM block. This
96 block is used in Broadcom iProc SoC's.
98 To compile this driver as a module, choose M here: the module
99 will be called pwm-bcm-iproc.
102 tristate "Kona PWM support"
103 depends on ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS || COMPILE_TEST
104 depends on HAVE_CLK && HAS_IOMEM
105 default ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS
107 Generic PWM framework driver for Broadcom Kona PWM block.
109 To compile this driver as a module, choose M here: the module
110 will be called pwm-bcm-kona.
113 tristate "BCM2835 PWM support"
114 depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
116 PWM framework driver for BCM2835 controller (Raspberry Pi)
118 To compile this driver as a module, choose M here: the module
119 will be called pwm-bcm2835.
122 tristate "Marvell Berlin PWM support"
123 depends on ARCH_BERLIN || COMPILE_TEST
125 PWM framework driver for Marvell Berlin SoCs.
127 To compile this driver as a module, choose M here: the module
128 will be called pwm-berlin.
131 tristate "Broadcom STB PWM support"
132 depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
134 Generic PWM framework driver for the Broadcom Set-top-Box
137 To compile this driver as a module, choose M Here: the module
138 will be called pwm-brcmstb.c.
141 tristate "CLPS711X PWM support"
142 depends on ARCH_CLPS711X || COMPILE_TEST
145 Generic PWM framework driver for Cirrus Logic CLPS711X.
147 To compile this driver as a module, choose M here: the module
148 will be called pwm-clps711x.
151 bool "Intel Crystalcove (CRC) PWM support"
152 depends on X86 && INTEL_SOC_PMIC
154 Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
158 tristate "ChromeOS EC PWM driver"
161 PWM driver for exposing a PWM attached to the ChromeOS Embedded
165 tristate "Cirrus Logic EP93xx PWM support"
166 depends on ARCH_EP93XX || COMPILE_TEST
168 Generic PWM framework driver for Cirrus Logic EP93xx.
170 To compile this driver as a module, choose M here: the module
171 will be called pwm-ep93xx.
174 tristate "Freescale FlexTimer Module (FTM) PWM support"
179 Generic FTM PWM framework driver for Freescale VF610 and
180 Layerscape LS-1 SoCs.
182 To compile this driver as a module, choose M here: the module
183 will be called pwm-fsl-ftm.
186 tristate "HiSilicon BVT PWM support"
187 depends on ARCH_HISI || COMPILE_TEST
189 Generic PWM framework driver for HiSilicon BVT SoCs.
191 To compile this driver as a module, choose M here: the module
192 will be called pwm-hibvt.
195 tristate "Imagination Technologies PWM driver"
197 depends on MFD_SYSCON
198 depends on COMMON_CLK
199 depends on MIPS || COMPILE_TEST
201 Generic PWM framework driver for Imagination Technologies
202 PWM block which supports 4 channels.
204 To compile this driver as a module, choose M here: the module
205 will be called pwm-img
208 tristate "i.MX1 PWM support"
209 depends on ARCH_MXC || COMPILE_TEST
211 Generic PWM framework driver for i.MX1 and i.MX21
213 To compile this driver as a module, choose M here: the module
214 will be called pwm-imx1.
217 tristate "i.MX27 PWM support"
218 depends on ARCH_MXC || COMPILE_TEST
220 Generic PWM framework driver for i.MX27 and later i.MX SoCs.
222 To compile this driver as a module, choose M here: the module
223 will be called pwm-imx27.
226 tristate "i.MX TPM PWM support"
227 depends on ARCH_MXC || COMPILE_TEST
228 depends on HAVE_CLK && HAS_IOMEM
230 Generic PWM framework driver for i.MX7ULP TPM module, TPM's full
231 name is Low Power Timer/Pulse Width Modulation Module.
233 To compile this driver as a module, choose M here: the module
234 will be called pwm-imx-tpm.
237 tristate "Azoteq IQS620A PWM support"
238 depends on MFD_IQS62X || COMPILE_TEST
240 Generic PWM framework driver for the Azoteq IQS620A multi-function
243 To compile this driver as a module, choose M here: the module will
244 be called pwm-iqs620a.
247 tristate "Ingenic JZ47xx PWM support"
249 depends on COMMON_CLK
252 Generic PWM framework driver for Ingenic JZ47xx based
255 To compile this driver as a module, choose M here: the module
256 will be called pwm-jz4740.
259 tristate "TI/National Semiconductor LP3943 PWM support"
260 depends on MFD_LP3943
262 Generic PWM framework driver for LP3943 which supports two PWM
265 To compile this driver as a module, choose M here: the module
266 will be called pwm-lp3943.
268 config PWM_LPC18XX_SCT
269 tristate "LPC18xx/43xx PWM/SCT support"
270 depends on ARCH_LPC18XX || COMPILE_TEST
272 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
273 supports 16 channels.
274 A maximum of 15 channels can be requested simultaneously and
275 must have the same period.
277 To compile this driver as a module, choose M here: the module
278 will be called pwm-lpc18xx-sct.
281 tristate "LPC32XX PWM support"
282 depends on ARCH_LPC32XX || COMPILE_TEST
284 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
287 To compile this driver as a module, choose M here: the module
288 will be called pwm-lpc32xx.
294 tristate "Intel LPSS PWM PCI driver"
295 depends on X86 && PCI
298 The PCI driver for Intel Low Power Subsystem PWM controller.
300 To compile this driver as a module, choose M here: the module
301 will be called pwm-lpss-pci.
303 config PWM_LPSS_PLATFORM
304 tristate "Intel LPSS PWM platform driver"
305 depends on X86 && ACPI
308 The platform driver for Intel Low Power Subsystem PWM controller.
310 To compile this driver as a module, choose M here: the module
311 will be called pwm-lpss-platform.
314 tristate "Amlogic Meson PWM driver"
315 depends on ARCH_MESON || COMPILE_TEST
316 depends on COMMON_CLK
318 The platform driver for Amlogic Meson PWM controller.
320 To compile this driver as a module, choose M here: the module
321 will be called pwm-meson.
324 tristate "MediaTek display PWM driver"
325 depends on ARCH_MEDIATEK || COMPILE_TEST
328 Generic PWM framework driver for MediaTek disp-pwm device.
329 The PWM is used to control the backlight brightness for display.
331 To compile this driver as a module, choose M here: the module
332 will be called pwm-mtk-disp.
335 tristate "MediaTek PWM support"
336 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
338 Generic PWM framework driver for Mediatek ARM SoC.
340 To compile this driver as a module, choose M here: the module
341 will be called pwm-mediatek.
344 tristate "Freescale MXS PWM support"
346 depends on ARCH_MXS || COMPILE_TEST
349 Generic PWM framework driver for Freescale MXS.
351 To compile this driver as a module, choose M here: the module
352 will be called pwm-mxs.
354 config PWM_OMAP_DMTIMER
355 tristate "OMAP Dual-Mode Timer PWM support"
357 depends on OMAP_DM_TIMER || COMPILE_TEST
359 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
361 To compile this driver as a module, choose M here: the module
362 will be called pwm-omap-dmtimer
365 tristate "NXP PCA9685 PWM driver"
369 Generic PWM framework driver for NXP PCA9685 LED controller.
371 To compile this driver as a module, choose M here: the module
372 will be called pwm-pca9685.
375 tristate "PXA PWM support"
376 depends on ARCH_PXA || COMPILE_TEST
378 Generic PWM framework driver for PXA.
380 To compile this driver as a module, choose M here: the module
381 will be called pwm-pxa.
384 tristate "Renesas R-Car PWM support"
385 depends on ARCH_RENESAS || COMPILE_TEST
388 This driver exposes the PWM Timer controller found in Renesas
389 R-Car chips through the PWM API.
391 To compile this driver as a module, choose M here: the module
392 will be called pwm-rcar.
394 config PWM_RENESAS_TPU
395 tristate "Renesas TPU PWM support"
396 depends on ARCH_RENESAS || COMPILE_TEST
399 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
400 in Renesas chips through the PWM API.
402 To compile this driver as a module, choose M here: the module
403 will be called pwm-renesas-tpu.
406 tristate "Rockchip PWM support"
407 depends on ARCH_ROCKCHIP || COMPILE_TEST
409 Generic PWM framework driver for the PWM controller found on
413 tristate "Samsung PWM support"
414 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
416 Generic PWM framework driver for Samsung.
418 To compile this driver as a module, choose M here: the module
419 will be called pwm-samsung.
422 tristate "SiFive PWM support"
424 depends on COMMON_CLK
425 depends on RISCV || COMPILE_TEST
427 Generic PWM framework driver for SiFive SoCs.
429 To compile this driver as a module, choose M here: the module
430 will be called pwm-sifive.
433 tristate "Kontron sl28cpld PWM support"
434 depends on MFD_SL28CPLD || COMPILE_TEST
436 Generic PWM framework driver for board management controller
437 found on the Kontron sl28 CPLD.
439 To compile this driver as a module, choose M here: the module
440 will be called pwm-sl28cpld.
443 tristate "STMicroelectronics SPEAr PWM support"
444 depends on PLAT_SPEAR || COMPILE_TEST
447 Generic PWM framework driver for the PWM controller on ST
450 To compile this driver as a module, choose M here: the module
451 will be called pwm-spear.
454 tristate "Spreadtrum PWM support"
455 depends on ARCH_SPRD || COMPILE_TEST
458 Generic PWM framework driver for the PWM controller on
461 To compile this driver as a module, choose M here: the module
462 will be called pwm-sprd.
465 tristate "STiH4xx PWM support"
466 depends on ARCH_STI || COMPILE_TEST
469 Generic PWM framework driver for STiH4xx SoCs.
471 To compile this driver as a module, choose M here: the module
472 will be called pwm-sti.
475 tristate "STMicroelectronics STM32 PWM"
476 depends on MFD_STM32_TIMERS || COMPILE_TEST
478 Generic PWM framework driver for STM32 SoCs.
480 To compile this driver as a module, choose M here: the module
481 will be called pwm-stm32.
484 tristate "STMicroelectronics STM32 PWM LP"
485 depends on MFD_STM32_LPTIMER || COMPILE_TEST
487 Generic PWM framework driver for STMicroelectronics STM32 SoCs
488 with Low-Power Timer (LPTIM).
490 To compile this driver as a module, choose M here: the module
491 will be called pwm-stm32-lp.
494 bool "STMPE expander PWM export"
497 This enables support for the PWMs found in the STMPE I/O
501 tristate "Allwinner PWM support"
502 depends on ARCH_SUNXI || COMPILE_TEST
503 depends on HAS_IOMEM && COMMON_CLK
505 Generic PWM framework driver for Allwinner SoCs.
507 To compile this driver as a module, choose M here: the module
508 will be called pwm-sun4i.
511 tristate "NVIDIA Tegra PWM support"
512 depends on ARCH_TEGRA || COMPILE_TEST
514 Generic PWM framework driver for the PWFM controller found on NVIDIA
517 To compile this driver as a module, choose M here: the module
518 will be called pwm-tegra.
521 tristate "ECAP PWM support"
522 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
524 PWM driver support for the ECAP APWM controller found on TI SOCs
526 To compile this driver as a module, choose M here: the module
527 will be called pwm-tiecap.
530 tristate "EHRPWM PWM support"
531 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
533 PWM driver support for the EHRPWM controller found on TI SOCs
535 To compile this driver as a module, choose M here: the module
536 will be called pwm-tiehrpwm.
539 tristate "TWL4030/6030 PWM support"
540 depends on TWL4030_CORE
542 Generic PWM framework driver for TWL4030/6030.
544 To compile this driver as a module, choose M here: the module
545 will be called pwm-twl.
548 tristate "TWL4030/6030 PWM support for LED drivers"
549 depends on TWL4030_CORE
551 Generic PWM framework driver for TWL4030/6030 LED terminals.
553 To compile this driver as a module, choose M here: the module
554 will be called pwm-twl-led.
557 tristate "vt8500 PWM support"
558 depends on ARCH_VT8500 || COMPILE_TEST
560 Generic PWM framework driver for vt8500.
562 To compile this driver as a module, choose M here: the module
563 will be called pwm-vt8500.
566 tristate "ZTE ZX PWM support"
567 depends on ARCH_ZX || COMPILE_TEST
569 Generic PWM framework driver for ZTE ZX family SoCs.
571 To compile this driver as a module, choose M here: the module
572 will be called pwm-zx.