xref: /linux/drivers/pwm/Kconfig (revision a919610db43b34621d0c3b333e12db9002caf5da)
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
858