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.
33 bool "PWM lowlevel drivers additional checks and debug messages"
34 depends on DEBUG_KERNEL
36 This option enables some additional checks to help lowlevel driver
37 authors to get their callbacks implemented correctly.
38 It is expected to introduce some runtime overhead and diagnostic
39 output to the kernel log, so only enable while working on a driver.
42 tristate "AB8500 PWM support"
43 depends on AB8500_CORE && ARCH_U8500
45 Generic PWM framework driver for Analog Baseband AB8500.
47 To compile this driver as a module, choose M here: the module
48 will be called pwm-ab8500.
51 tristate "Apple SoC PWM support"
52 depends on ARCH_APPLE || COMPILE_TEST
54 Generic PWM framework driver for PWM controller present on
57 Say Y here if you have an ARM Apple laptop, otherwise say N
59 To compile this driver as a module, choose M here: the module
60 will be called pwm-apple.
63 tristate "Atmel PWM support"
64 depends on ARCH_AT91 || COMPILE_TEST
65 depends on HAS_IOMEM && OF
67 Generic PWM framework driver for Atmel SoC.
69 To compile this driver as a module, choose M here: the module
70 will be called pwm-atmel.
72 config PWM_ATMEL_HLCDC_PWM
73 tristate "Atmel HLCDC PWM support"
74 depends on MFD_ATMEL_HLCDC
77 Generic PWM framework driver for the PWM output of the HLCDC
78 (Atmel High-end LCD Controller). This PWM output is mainly used
79 to control the LCD backlight.
81 To compile this driver as a module, choose M here: the module
82 will be called pwm-atmel-hlcdc.
85 tristate "Atmel TC Block PWM support"
89 Generic PWM framework driver for Atmel Timer Counter Block.
91 A Timer Counter Block provides 6 PWM devices grouped by 2.
92 Devices in a given group must have the same period.
94 To compile this driver as a module, choose M here: the module
95 will be called pwm-atmel-tcb.
98 tristate "Analog Devices AXI PWM generator"
99 depends on MICROBLAZE || NIOS2 || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_INTEL_SOCFPGA || COMPILE_TEST
102 This enables support for the Analog Devices AXI PWM generator.
104 This is a configurable PWM generator with variable pulse width and
107 To compile this driver as a module, choose M here: the module will be
108 called pwm-axi-pwmgen.
111 tristate "iProc PWM support"
112 depends on ARCH_BCM_IPROC || COMPILE_TEST
113 depends on COMMON_CLK && HAS_IOMEM
114 default ARCH_BCM_IPROC
116 Generic PWM framework driver for Broadcom iProc PWM block. This
117 block is used in Broadcom iProc SoC's.
119 To compile this driver as a module, choose M here: the module
120 will be called pwm-bcm-iproc.
123 tristate "Kona PWM support"
124 depends on ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS || COMPILE_TEST
125 depends on HAVE_CLK && HAS_IOMEM
126 default ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS
128 Generic PWM framework driver for Broadcom Kona PWM block.
130 To compile this driver as a module, choose M here: the module
131 will be called pwm-bcm-kona.
134 tristate "BCM2835 PWM support"
135 depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
138 PWM framework driver for BCM2835 controller (Raspberry Pi)
140 To compile this driver as a module, choose M here: the module
141 will be called pwm-bcm2835.
144 tristate "Marvell Berlin PWM support"
145 depends on ARCH_BERLIN || COMPILE_TEST
148 PWM framework driver for Marvell Berlin SoCs.
150 To compile this driver as a module, choose M here: the module
151 will be called pwm-berlin.
154 tristate "Broadcom STB PWM support"
155 depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
158 Generic PWM framework driver for the Broadcom Set-top-Box
161 To compile this driver as a module, choose M Here: the module
162 will be called pwm-brcmstb.c.
165 tristate "Clock based PWM support"
166 depends on HAVE_CLK || COMPILE_TEST
168 Generic PWM framework driver for outputs that can be
171 To compile this driver as a module, choose M here: the module
172 will be called pwm-clk.
175 tristate "CLPS711X PWM support"
176 depends on ARCH_CLPS711X || COMPILE_TEST
179 Generic PWM framework driver for Cirrus Logic CLPS711X.
181 To compile this driver as a module, choose M here: the module
182 will be called pwm-clps711x.
185 tristate "Intel Crystalcove (CRC) PWM support"
186 depends on INTEL_SOC_PMIC
188 Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
192 tristate "ChromeOS EC PWM driver"
195 PWM driver for exposing a PWM attached to the ChromeOS Embedded
202 PWM driver for Synopsys DWC PWM Controller.
204 To compile this driver as a module, build the dependecies as
205 modules, this will be called pwm-dwc-core.
208 tristate "DesignWare PWM Controller (PCI bus)"
209 depends on HAS_IOMEM && PCI
212 PWM driver for Synopsys DWC PWM Controller attached to a PCI bus.
214 To compile this driver as a module, choose M here: the module
215 will be called pwm-dwc.
218 tristate "Cirrus Logic EP93xx PWM support"
219 depends on ARCH_EP93XX || COMPILE_TEST
222 Generic PWM framework driver for Cirrus Logic EP93xx.
224 To compile this driver as a module, choose M here: the module
225 will be called pwm-ep93xx.
228 tristate "Freescale FlexTimer Module (FTM) PWM support"
233 Generic FTM PWM framework driver for Freescale VF610 and
234 Layerscape LS-1 SoCs.
236 To compile this driver as a module, choose M here: the module
237 will be called pwm-fsl-ftm.
240 tristate "GPIO PWM support"
242 depends on HIGH_RES_TIMERS
244 Generic PWM framework driver for software PWM toggling a GPIO pin
245 from kernel high-resolution timers.
247 To compile this driver as a module, choose M here: the module
248 will be called pwm-gpio.
251 tristate "HiSilicon BVT PWM support"
252 depends on ARCH_HISI || COMPILE_TEST
255 Generic PWM framework driver for HiSilicon BVT SoCs.
257 To compile this driver as a module, choose M here: the module
258 will be called pwm-hibvt.
261 tristate "Imagination Technologies PWM driver"
263 depends on MFD_SYSCON
264 depends on COMMON_CLK
265 depends on MIPS || COMPILE_TEST
267 Generic PWM framework driver for Imagination Technologies
268 PWM block which supports 4 channels.
270 To compile this driver as a module, choose M here: the module
271 will be called pwm-img
274 tristate "i.MX1 PWM support"
275 depends on ARCH_MXC || COMPILE_TEST
278 Generic PWM framework driver for i.MX1 and i.MX21
280 To compile this driver as a module, choose M here: the module
281 will be called pwm-imx1.
284 tristate "i.MX27 PWM support"
285 depends on ARCH_MXC || COMPILE_TEST
288 Generic PWM framework driver for i.MX27 and later i.MX SoCs.
290 To compile this driver as a module, choose M here: the module
291 will be called pwm-imx27.
294 tristate "i.MX TPM PWM support"
295 depends on ARCH_MXC || COMPILE_TEST
296 depends on HAVE_CLK && HAS_IOMEM
298 Generic PWM framework driver for i.MX7ULP TPM module, TPM's full
299 name is Low Power Timer/Pulse Width Modulation Module.
301 To compile this driver as a module, choose M here: the module
302 will be called pwm-imx-tpm.
305 tristate "Intel LGM PWM support"
307 depends on (OF && X86) || COMPILE_TEST
310 Generic PWM fan controller driver for LGM SoC.
312 To compile this driver as a module, choose M here: the module
313 will be called pwm-intel-lgm.
316 tristate "Azoteq IQS620A PWM support"
317 depends on MFD_IQS62X || COMPILE_TEST
319 Generic PWM framework driver for the Azoteq IQS620A multi-function
322 To compile this driver as a module, choose M here: the module will
323 be called pwm-iqs620a.
326 tristate "Ingenic JZ47xx PWM support"
327 depends on MACH_INGENIC || COMPILE_TEST
328 depends on COMMON_CLK && OF
331 Generic PWM framework driver for Ingenic JZ47xx based
334 To compile this driver as a module, choose M here: the module
335 will be called pwm-jz4740.
338 tristate "Intel Keem Bay PWM driver"
339 depends on ARCH_KEEMBAY || COMPILE_TEST
340 depends on COMMON_CLK && HAS_IOMEM
342 The platform driver for Intel Keem Bay PWM controller.
344 To compile this driver as a module, choose M here: the module
345 will be called pwm-keembay.
348 tristate "TI/National Semiconductor LP3943 PWM support"
349 depends on MFD_LP3943
351 Generic PWM framework driver for LP3943 which supports two PWM
354 To compile this driver as a module, choose M here: the module
355 will be called pwm-lp3943.
357 config PWM_LPC18XX_SCT
358 tristate "LPC18xx/43xx PWM/SCT support"
359 depends on ARCH_LPC18XX || COMPILE_TEST
362 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
363 supports 16 channels.
364 A maximum of 15 channels can be requested simultaneously and
365 must have the same period.
367 To compile this driver as a module, choose M here: the module
368 will be called pwm-lpc18xx-sct.
371 tristate "LPC32XX PWM support"
372 depends on ARCH_LPC32XX || COMPILE_TEST
375 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
378 To compile this driver as a module, choose M here: the module
379 will be called pwm-lpc32xx.
386 tristate "Intel LPSS PWM PCI driver"
387 depends on X86 || COMPILE_TEST
388 depends on HAS_IOMEM && PCI
391 The PCI driver for Intel Low Power Subsystem PWM controller.
393 To compile this driver as a module, choose M here: the module
394 will be called pwm-lpss-pci.
396 config PWM_LPSS_PLATFORM
397 tristate "Intel LPSS PWM platform driver"
398 depends on (X86 && ACPI) || COMPILE_TEST
402 The platform driver for Intel Low Power Subsystem PWM controller.
404 To compile this driver as a module, choose M here: the module
405 will be called pwm-lpss-platform.
408 tristate "Amlogic Meson PWM driver"
409 depends on ARCH_MESON || COMPILE_TEST
410 depends on COMMON_CLK && HAS_IOMEM
412 The platform driver for Amlogic Meson PWM controller.
414 To compile this driver as a module, choose M here: the module
415 will be called pwm-meson.
418 tristate "MediaTek display PWM driver"
419 depends on ARCH_MEDIATEK || COMPILE_TEST
422 Generic PWM framework driver for MediaTek disp-pwm device.
423 The PWM is used to control the backlight brightness for display.
425 To compile this driver as a module, choose M here: the module
426 will be called pwm-mtk-disp.
429 tristate "MediaTek PWM support"
430 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
433 Generic PWM framework driver for Mediatek ARM SoC.
435 To compile this driver as a module, choose M here: the module
436 will be called pwm-mediatek.
438 config PWM_MICROCHIP_CORE
439 tristate "Microchip corePWM PWM support"
440 depends on ARCH_MICROCHIP_POLARFIRE || COMPILE_TEST
441 depends on HAS_IOMEM && OF
443 PWM driver for Microchip FPGA soft IP core.
445 To compile this driver as a module, choose M here: the module
446 will be called pwm-microchip-core.
449 tristate "Freescale MXS PWM support"
450 depends on ARCH_MXS || COMPILE_TEST
451 depends on HAS_IOMEM && OF
454 Generic PWM framework driver for Freescale MXS.
456 To compile this driver as a module, choose M here: the module
457 will be called pwm-mxs.
460 tristate "Netronix embedded controller PWM support"
463 Say yes here if you want to support the PWM output of the embedded
464 controller found in certain e-book readers designed by the original
465 design manufacturer Netronix.
467 config PWM_OMAP_DMTIMER
468 tristate "OMAP Dual-Mode Timer PWM support"
470 depends on OMAP_DM_TIMER || COMPILE_TEST
472 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
474 To compile this driver as a module, choose M here: the module
475 will be called pwm-omap-dmtimer
478 tristate "NXP PCA9685 PWM driver"
482 Generic PWM framework driver for NXP PCA9685 LED controller.
484 To compile this driver as a module, choose M here: the module
485 will be called pwm-pca9685.
488 tristate "PXA PWM support"
489 depends on ARCH_PXA || ARCH_MMP || COMPILE_TEST
492 Generic PWM framework driver for PXA.
494 To compile this driver as a module, choose M here: the module
495 will be called pwm-pxa.
497 config PWM_RASPBERRYPI_POE
498 tristate "Raspberry Pi Firwmware PoE Hat PWM support"
499 # Make sure not 'y' when RASPBERRYPI_FIRMWARE is 'm'. This can only
500 # happen when COMPILE_TEST=y, hence the added !RASPBERRYPI_FIRMWARE.
501 depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
503 Enable Raspberry Pi firmware controller PWM bus used to control the
507 tristate "Renesas R-Car PWM support"
508 depends on ARCH_RENESAS || COMPILE_TEST
511 This driver exposes the PWM Timer controller found in Renesas
512 R-Car chips through the PWM API.
514 To compile this driver as a module, choose M here: the module
515 will be called pwm-rcar.
517 config PWM_RENESAS_TPU
518 tristate "Renesas TPU PWM support"
519 depends on ARCH_RENESAS || COMPILE_TEST
522 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
523 in Renesas chips through the PWM API.
525 To compile this driver as a module, choose M here: the module
526 will be called pwm-renesas-tpu.
529 tristate "Rockchip PWM support"
530 depends on ARCH_ROCKCHIP || COMPILE_TEST
533 Generic PWM framework driver for the PWM controller found on
537 tristate "Renesas RZ/G2L MTU3a PWM Timer support"
541 This driver exposes the MTU3a PWM Timer controller found in Renesas
542 RZ/G2L like chips through the PWM API.
544 To compile this driver as a module, choose M here: the module
545 will be called pwm-rz-mtu3.
548 tristate "Samsung PWM support"
549 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
552 Generic PWM framework driver for Samsung S3C24xx, S3C64xx, S5Pv210
554 Choose Y here only if you build for such Samsung SoC.
556 To compile this driver as a module, choose M here: the module
557 will be called pwm-samsung.
560 tristate "SiFive PWM support"
562 depends on COMMON_CLK && HAS_IOMEM
563 depends on RISCV || COMPILE_TEST
565 Generic PWM framework driver for SiFive SoCs.
567 To compile this driver as a module, choose M here: the module
568 will be called pwm-sifive.
571 tristate "Kontron sl28cpld PWM support"
572 depends on MFD_SL28CPLD || COMPILE_TEST
574 Generic PWM framework driver for board management controller
575 found on the Kontron sl28 CPLD.
577 To compile this driver as a module, choose M here: the module
578 will be called pwm-sl28cpld.
581 tristate "STMicroelectronics SPEAr PWM support"
582 depends on PLAT_SPEAR || COMPILE_TEST
583 depends on HAS_IOMEM && OF
585 Generic PWM framework driver for the PWM controller on ST
588 To compile this driver as a module, choose M here: the module
589 will be called pwm-spear.
592 tristate "Spreadtrum PWM support"
593 depends on ARCH_SPRD || COMPILE_TEST
596 Generic PWM framework driver for the PWM controller on
599 To compile this driver as a module, choose M here: the module
600 will be called pwm-sprd.
603 tristate "STiH4xx PWM support"
604 depends on ARCH_STI || COMPILE_TEST
605 depends on HAS_IOMEM && OF
607 Generic PWM framework driver for STiH4xx SoCs.
609 To compile this driver as a module, choose M here: the module
610 will be called pwm-sti.
613 tristate "STMicroelectronics STM32 PWM"
614 depends on MFD_STM32_TIMERS || COMPILE_TEST
616 Generic PWM framework driver for STM32 SoCs.
618 To compile this driver as a module, choose M here: the module
619 will be called pwm-stm32.
622 tristate "STMicroelectronics STM32 PWM LP"
623 depends on MFD_STM32_LPTIMER || COMPILE_TEST
625 Generic PWM framework driver for STMicroelectronics STM32 SoCs
626 with Low-Power Timer (LPTIM).
628 To compile this driver as a module, choose M here: the module
629 will be called pwm-stm32-lp.
632 bool "STMPE expander PWM export"
635 This enables support for the PWMs found in the STMPE I/O
639 tristate "Allwinner PWM support"
640 depends on ARCH_SUNXI || COMPILE_TEST
641 depends on HAS_IOMEM && COMMON_CLK
643 Generic PWM framework driver for Allwinner SoCs.
645 To compile this driver as a module, choose M here: the module
646 will be called pwm-sun4i.
649 tristate "Sunplus PWM support"
650 depends on ARCH_SUNPLUS || COMPILE_TEST
651 depends on HAS_IOMEM && OF
653 Generic PWM framework driver for the PWM controller on
656 To compile this driver as a module, choose M here: the module
657 will be called pwm-sunplus.
660 tristate "NVIDIA Tegra PWM support"
661 depends on ARCH_TEGRA || COMPILE_TEST
664 Generic PWM framework driver for the PWFM controller found on NVIDIA
667 To compile this driver as a module, choose M here: the module
668 will be called pwm-tegra.
671 tristate "ECAP PWM support"
672 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
675 PWM driver support for the ECAP APWM controller found on TI SOCs
677 To compile this driver as a module, choose M here: the module
678 will be called pwm-tiecap.
681 tristate "EHRPWM PWM support"
682 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
685 PWM driver support for the EHRPWM controller found on TI SOCs
687 To compile this driver as a module, choose M here: the module
688 will be called pwm-tiehrpwm.
691 tristate "TWL4030/6030 PWM support"
692 depends on TWL4030_CORE
694 Generic PWM framework driver for TWL4030/6030.
696 To compile this driver as a module, choose M here: the module
697 will be called pwm-twl.
700 tristate "TWL4030/6030 PWM support for LED drivers"
701 depends on TWL4030_CORE
703 Generic PWM framework driver for TWL4030/6030 LED terminals.
705 To compile this driver as a module, choose M here: the module
706 will be called pwm-twl-led.
709 tristate "Toshiba Visconti PWM support"
710 depends on ARCH_VISCONTI || COMPILE_TEST
712 PWM Subsystem driver support for Toshiba Visconti SoCs.
714 To compile this driver as a module, choose M here: the module
715 will be called pwm-visconti.
718 tristate "vt8500 PWM support"
719 depends on ARCH_VT8500 || COMPILE_TEST
722 Generic PWM framework driver for vt8500.
724 To compile this driver as a module, choose M here: the module
725 will be called pwm-vt8500.
728 tristate "Xilinx AXI Timer PWM support"
729 depends on OF_ADDRESS
730 depends on COMMON_CLK
733 PWM driver for Xilinx LogiCORE IP AXI timers. This timer is
734 typically a soft core which may be present in Xilinx FPGAs.
735 This device may also be present in Microblaze soft processors.
736 If you don't have this IP in your design, choose N.
738 To compile this driver as a module, choose M here: the module
739 will be called pwm-xilinx.