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