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 "DesignWare PWM Controller"
168 PWM driver for Synopsys DWC PWM Controller attached to a PCI bus.
170 To compile this driver as a module, choose M here: the module
171 will be called pwm-dwc.
174 tristate "Cirrus Logic EP93xx PWM support"
175 depends on ARCH_EP93XX || COMPILE_TEST
177 Generic PWM framework driver for Cirrus Logic EP93xx.
179 To compile this driver as a module, choose M here: the module
180 will be called pwm-ep93xx.
183 tristate "Freescale FlexTimer Module (FTM) PWM support"
188 Generic FTM PWM framework driver for Freescale VF610 and
189 Layerscape LS-1 SoCs.
191 To compile this driver as a module, choose M here: the module
192 will be called pwm-fsl-ftm.
195 tristate "HiSilicon BVT PWM support"
196 depends on ARCH_HISI || COMPILE_TEST
198 Generic PWM framework driver for HiSilicon BVT SoCs.
200 To compile this driver as a module, choose M here: the module
201 will be called pwm-hibvt.
204 tristate "Imagination Technologies PWM driver"
206 depends on MFD_SYSCON
207 depends on COMMON_CLK
208 depends on MIPS || COMPILE_TEST
210 Generic PWM framework driver for Imagination Technologies
211 PWM block which supports 4 channels.
213 To compile this driver as a module, choose M here: the module
214 will be called pwm-img
217 tristate "i.MX1 PWM support"
218 depends on ARCH_MXC || COMPILE_TEST
220 Generic PWM framework driver for i.MX1 and i.MX21
222 To compile this driver as a module, choose M here: the module
223 will be called pwm-imx1.
226 tristate "i.MX27 PWM support"
227 depends on ARCH_MXC || COMPILE_TEST
229 Generic PWM framework driver for i.MX27 and later i.MX SoCs.
231 To compile this driver as a module, choose M here: the module
232 will be called pwm-imx27.
235 tristate "i.MX TPM PWM support"
236 depends on ARCH_MXC || COMPILE_TEST
237 depends on HAVE_CLK && HAS_IOMEM
239 Generic PWM framework driver for i.MX7ULP TPM module, TPM's full
240 name is Low Power Timer/Pulse Width Modulation Module.
242 To compile this driver as a module, choose M here: the module
243 will be called pwm-imx-tpm.
246 tristate "Azoteq IQS620A PWM support"
247 depends on MFD_IQS62X || COMPILE_TEST
249 Generic PWM framework driver for the Azoteq IQS620A multi-function
252 To compile this driver as a module, choose M here: the module will
253 be called pwm-iqs620a.
256 tristate "Ingenic JZ47xx PWM support"
258 depends on COMMON_CLK
261 Generic PWM framework driver for Ingenic JZ47xx based
264 To compile this driver as a module, choose M here: the module
265 will be called pwm-jz4740.
268 tristate "Intel Keem Bay PWM driver"
269 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
271 The platform driver for Intel Keem Bay PWM controller.
273 To compile this driver as a module, choose M here: the module
274 will be called pwm-keembay.
277 tristate "TI/National Semiconductor LP3943 PWM support"
278 depends on MFD_LP3943
280 Generic PWM framework driver for LP3943 which supports two PWM
283 To compile this driver as a module, choose M here: the module
284 will be called pwm-lp3943.
286 config PWM_LPC18XX_SCT
287 tristate "LPC18xx/43xx PWM/SCT support"
288 depends on ARCH_LPC18XX || COMPILE_TEST
290 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
291 supports 16 channels.
292 A maximum of 15 channels can be requested simultaneously and
293 must have the same period.
295 To compile this driver as a module, choose M here: the module
296 will be called pwm-lpc18xx-sct.
299 tristate "LPC32XX PWM support"
300 depends on ARCH_LPC32XX || COMPILE_TEST
302 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
305 To compile this driver as a module, choose M here: the module
306 will be called pwm-lpc32xx.
312 tristate "Intel LPSS PWM PCI driver"
313 depends on X86 && PCI
316 The PCI driver for Intel Low Power Subsystem PWM controller.
318 To compile this driver as a module, choose M here: the module
319 will be called pwm-lpss-pci.
321 config PWM_LPSS_PLATFORM
322 tristate "Intel LPSS PWM platform driver"
323 depends on X86 && ACPI
326 The platform driver for Intel Low Power Subsystem PWM controller.
328 To compile this driver as a module, choose M here: the module
329 will be called pwm-lpss-platform.
332 tristate "Amlogic Meson PWM driver"
333 depends on ARCH_MESON || COMPILE_TEST
334 depends on COMMON_CLK
336 The platform driver for Amlogic Meson PWM controller.
338 To compile this driver as a module, choose M here: the module
339 will be called pwm-meson.
342 tristate "MediaTek display PWM driver"
343 depends on ARCH_MEDIATEK || COMPILE_TEST
346 Generic PWM framework driver for MediaTek disp-pwm device.
347 The PWM is used to control the backlight brightness for display.
349 To compile this driver as a module, choose M here: the module
350 will be called pwm-mtk-disp.
353 tristate "MediaTek PWM support"
354 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
356 Generic PWM framework driver for Mediatek ARM SoC.
358 To compile this driver as a module, choose M here: the module
359 will be called pwm-mediatek.
362 tristate "Freescale MXS PWM support"
364 depends on ARCH_MXS || COMPILE_TEST
367 Generic PWM framework driver for Freescale MXS.
369 To compile this driver as a module, choose M here: the module
370 will be called pwm-mxs.
372 config PWM_OMAP_DMTIMER
373 tristate "OMAP Dual-Mode Timer PWM support"
375 depends on OMAP_DM_TIMER || COMPILE_TEST
377 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
379 To compile this driver as a module, choose M here: the module
380 will be called pwm-omap-dmtimer
383 tristate "NXP PCA9685 PWM driver"
387 Generic PWM framework driver for NXP PCA9685 LED controller.
389 To compile this driver as a module, choose M here: the module
390 will be called pwm-pca9685.
393 tristate "PXA PWM support"
394 depends on ARCH_PXA || COMPILE_TEST
396 Generic PWM framework driver for PXA.
398 To compile this driver as a module, choose M here: the module
399 will be called pwm-pxa.
402 tristate "Renesas R-Car PWM support"
403 depends on ARCH_RENESAS || COMPILE_TEST
406 This driver exposes the PWM Timer controller found in Renesas
407 R-Car chips through the PWM API.
409 To compile this driver as a module, choose M here: the module
410 will be called pwm-rcar.
412 config PWM_RENESAS_TPU
413 tristate "Renesas TPU PWM support"
414 depends on ARCH_RENESAS || COMPILE_TEST
417 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
418 in Renesas chips through the PWM API.
420 To compile this driver as a module, choose M here: the module
421 will be called pwm-renesas-tpu.
424 tristate "Rockchip PWM support"
425 depends on ARCH_ROCKCHIP || COMPILE_TEST
427 Generic PWM framework driver for the PWM controller found on
431 tristate "Samsung PWM support"
432 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
434 Generic PWM framework driver for Samsung.
436 To compile this driver as a module, choose M here: the module
437 will be called pwm-samsung.
440 tristate "SiFive PWM support"
442 depends on COMMON_CLK
443 depends on RISCV || COMPILE_TEST
445 Generic PWM framework driver for SiFive SoCs.
447 To compile this driver as a module, choose M here: the module
448 will be called pwm-sifive.
451 tristate "Kontron sl28cpld PWM support"
452 depends on MFD_SL28CPLD || COMPILE_TEST
454 Generic PWM framework driver for board management controller
455 found on the Kontron sl28 CPLD.
457 To compile this driver as a module, choose M here: the module
458 will be called pwm-sl28cpld.
461 tristate "STMicroelectronics SPEAr PWM support"
462 depends on PLAT_SPEAR || COMPILE_TEST
465 Generic PWM framework driver for the PWM controller on ST
468 To compile this driver as a module, choose M here: the module
469 will be called pwm-spear.
472 tristate "Spreadtrum PWM support"
473 depends on ARCH_SPRD || COMPILE_TEST
476 Generic PWM framework driver for the PWM controller on
479 To compile this driver as a module, choose M here: the module
480 will be called pwm-sprd.
483 tristate "STiH4xx PWM support"
484 depends on ARCH_STI || COMPILE_TEST
487 Generic PWM framework driver for STiH4xx SoCs.
489 To compile this driver as a module, choose M here: the module
490 will be called pwm-sti.
493 tristate "STMicroelectronics STM32 PWM"
494 depends on MFD_STM32_TIMERS || COMPILE_TEST
496 Generic PWM framework driver for STM32 SoCs.
498 To compile this driver as a module, choose M here: the module
499 will be called pwm-stm32.
502 tristate "STMicroelectronics STM32 PWM LP"
503 depends on MFD_STM32_LPTIMER || COMPILE_TEST
505 Generic PWM framework driver for STMicroelectronics STM32 SoCs
506 with Low-Power Timer (LPTIM).
508 To compile this driver as a module, choose M here: the module
509 will be called pwm-stm32-lp.
512 bool "STMPE expander PWM export"
515 This enables support for the PWMs found in the STMPE I/O
519 tristate "Allwinner PWM support"
520 depends on ARCH_SUNXI || COMPILE_TEST
521 depends on HAS_IOMEM && COMMON_CLK
523 Generic PWM framework driver for Allwinner SoCs.
525 To compile this driver as a module, choose M here: the module
526 will be called pwm-sun4i.
529 tristate "NVIDIA Tegra PWM support"
530 depends on ARCH_TEGRA || COMPILE_TEST
532 Generic PWM framework driver for the PWFM controller found on NVIDIA
535 To compile this driver as a module, choose M here: the module
536 will be called pwm-tegra.
539 tristate "ECAP PWM support"
540 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
542 PWM driver support for the ECAP APWM controller found on TI SOCs
544 To compile this driver as a module, choose M here: the module
545 will be called pwm-tiecap.
548 tristate "EHRPWM PWM support"
549 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
551 PWM driver support for the EHRPWM controller found on TI SOCs
553 To compile this driver as a module, choose M here: the module
554 will be called pwm-tiehrpwm.
557 tristate "TWL4030/6030 PWM support"
558 depends on TWL4030_CORE
560 Generic PWM framework driver for TWL4030/6030.
562 To compile this driver as a module, choose M here: the module
563 will be called pwm-twl.
566 tristate "TWL4030/6030 PWM support for LED drivers"
567 depends on TWL4030_CORE
569 Generic PWM framework driver for TWL4030/6030 LED terminals.
571 To compile this driver as a module, choose M here: the module
572 will be called pwm-twl-led.
575 tristate "vt8500 PWM support"
576 depends on ARCH_VT8500 || COMPILE_TEST
578 Generic PWM framework driver for vt8500.
580 To compile this driver as a module, choose M here: the module
581 will be called pwm-vt8500.
584 tristate "ZTE ZX PWM support"
585 depends on ARCH_ZX || COMPILE_TEST
587 Generic PWM framework driver for ZTE ZX family SoCs.
589 To compile this driver as a module, choose M here: the module
590 will be called pwm-zx.