projects/linux·blob master · refs

869 lines · 25.3 KiB

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_IPQ
351 tristate "IPQ PWM support"
352 depends on ARCH_QCOM || COMPILE_TEST
353 depends on HAVE_CLK && HAS_IOMEM
354 help
355 Generic PWM framework driver for IPQ PWM block which supports
356 4 pwm channels. Each of the these channels can be configured
357 independent of each other.
358
359 To compile this driver as a module, choose M here: the module
360 will be called pwm-ipq.
361
362config PWM_IQS620A
363 tristate "Azoteq IQS620A PWM support"
364 depends on MFD_IQS62X || COMPILE_TEST
365 help
366 Generic PWM framework driver for the Azoteq IQS620A multi-function
367 sensor.
368
369 To compile this driver as a module, choose M here: the module will
370 be called pwm-iqs620a.
371
372config PWM_JZ4740
373 tristate "Ingenic JZ47xx PWM support"
374 depends on MACH_INGENIC || COMPILE_TEST
375 depends on COMMON_CLK && OF
376 select MFD_SYSCON
377 help
378 Generic PWM framework driver for Ingenic JZ47xx based
379 machines.
380
381 To compile this driver as a module, choose M here: the module
382 will be called pwm-jz4740.
383
384config PWM_KEEMBAY
385 tristate "Intel Keem Bay PWM driver"
386 depends on ARCH_KEEMBAY || COMPILE_TEST
387 depends on COMMON_CLK && HAS_IOMEM
388 help
389 The platform driver for Intel Keem Bay PWM controller.
390
391 To compile this driver as a module, choose M here: the module
392 will be called pwm-keembay.
393
394config PWM_LOONGSON
395 tristate "Loongson PWM support"
396 depends on MACH_LOONGSON64 || COMPILE_TEST
397 depends on COMMON_CLK
398 help
399 Generic PWM framework driver for Loongson family.
400 It can be found on Loongson-2K series cpus and Loongson LS7A
401 bridge chips.
402
403 To compile this driver as a module, choose M here: the module
404 will be called pwm-loongson.
405
406config PWM_LP3943
407 tristate "TI/National Semiconductor LP3943 PWM support"
408 depends on MFD_LP3943
409 help
410 Generic PWM framework driver for LP3943 which supports two PWM
411 channels.
412
413 To compile this driver as a module, choose M here: the module
414 will be called pwm-lp3943.
415
416config PWM_LPC18XX_SCT
417 tristate "LPC18xx/43xx PWM/SCT support"
418 depends on ARCH_LPC18XX || COMPILE_TEST
419 depends on HAS_IOMEM
420 help
421 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
422 supports 16 channels.
423 A maximum of 15 channels can be requested simultaneously and
424 must have the same period.
425
426 To compile this driver as a module, choose M here: the module
427 will be called pwm-lpc18xx-sct.
428
429config PWM_LPC32XX
430 tristate "LPC32XX PWM support"
431 depends on ARCH_LPC32XX || COMPILE_TEST
432 depends on HAS_IOMEM
433 help
434 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
435 PWM controllers.
436
437 To compile this driver as a module, choose M here: the module
438 will be called pwm-lpc32xx.
439
440config PWM_LPSS
441 depends on HAS_IOMEM
442 tristate
443
444config PWM_LPSS_PCI
445 tristate "Intel LPSS PWM PCI driver"
446 depends on X86 || COMPILE_TEST
447 depends on HAS_IOMEM && PCI
448 select PWM_LPSS
449 help
450 The PCI driver for Intel Low Power Subsystem PWM controller.
451
452 To compile this driver as a module, choose M here: the module
453 will be called pwm-lpss-pci.
454
455config PWM_LPSS_PLATFORM
456 tristate "Intel LPSS PWM platform driver"
457 depends on (X86 && ACPI) || COMPILE_TEST
458 depends on HAS_IOMEM
459 select PWM_LPSS
460 help
461 The platform driver for Intel Low Power Subsystem PWM controller.
462
463 To compile this driver as a module, choose M here: the module
464 will be called pwm-lpss-platform.
465
466config PWM_MAX7360
467 tristate "MAX7360 PWMs"
468 depends on MFD_MAX7360
469 help
470 PWM driver for Maxim Integrated MAX7360 multifunction device, with
471 support for up to 8 PWM outputs.
472
473 To compile this driver as a module, choose M here: the module
474 will be called pwm-max7360.
475
476config PWM_MC33XS2410
477 tristate "MC33XS2410 PWM support"
478 depends on OF
479 depends on SPI
480 select AUXILIARY_BUS
481 help
482 NXP MC33XS2410 high-side switch driver. The MC33XS2410 is a four
483 channel high-side switch. The device is operational from 3.0 V
484 to 60 V. The device is controlled by SPI port for configuration.
485
486 To compile this driver as a module, choose M here: the module
487 will be called pwm-mc33xs2410.
488
489config PWM_MEDIATEK
490 tristate "MediaTek PWM support"
491 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
492 depends on HAS_IOMEM
493 help
494 Generic PWM framework driver for Mediatek ARM SoC.
495
496 To compile this driver as a module, choose M here: the module
497 will be called pwm-mediatek.
498
499config PWM_MESON
500 tristate "Amlogic Meson PWM driver"
501 depends on ARCH_MESON || COMPILE_TEST
502 depends on COMMON_CLK && HAS_IOMEM
503 help
504 The platform driver for Amlogic Meson PWM controller.
505
506 To compile this driver as a module, choose M here: the module
507 will be called pwm-meson.
508
509config PWM_MICROCHIP_CORE
510 tristate "Microchip corePWM PWM support"
511 depends on ARCH_MICROCHIP_POLARFIRE || COMPILE_TEST
512 depends on HAS_IOMEM && OF
513 help
514 PWM driver for Microchip FPGA soft IP core.
515
516 To compile this driver as a module, choose M here: the module
517 will be called pwm-microchip-core.
518
519config PWM_MTK_DISP
520 tristate "MediaTek display PWM driver"
521 depends on ARCH_MEDIATEK || COMPILE_TEST
522 depends on HAS_IOMEM
523 help
524 Generic PWM framework driver for MediaTek disp-pwm device.
525 The PWM is used to control the backlight brightness for display.
526
527 To compile this driver as a module, choose M here: the module
528 will be called pwm-mtk-disp.
529
530config PWM_MXS
531 tristate "Freescale MXS PWM support"
532 depends on ARCH_MXS || COMPILE_TEST
533 depends on HAS_IOMEM && OF
534 select STMP_DEVICE
535 help
536 Generic PWM framework driver for Freescale MXS.
537
538 To compile this driver as a module, choose M here: the module
539 will be called pwm-mxs.
540
541config PWM_NTXEC
542 tristate "Netronix embedded controller PWM support"
543 depends on MFD_NTXEC
544 help
545 Say yes here if you want to support the PWM output of the embedded
546 controller found in certain e-book readers designed by the original
547 design manufacturer Netronix.
548
549config PWM_OMAP_DMTIMER
550 tristate "OMAP Dual-Mode Timer PWM support"
551 depends on OF
552 depends on OMAP_DM_TIMER || COMPILE_TEST
553 help
554 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
555
556 To compile this driver as a module, choose M here: the module
557 will be called pwm-omap-dmtimer
558
559config PWM_PCA9685
560 tristate "NXP PCA9685 PWM driver"
561 depends on I2C
562 select REGMAP_I2C
563 help
564 Generic PWM framework driver for NXP PCA9685 LED controller.
565
566 To compile this driver as a module, choose M here: the module
567 will be called pwm-pca9685.
568
569config PWM_PXA
570 tristate "PXA PWM support"
571 depends on ARCH_PXA || ARCH_MMP || ARCH_SPACEMIT || COMPILE_TEST
572 depends on HAS_IOMEM && OF
573 help
574 Generic PWM framework driver for PXA.
575
576 To compile this driver as a module, choose M here: the module
577 will be called pwm-pxa.
578
579config PWM_RASPBERRYPI_POE
580 tristate "Raspberry Pi Firmware PoE Hat PWM support"
581 # Make sure not 'y' when RASPBERRYPI_FIRMWARE is 'm'. This can only
582 # happen when COMPILE_TEST=y, hence the added !RASPBERRYPI_FIRMWARE.
583 depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
584 help
585 Enable Raspberry Pi firmware controller PWM bus used to control the
586 official RPI PoE hat
587
588config PWM_RENESAS_RCAR
589 tristate "Renesas R-Car PWM support"
590 depends on ARCH_RENESAS || COMPILE_TEST
591 depends on HAS_IOMEM
592 help
593 This driver exposes the PWM Timer controller found in Renesas
594 R-Car chips through the PWM API.
595
596 To compile this driver as a module, choose M here: the module
597 will be called pwm-rcar.
598
599config PWM_RENESAS_RZG2L_GPT
600 tristate "Renesas RZ/G2L General PWM Timer support"
601 depends on ARCH_RZG2L || COMPILE_TEST
602 depends on HAS_IOMEM
603 help
604 This driver exposes the General PWM Timer controller found in Renesas
605 RZ/G2L like chips through the PWM API.
606
607 To compile this driver as a module, choose M here: the module
608 will be called pwm-rzg2l-gpt.
609
610config PWM_RENESAS_RZ_MTU3
611 tristate "Renesas RZ/G2L MTU3a PWM Timer support"
612 depends on RZ_MTU3
613 depends on HAS_IOMEM
614 help
615 This driver exposes the MTU3a PWM Timer controller found in Renesas
616 RZ/G2L like chips through the PWM API.
617
618 To compile this driver as a module, choose M here: the module
619 will be called pwm-rz-mtu3.
620
621config PWM_RENESAS_TPU
622 tristate "Renesas TPU PWM support"
623 depends on ARCH_RENESAS || COMPILE_TEST
624 depends on HAS_IOMEM
625 help
626 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
627 in Renesas chips through the PWM API.
628
629 To compile this driver as a module, choose M here: the module
630 will be called pwm-renesas-tpu.
631
632config PWM_ROCKCHIP
633 tristate "Rockchip PWM support"
634 depends on ARCH_ROCKCHIP || COMPILE_TEST
635 depends on HAS_IOMEM
636 help
637 Generic PWM framework driver for the PWM controller found on
638 Rockchip SoCs.
639
640config PWM_SAMSUNG
641 tristate "Samsung PWM support"
642 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
643 depends on HAS_IOMEM
644 help
645 Generic PWM framework driver for Samsung S3C24xx, S3C64xx, S5Pv210
646 and Exynos SoCs.
647 Choose Y here only if you build for such Samsung SoC.
648
649 To compile this driver as a module, choose M here: the module
650 will be called pwm-samsung.
651
652config PWM_SIFIVE
653 tristate "SiFive PWM support"
654 depends on OF
655 depends on COMMON_CLK && HAS_IOMEM
656 depends on ARCH_SIFIVE || COMPILE_TEST
657 help
658 Generic PWM framework driver for SiFive SoCs.
659
660 To compile this driver as a module, choose M here: the module
661 will be called pwm-sifive.
662
663config PWM_SL28CPLD
664 tristate "Kontron sl28cpld PWM support"
665 depends on MFD_SL28CPLD || COMPILE_TEST
666 help
667 Generic PWM framework driver for board management controller
668 found on the Kontron sl28 CPLD.
669
670 To compile this driver as a module, choose M here: the module
671 will be called pwm-sl28cpld.
672
673config PWM_SOPHGO_SG2042
674 tristate "Sophgo SG2042 PWM support"
675 depends on ARCH_SOPHGO || COMPILE_TEST
676 help
677 PWM driver for the PWM controller on Sophgo SG2042 SoC. The PWM
678 controller supports outputing 4 channels of PWM waveforms.
679
680 To compile this driver as a module, choose M here: the module
681 will be called pwm_sophgo_sg2042.
682
683config PWM_SPEAR
684 tristate "STMicroelectronics SPEAr PWM support"
685 depends on PLAT_SPEAR || COMPILE_TEST
686 depends on HAS_IOMEM && OF
687 help
688 Generic PWM framework driver for the PWM controller on ST
689 SPEAr SoCs.
690
691 To compile this driver as a module, choose M here: the module
692 will be called pwm-spear.
693
694config PWM_SPRD
695 tristate "Spreadtrum PWM support"
696 depends on ARCH_SPRD || COMPILE_TEST
697 depends on HAS_IOMEM
698 help
699 Generic PWM framework driver for the PWM controller on
700 Spreadtrum SoCs.
701
702 To compile this driver as a module, choose M here: the module
703 will be called pwm-sprd.
704
705config PWM_STI
706 tristate "STiH4xx PWM support"
707 depends on ARCH_STI || COMPILE_TEST
708 depends on HAS_IOMEM && OF
709 help
710 Generic PWM framework driver for STiH4xx SoCs.
711
712 To compile this driver as a module, choose M here: the module
713 will be called pwm-sti.
714
715config PWM_STM32
716 tristate "STMicroelectronics STM32 PWM"
717 depends on MFD_STM32_TIMERS || COMPILE_TEST
718 help
719 Generic PWM framework driver for STM32 SoCs.
720
721 To compile this driver as a module, choose M here: the module
722 will be called pwm-stm32.
723
724config PWM_STM32_LP
725 tristate "STMicroelectronics STM32 PWM LP"
726 depends on MFD_STM32_LPTIMER || COMPILE_TEST
727 help
728 Generic PWM framework driver for STMicroelectronics STM32 SoCs
729 with Low-Power Timer (LPTIM).
730
731 To compile this driver as a module, choose M here: the module
732 will be called pwm-stm32-lp.
733
734config PWM_STMPE
735 tristate "STMPE expander PWM export"
736 depends on MFD_STMPE
737 help
738 This enables support for the PWMs found in the STMPE I/O
739 expanders.
740
741config PWM_SUN4I
742 tristate "Allwinner PWM support"
743 depends on ARCH_SUNXI || COMPILE_TEST
744 depends on HAS_IOMEM && COMMON_CLK
745 help
746 Generic PWM framework driver for Allwinner SoCs.
747
748 To compile this driver as a module, choose M here: the module
749 will be called pwm-sun4i.
750
751config PWM_SUNPLUS
752 tristate "Sunplus PWM support"
753 depends on ARCH_SUNPLUS || COMPILE_TEST
754 depends on HAS_IOMEM && OF
755 help
756 Generic PWM framework driver for the PWM controller on
757 Sunplus SoCs.
758
759 To compile this driver as a module, choose M here: the module
760 will be called pwm-sunplus.
761
762config PWM_TEGRA
763 tristate "NVIDIA Tegra PWM support"
764 depends on ARCH_TEGRA || COMPILE_TEST
765 depends on HAS_IOMEM
766 help
767 Generic PWM framework driver for the PWFM controller found on NVIDIA
768 Tegra SoCs.
769
770 To compile this driver as a module, choose M here: the module
771 will be called pwm-tegra.
772
773config PWM_TH1520
774 tristate "TH1520 PWM support"
775 depends on ARCH_THEAD || COMPILE_TEST
776 depends on RUST
777 depends on HAS_IOMEM && COMMON_CLK
778 select RUST_PWM_ABSTRACTIONS
779 help
780 This option enables the driver for the PWM controller found on the
781 T-HEAD TH1520 SoC.
782
783 To compile this driver as a module, choose M here; the module
784 will be called pwm-th1520. If you are unsure, say N.
785
786config PWM_TIECAP
787 tristate "ECAP PWM support"
788 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
789 depends on HAS_IOMEM
790 help
791 PWM driver support for the ECAP APWM controller found on TI SOCs
792
793 To compile this driver as a module, choose M here: the module
794 will be called pwm-tiecap.
795
796config PWM_TIEHRPWM
797 tristate "EHRPWM PWM support"
798 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
799 depends on HAS_IOMEM
800 help
801 PWM driver support for the EHRPWM controller found on TI SOCs
802
803 To compile this driver as a module, choose M here: the module
804 will be called pwm-tiehrpwm.
805
806config PWM_TWL
807 tristate "TWL4030/6030 PWM support"
808 depends on TWL4030_CORE
809 help
810 Generic PWM framework driver for TWL4030/6030.
811
812 To compile this driver as a module, choose M here: the module
813 will be called pwm-twl.
814
815config PWM_TWL_LED
816 tristate "TWL4030/6030 PWM support for LED drivers"
817 depends on TWL4030_CORE
818 help
819 Generic PWM framework driver for TWL4030/6030 LED terminals.
820
821 To compile this driver as a module, choose M here: the module
822 will be called pwm-twl-led.
823
824config PWM_VISCONTI
825 tristate "Toshiba Visconti PWM support"
826 depends on ARCH_VISCONTI || COMPILE_TEST
827 help
828 PWM Subsystem driver support for Toshiba Visconti SoCs.
829
830 To compile this driver as a module, choose M here: the module
831 will be called pwm-visconti.
832
833config PWM_VT8500
834 tristate "vt8500 PWM support"
835 depends on ARCH_VT8500 || COMPILE_TEST
836 depends on HAS_IOMEM
837 help
838 Generic PWM framework driver for vt8500.
839
840 To compile this driver as a module, choose M here: the module
841 will be called pwm-vt8500.
842
843config PWM_XILINX
844 tristate "Xilinx AXI Timer PWM support"
845 depends on OF_ADDRESS
846 depends on COMMON_CLK
847 select REGMAP_MMIO
848 help
849 PWM driver for Xilinx LogiCORE IP AXI timers. This timer is
850 typically a soft core which may be present in Xilinx FPGAs.
851 This device may also be present in Microblaze soft processors.
852 If you don't have this IP in your design, choose N.
853
854 To compile this driver as a module, choose M here: the module
855 will be called pwm-xilinx.
856
857 config RUST_PWM_ABSTRACTIONS
858 bool
859 depends on RUST
860 help
861 This option enables the safe Rust abstraction layer for the PWM
862 subsystem. It provides idiomatic wrappers and traits necessary for
863 writing PWM controller drivers in Rust.
864
865 The abstractions handle resource management (like memory and reference
866 counting) and provide safe interfaces to the underlying C core,
867 allowing driver logic to be written in safe Rust.
868
869endif