Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig PWM
3 bool "Pulse-Width Modulation (PWM) Support"
4 help
5 Generic Pulse-Width Modulation (PWM) support.
6
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
12 display backlights.
13
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.
20
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.
27
28 If unsure, say no.
29
30if PWM
31
32config PWM_DEBUG
33 bool "PWM lowlevel drivers additional checks and debug messages"
34 depends on DEBUG_KERNEL
35 help
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.
40
41config PWM_PROVIDE_GPIO
42 bool "Provide a GPIO chip for each PWM chip"
43 depends on GPIOLIB
44 help
45 Most PWMs can emit both a constant active high and a constant active
46 low signal and so they can be used as GPIO. Say Y here to let each
47 PWM chip provide a GPIO chip and so be easily plugged into consumers
48 that know how to handle GPIOs but not PWMs.
49
50config PWM_AB8500
51 tristate "AB8500 PWM support"
52 depends on AB8500_CORE && ARCH_U8500
53 help
54 Generic PWM framework driver for Analog Baseband AB8500.
55
56 To compile this driver as a module, choose M here: the module
57 will be called pwm-ab8500.
58
59config PWM_ADP5585
60 tristate "ADP5585 PWM support"
61 depends on MFD_ADP5585
62 help
63 This option enables support for the PWM function found in the Analog
64 Devices ADP5585.
65
66config PWM_AIROHA
67 tristate "Airoha PWM support"
68 depends on ARCH_AIROHA || COMPILE_TEST
69 select REGMAP_MMIO
70 help
71 Generic PWM framework driver for Airoha SoC.
72
73 To compile this driver as a module, choose M here: the module
74 will be called pwm-airoha.
75
76config PWM_APPLE
77 tristate "Apple SoC PWM support"
78 depends on ARCH_APPLE || COMPILE_TEST
79 help
80 Generic PWM framework driver for PWM controller present on
81 Apple SoCs
82
83 Say Y here if you have an ARM Apple laptop, otherwise say N
84
85 To compile this driver as a module, choose M here: the module
86 will be called pwm-apple.
87
88config PWM_ARGON_FAN_HAT
89 tristate "Argon40 Fan HAT support"
90 depends on I2C && OF
91 help
92 Generic PWM framework driver for Argon40 Fan HAT.
93
94 To compile this driver as a module, choose M here: the module
95 will be called pwm-argon-fan-hat.
96
97config PWM_ATMEL
98 tristate "Atmel PWM support"
99 depends on ARCH_AT91 || COMPILE_TEST
100 depends on HAS_IOMEM && OF
101 help
102 Generic PWM framework driver for Atmel SoC.
103
104 To compile this driver as a module, choose M here: the module
105 will be called pwm-atmel.
106
107config PWM_ATMEL_HLCDC_PWM
108 tristate "Atmel HLCDC PWM support"
109 depends on MFD_ATMEL_HLCDC
110 depends on HAVE_CLK
111 help
112 Generic PWM framework driver for the PWM output of the HLCDC
113 (Atmel High-end LCD Controller). This PWM output is mainly used
114 to control the LCD backlight.
115
116 To compile this driver as a module, choose M here: the module
117 will be called pwm-atmel-hlcdc.
118
119config PWM_ATMEL_TCB
120 tristate "Atmel TC Block PWM support"
121 depends on OF
122 select REGMAP_MMIO
123 help
124 Generic PWM framework driver for Atmel Timer Counter Block.
125
126 A Timer Counter Block provides 6 PWM devices grouped by 2.
127 Devices in a given group must have the same period.
128
129 To compile this driver as a module, choose M here: the module
130 will be called pwm-atmel-tcb.
131
132config PWM_AXI_PWMGEN
133 tristate "Analog Devices AXI PWM generator"
134 depends on MICROBLAZE || NIOS2 || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_INTEL_SOCFPGA || COMPILE_TEST
135 select REGMAP_MMIO
136 help
137 This enables support for the Analog Devices AXI PWM generator.
138
139 This is a configurable PWM generator with variable pulse width and
140 period.
141
142 To compile this driver as a module, choose M here: the module will be
143 called pwm-axi-pwmgen.
144
145config PWM_BCM2835
146 tristate "BCM2835 PWM support"
147 depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
148 depends on HAS_IOMEM
149 help
150 PWM framework driver for BCM2835 controller (Raspberry Pi)
151
152 To compile this driver as a module, choose M here: the module
153 will be called pwm-bcm2835.
154
155config PWM_BCM_IPROC
156 tristate "iProc PWM support"
157 depends on ARCH_BCM_IPROC || COMPILE_TEST
158 depends on COMMON_CLK && HAS_IOMEM
159 default ARCH_BCM_IPROC
160 help
161 Generic PWM framework driver for Broadcom iProc PWM block. This
162 block is used in Broadcom iProc SoC's.
163
164 To compile this driver as a module, choose M here: the module
165 will be called pwm-bcm-iproc.
166
167config PWM_BCM_KONA
168 tristate "Kona PWM support"
169 depends on ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS || COMPILE_TEST
170 depends on HAVE_CLK && HAS_IOMEM
171 default ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS
172 help
173 Generic PWM framework driver for Broadcom Kona PWM block.
174
175 To compile this driver as a module, choose M here: the module
176 will be called pwm-bcm-kona.
177
178config PWM_BERLIN
179 tristate "Marvell Berlin PWM support"
180 depends on ARCH_BERLIN || COMPILE_TEST
181 depends on HAS_IOMEM
182 help
183 PWM framework driver for Marvell Berlin SoCs.
184
185 To compile this driver as a module, choose M here: the module
186 will be called pwm-berlin.
187
188config PWM_BRCMSTB
189 tristate "Broadcom STB PWM support"
190 depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
191 depends on HAS_IOMEM
192 help
193 Generic PWM framework driver for the Broadcom Set-top-Box
194 SoCs (BCM7xxx).
195
196 To compile this driver as a module, choose M Here: the module
197 will be called pwm-brcmstb.c.
198
199config PWM_CLK
200 tristate "Clock based PWM support"
201 depends on HAVE_CLK || COMPILE_TEST
202 help
203 Generic PWM framework driver for outputs that can be
204 muxed to clocks.
205
206 To compile this driver as a module, choose M here: the module
207 will be called pwm-clk.
208
209config PWM_CLPS711X
210 tristate "CLPS711X PWM support"
211 depends on ARCH_CLPS711X || COMPILE_TEST
212 depends on HAS_IOMEM
213 help
214 Generic PWM framework driver for Cirrus Logic CLPS711X.
215
216 To compile this driver as a module, choose M here: the module
217 will be called pwm-clps711x.
218
219config PWM_CRC
220 tristate "Intel Crystalcove (CRC) PWM support"
221 depends on INTEL_SOC_PMIC
222 help
223 Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
224 control.
225
226config PWM_CROS_EC
227 tristate "ChromeOS EC PWM driver"
228 depends on CROS_EC
229 help
230 PWM driver for exposing a PWM attached to the ChromeOS Embedded
231 Controller.
232
233config PWM_DWC_CORE
234 tristate
235 depends on HAS_IOMEM
236 help
237 PWM driver for Synopsys DWC PWM Controller.
238
239 To compile this driver as a module, build the dependecies as
240 modules, this will be called pwm-dwc-core.
241
242config PWM_DWC
243 tristate "DesignWare PWM Controller (PCI bus)"
244 depends on HAS_IOMEM && PCI
245 select PWM_DWC_CORE
246 help
247 PWM driver for Synopsys DWC PWM Controller attached to a PCI bus.
248
249 To compile this driver as a module, choose M here: the module
250 will be called pwm-dwc.
251
252config PWM_EP93XX
253 tristate "Cirrus Logic EP93xx PWM support"
254 depends on ARCH_EP93XX || COMPILE_TEST
255 depends on HAS_IOMEM
256 help
257 Generic PWM framework driver for Cirrus Logic EP93xx.
258
259 To compile this driver as a module, choose M here: the module
260 will be called pwm-ep93xx.
261
262config PWM_FSL_FTM
263 tristate "Freescale FlexTimer Module (FTM) PWM support"
264 depends on HAS_IOMEM
265 depends on OF
266 select REGMAP_MMIO
267 help
268 Generic FTM PWM framework driver for Freescale VF610 and
269 Layerscape LS-1 SoCs.
270
271 To compile this driver as a module, choose M here: the module
272 will be called pwm-fsl-ftm.
273
274config PWM_GPIO
275 tristate "GPIO PWM support"
276 depends on GPIOLIB
277 depends on HIGH_RES_TIMERS
278 help
279 Generic PWM framework driver for software PWM toggling a GPIO pin
280 from kernel high-resolution timers.
281
282 To compile this driver as a module, choose M here: the module
283 will be called pwm-gpio.
284
285config PWM_HIBVT
286 tristate "HiSilicon BVT PWM support"
287 depends on ARCH_HISI || COMPILE_TEST
288 depends on HAS_IOMEM
289 help
290 Generic PWM framework driver for HiSilicon BVT SoCs.
291
292 To compile this driver as a module, choose M here: the module
293 will be called pwm-hibvt.
294
295config PWM_IMG
296 tristate "Imagination Technologies PWM driver"
297 depends on HAS_IOMEM
298 depends on MFD_SYSCON
299 depends on COMMON_CLK
300 depends on MIPS || COMPILE_TEST
301 help
302 Generic PWM framework driver for Imagination Technologies
303 PWM block which supports 4 channels.
304
305 To compile this driver as a module, choose M here: the module
306 will be called pwm-img
307
308config PWM_IMX1
309 tristate "i.MX1 PWM support"
310 depends on ARCH_MXC || COMPILE_TEST
311 depends on HAS_IOMEM
312 help
313 Generic PWM framework driver for i.MX1 and i.MX21
314
315 To compile this driver as a module, choose M here: the module
316 will be called pwm-imx1.
317
318config PWM_IMX27
319 tristate "i.MX27 PWM support"
320 depends on ARCH_MXC || COMPILE_TEST
321 depends on HAS_IOMEM
322 help
323 Generic PWM framework driver for i.MX27 and later i.MX SoCs.
324
325 To compile this driver as a module, choose M here: the module
326 will be called pwm-imx27.
327
328config PWM_IMX_TPM
329 tristate "i.MX TPM PWM support"
330 depends on ARCH_MXC || COMPILE_TEST
331 depends on HAVE_CLK && HAS_IOMEM
332 help
333 Generic PWM framework driver for i.MX7ULP TPM module, TPM's full
334 name is Low Power Timer/Pulse Width Modulation Module.
335
336 To compile this driver as a module, choose M here: the module
337 will be called pwm-imx-tpm.
338
339config PWM_INTEL_LGM
340 tristate "Intel LGM PWM support"
341 depends on HAS_IOMEM
342 depends on (OF && X86) || COMPILE_TEST
343 select REGMAP_MMIO
344 help
345 Generic PWM fan controller driver for LGM SoC.
346
347 To compile this driver as a module, choose M here: the module
348 will be called pwm-intel-lgm.
349
350config PWM_IQS620A
351 tristate "Azoteq IQS620A PWM support"
352 depends on MFD_IQS62X || COMPILE_TEST
353 help
354 Generic PWM framework driver for the Azoteq IQS620A multi-function
355 sensor.
356
357 To compile this driver as a module, choose M here: the module will
358 be called pwm-iqs620a.
359
360config PWM_JZ4740
361 tristate "Ingenic JZ47xx PWM support"
362 depends on MACH_INGENIC || COMPILE_TEST
363 depends on COMMON_CLK && OF
364 select MFD_SYSCON
365 help
366 Generic PWM framework driver for Ingenic JZ47xx based
367 machines.
368
369 To compile this driver as a module, choose M here: the module
370 will be called pwm-jz4740.
371
372config PWM_KEEMBAY
373 tristate "Intel Keem Bay PWM driver"
374 depends on ARCH_KEEMBAY || COMPILE_TEST
375 depends on COMMON_CLK && HAS_IOMEM
376 help
377 The platform driver for Intel Keem Bay PWM controller.
378
379 To compile this driver as a module, choose M here: the module
380 will be called pwm-keembay.
381
382config PWM_LOONGSON
383 tristate "Loongson PWM support"
384 depends on MACH_LOONGSON64 || COMPILE_TEST
385 depends on COMMON_CLK
386 help
387 Generic PWM framework driver for Loongson family.
388 It can be found on Loongson-2K series cpus and Loongson LS7A
389 bridge chips.
390
391 To compile this driver as a module, choose M here: the module
392 will be called pwm-loongson.
393
394config PWM_LP3943
395 tristate "TI/National Semiconductor LP3943 PWM support"
396 depends on MFD_LP3943
397 help
398 Generic PWM framework driver for LP3943 which supports two PWM
399 channels.
400
401 To compile this driver as a module, choose M here: the module
402 will be called pwm-lp3943.
403
404config PWM_LPC18XX_SCT
405 tristate "LPC18xx/43xx PWM/SCT support"
406 depends on ARCH_LPC18XX || COMPILE_TEST
407 depends on HAS_IOMEM
408 help
409 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
410 supports 16 channels.
411 A maximum of 15 channels can be requested simultaneously and
412 must have the same period.
413
414 To compile this driver as a module, choose M here: the module
415 will be called pwm-lpc18xx-sct.
416
417config PWM_LPC32XX
418 tristate "LPC32XX PWM support"
419 depends on ARCH_LPC32XX || COMPILE_TEST
420 depends on HAS_IOMEM
421 help
422 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
423 PWM controllers.
424
425 To compile this driver as a module, choose M here: the module
426 will be called pwm-lpc32xx.
427
428config PWM_LPSS
429 depends on HAS_IOMEM
430 tristate
431
432config PWM_LPSS_PCI
433 tristate "Intel LPSS PWM PCI driver"
434 depends on X86 || COMPILE_TEST
435 depends on HAS_IOMEM && PCI
436 select PWM_LPSS
437 help
438 The PCI driver for Intel Low Power Subsystem PWM controller.
439
440 To compile this driver as a module, choose M here: the module
441 will be called pwm-lpss-pci.
442
443config PWM_LPSS_PLATFORM
444 tristate "Intel LPSS PWM platform driver"
445 depends on (X86 && ACPI) || COMPILE_TEST
446 depends on HAS_IOMEM
447 select PWM_LPSS
448 help
449 The platform driver for Intel Low Power Subsystem PWM controller.
450
451 To compile this driver as a module, choose M here: the module
452 will be called pwm-lpss-platform.
453
454config PWM_MAX7360
455 tristate "MAX7360 PWMs"
456 depends on MFD_MAX7360
457 help
458 PWM driver for Maxim Integrated MAX7360 multifunction device, with
459 support for up to 8 PWM outputs.
460
461 To compile this driver as a module, choose M here: the module
462 will be called pwm-max7360.
463
464config PWM_MC33XS2410
465 tristate "MC33XS2410 PWM support"
466 depends on OF
467 depends on SPI
468 select AUXILIARY_BUS
469 help
470 NXP MC33XS2410 high-side switch driver. The MC33XS2410 is a four
471 channel high-side switch. The device is operational from 3.0 V
472 to 60 V. The device is controlled by SPI port for configuration.
473
474 To compile this driver as a module, choose M here: the module
475 will be called pwm-mc33xs2410.
476
477config PWM_MEDIATEK
478 tristate "MediaTek PWM support"
479 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
480 depends on HAS_IOMEM
481 help
482 Generic PWM framework driver for Mediatek ARM SoC.
483
484 To compile this driver as a module, choose M here: the module
485 will be called pwm-mediatek.
486
487config PWM_MESON
488 tristate "Amlogic Meson PWM driver"
489 depends on ARCH_MESON || COMPILE_TEST
490 depends on COMMON_CLK && HAS_IOMEM
491 help
492 The platform driver for Amlogic Meson PWM controller.
493
494 To compile this driver as a module, choose M here: the module
495 will be called pwm-meson.
496
497config PWM_MICROCHIP_CORE
498 tristate "Microchip corePWM PWM support"
499 depends on ARCH_MICROCHIP_POLARFIRE || COMPILE_TEST
500 depends on HAS_IOMEM && OF
501 help
502 PWM driver for Microchip FPGA soft IP core.
503
504 To compile this driver as a module, choose M here: the module
505 will be called pwm-microchip-core.
506
507config PWM_MTK_DISP
508 tristate "MediaTek display PWM driver"
509 depends on ARCH_MEDIATEK || COMPILE_TEST
510 depends on HAS_IOMEM
511 help
512 Generic PWM framework driver for MediaTek disp-pwm device.
513 The PWM is used to control the backlight brightness for display.
514
515 To compile this driver as a module, choose M here: the module
516 will be called pwm-mtk-disp.
517
518config PWM_MXS
519 tristate "Freescale MXS PWM support"
520 depends on ARCH_MXS || COMPILE_TEST
521 depends on HAS_IOMEM && OF
522 select STMP_DEVICE
523 help
524 Generic PWM framework driver for Freescale MXS.
525
526 To compile this driver as a module, choose M here: the module
527 will be called pwm-mxs.
528
529config PWM_NTXEC
530 tristate "Netronix embedded controller PWM support"
531 depends on MFD_NTXEC
532 help
533 Say yes here if you want to support the PWM output of the embedded
534 controller found in certain e-book readers designed by the original
535 design manufacturer Netronix.
536
537config PWM_OMAP_DMTIMER
538 tristate "OMAP Dual-Mode Timer PWM support"
539 depends on OF
540 depends on OMAP_DM_TIMER || COMPILE_TEST
541 help
542 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
543
544 To compile this driver as a module, choose M here: the module
545 will be called pwm-omap-dmtimer
546
547config PWM_PCA9685
548 tristate "NXP PCA9685 PWM driver"
549 depends on I2C
550 select REGMAP_I2C
551 help
552 Generic PWM framework driver for NXP PCA9685 LED controller.
553
554 To compile this driver as a module, choose M here: the module
555 will be called pwm-pca9685.
556
557config PWM_PXA
558 tristate "PXA PWM support"
559 depends on ARCH_PXA || ARCH_MMP || ARCH_SPACEMIT || COMPILE_TEST
560 depends on HAS_IOMEM
561 help
562 Generic PWM framework driver for PXA.
563
564 To compile this driver as a module, choose M here: the module
565 will be called pwm-pxa.
566
567config PWM_RASPBERRYPI_POE
568 tristate "Raspberry Pi Firmware PoE Hat PWM support"
569 # Make sure not 'y' when RASPBERRYPI_FIRMWARE is 'm'. This can only
570 # happen when COMPILE_TEST=y, hence the added !RASPBERRYPI_FIRMWARE.
571 depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
572 help
573 Enable Raspberry Pi firmware controller PWM bus used to control the
574 official RPI PoE hat
575
576config PWM_RENESAS_RCAR
577 tristate "Renesas R-Car PWM support"
578 depends on ARCH_RENESAS || COMPILE_TEST
579 depends on HAS_IOMEM
580 help
581 This driver exposes the PWM Timer controller found in Renesas
582 R-Car chips through the PWM API.
583
584 To compile this driver as a module, choose M here: the module
585 will be called pwm-rcar.
586
587config PWM_RENESAS_RZG2L_GPT
588 tristate "Renesas RZ/G2L General PWM Timer support"
589 depends on ARCH_RZG2L || COMPILE_TEST
590 depends on HAS_IOMEM
591 help
592 This driver exposes the General PWM Timer controller found in Renesas
593 RZ/G2L like chips through the PWM API.
594
595 To compile this driver as a module, choose M here: the module
596 will be called pwm-rzg2l-gpt.
597
598config PWM_RENESAS_RZ_MTU3
599 tristate "Renesas RZ/G2L MTU3a PWM Timer support"
600 depends on RZ_MTU3
601 depends on HAS_IOMEM
602 help
603 This driver exposes the MTU3a PWM Timer controller found in Renesas
604 RZ/G2L like chips through the PWM API.
605
606 To compile this driver as a module, choose M here: the module
607 will be called pwm-rz-mtu3.
608
609config PWM_RENESAS_TPU
610 tristate "Renesas TPU PWM support"
611 depends on ARCH_RENESAS || COMPILE_TEST
612 depends on HAS_IOMEM
613 help
614 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
615 in Renesas chips through the PWM API.
616
617 To compile this driver as a module, choose M here: the module
618 will be called pwm-renesas-tpu.
619
620config PWM_ROCKCHIP
621 tristate "Rockchip PWM support"
622 depends on ARCH_ROCKCHIP || COMPILE_TEST
623 depends on HAS_IOMEM
624 help
625 Generic PWM framework driver for the PWM controller found on
626 Rockchip SoCs.
627
628config PWM_SAMSUNG
629 tristate "Samsung PWM support"
630 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
631 depends on HAS_IOMEM
632 help
633 Generic PWM framework driver for Samsung S3C24xx, S3C64xx, S5Pv210
634 and Exynos SoCs.
635 Choose Y here only if you build for such Samsung SoC.
636
637 To compile this driver as a module, choose M here: the module
638 will be called pwm-samsung.
639
640config PWM_SIFIVE
641 tristate "SiFive PWM support"
642 depends on OF
643 depends on COMMON_CLK && HAS_IOMEM
644 depends on ARCH_SIFIVE || COMPILE_TEST
645 help
646 Generic PWM framework driver for SiFive SoCs.
647
648 To compile this driver as a module, choose M here: the module
649 will be called pwm-sifive.
650
651config PWM_SL28CPLD
652 tristate "Kontron sl28cpld PWM support"
653 depends on MFD_SL28CPLD || COMPILE_TEST
654 help
655 Generic PWM framework driver for board management controller
656 found on the Kontron sl28 CPLD.
657
658 To compile this driver as a module, choose M here: the module
659 will be called pwm-sl28cpld.
660
661config PWM_SOPHGO_SG2042
662 tristate "Sophgo SG2042 PWM support"
663 depends on ARCH_SOPHGO || COMPILE_TEST
664 help
665 PWM driver for the PWM controller on Sophgo SG2042 SoC. The PWM
666 controller supports outputing 4 channels of PWM waveforms.
667
668 To compile this driver as a module, choose M here: the module
669 will be called pwm_sophgo_sg2042.
670
671config PWM_SPEAR
672 tristate "STMicroelectronics SPEAr PWM support"
673 depends on PLAT_SPEAR || COMPILE_TEST
674 depends on HAS_IOMEM && OF
675 help
676 Generic PWM framework driver for the PWM controller on ST
677 SPEAr SoCs.
678
679 To compile this driver as a module, choose M here: the module
680 will be called pwm-spear.
681
682config PWM_SPRD
683 tristate "Spreadtrum PWM support"
684 depends on ARCH_SPRD || COMPILE_TEST
685 depends on HAS_IOMEM
686 help
687 Generic PWM framework driver for the PWM controller on
688 Spreadtrum SoCs.
689
690 To compile this driver as a module, choose M here: the module
691 will be called pwm-sprd.
692
693config PWM_STI
694 tristate "STiH4xx PWM support"
695 depends on ARCH_STI || COMPILE_TEST
696 depends on HAS_IOMEM && OF
697 help
698 Generic PWM framework driver for STiH4xx SoCs.
699
700 To compile this driver as a module, choose M here: the module
701 will be called pwm-sti.
702
703config PWM_STM32
704 tristate "STMicroelectronics STM32 PWM"
705 depends on MFD_STM32_TIMERS || COMPILE_TEST
706 help
707 Generic PWM framework driver for STM32 SoCs.
708
709 To compile this driver as a module, choose M here: the module
710 will be called pwm-stm32.
711
712config PWM_STM32_LP
713 tristate "STMicroelectronics STM32 PWM LP"
714 depends on MFD_STM32_LPTIMER || COMPILE_TEST
715 help
716 Generic PWM framework driver for STMicroelectronics STM32 SoCs
717 with Low-Power Timer (LPTIM).
718
719 To compile this driver as a module, choose M here: the module
720 will be called pwm-stm32-lp.
721
722config PWM_STMPE
723 tristate "STMPE expander PWM export"
724 depends on MFD_STMPE
725 help
726 This enables support for the PWMs found in the STMPE I/O
727 expanders.
728
729config PWM_SUN4I
730 tristate "Allwinner PWM support"
731 depends on ARCH_SUNXI || COMPILE_TEST
732 depends on HAS_IOMEM && COMMON_CLK
733 help
734 Generic PWM framework driver for Allwinner SoCs.
735
736 To compile this driver as a module, choose M here: the module
737 will be called pwm-sun4i.
738
739config PWM_SUNPLUS
740 tristate "Sunplus PWM support"
741 depends on ARCH_SUNPLUS || COMPILE_TEST
742 depends on HAS_IOMEM && OF
743 help
744 Generic PWM framework driver for the PWM controller on
745 Sunplus SoCs.
746
747 To compile this driver as a module, choose M here: the module
748 will be called pwm-sunplus.
749
750config PWM_TEGRA
751 tristate "NVIDIA Tegra PWM support"
752 depends on ARCH_TEGRA || COMPILE_TEST
753 depends on HAS_IOMEM
754 help
755 Generic PWM framework driver for the PWFM controller found on NVIDIA
756 Tegra SoCs.
757
758 To compile this driver as a module, choose M here: the module
759 will be called pwm-tegra.
760
761config PWM_TH1520
762 tristate "TH1520 PWM support"
763 depends on ARCH_THEAD || COMPILE_TEST
764 depends on RUST
765 depends on HAS_IOMEM && COMMON_CLK
766 select RUST_PWM_ABSTRACTIONS
767 help
768 This option enables the driver for the PWM controller found on the
769 T-HEAD TH1520 SoC.
770
771 To compile this driver as a module, choose M here; the module
772 will be called pwm-th1520. If you are unsure, say N.
773
774config PWM_TIECAP
775 tristate "ECAP PWM support"
776 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
777 depends on HAS_IOMEM
778 help
779 PWM driver support for the ECAP APWM controller found on TI SOCs
780
781 To compile this driver as a module, choose M here: the module
782 will be called pwm-tiecap.
783
784config PWM_TIEHRPWM
785 tristate "EHRPWM PWM support"
786 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
787 depends on HAS_IOMEM
788 help
789 PWM driver support for the EHRPWM controller found on TI SOCs
790
791 To compile this driver as a module, choose M here: the module
792 will be called pwm-tiehrpwm.
793
794config PWM_TWL
795 tristate "TWL4030/6030 PWM support"
796 depends on TWL4030_CORE
797 help
798 Generic PWM framework driver for TWL4030/6030.
799
800 To compile this driver as a module, choose M here: the module
801 will be called pwm-twl.
802
803config PWM_TWL_LED
804 tristate "TWL4030/6030 PWM support for LED drivers"
805 depends on TWL4030_CORE
806 help
807 Generic PWM framework driver for TWL4030/6030 LED terminals.
808
809 To compile this driver as a module, choose M here: the module
810 will be called pwm-twl-led.
811
812config PWM_VISCONTI
813 tristate "Toshiba Visconti PWM support"
814 depends on ARCH_VISCONTI || COMPILE_TEST
815 help
816 PWM Subsystem driver support for Toshiba Visconti SoCs.
817
818 To compile this driver as a module, choose M here: the module
819 will be called pwm-visconti.
820
821config PWM_VT8500
822 tristate "vt8500 PWM support"
823 depends on ARCH_VT8500 || COMPILE_TEST
824 depends on HAS_IOMEM
825 help
826 Generic PWM framework driver for vt8500.
827
828 To compile this driver as a module, choose M here: the module
829 will be called pwm-vt8500.
830
831config PWM_XILINX
832 tristate "Xilinx AXI Timer PWM support"
833 depends on OF_ADDRESS
834 depends on COMMON_CLK
835 select REGMAP_MMIO
836 help
837 PWM driver for Xilinx LogiCORE IP AXI timers. This timer is
838 typically a soft core which may be present in Xilinx FPGAs.
839 This device may also be present in Microblaze soft processors.
840 If you don't have this IP in your design, choose N.
841
842 To compile this driver as a module, choose M here: the module
843 will be called pwm-xilinx.
844
845 config RUST_PWM_ABSTRACTIONS
846 bool
847 depends on RUST
848 help
849 This option enables the safe Rust abstraction layer for the PWM
850 subsystem. It provides idiomatic wrappers and traits necessary for
851 writing PWM controller drivers in Rust.
852
853 The abstractions handle resource management (like memory and reference
854 counting) and provide safe interfaces to the underlying C core,
855 allowing driver logic to be written in safe Rust.
856
857endif