pwm: Add DesignWare PWM Controller Driver
[linux-block.git] / drivers / pwm / Kconfig
CommitLineData
ec8f24b7 1# SPDX-License-Identifier: GPL-2.0-only
0c2498f1 2menuconfig PWM
b817bf5c 3 bool "Pulse-Width Modulation (PWM) Support"
0c2498f1 4 help
b817bf5c 5 Generic Pulse-Width Modulation (PWM) support.
0c2498f1 6
b817bf5c
TR
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.
0c2498f1
SH
29
30if PWM
31
76abbdde
HS
32config PWM_SYSFS
33 bool
34 default y if SYSFS
35
3ad1f3a3
UKK
36config PWM_DEBUG
37 bool "PWM lowlevel drivers additional checks and debug messages"
38 depends on DEBUG_KERNEL
39 help
40 This option enables some additional checks to help lowlevel driver
41 authors to get their callbacks implemented correctly.
42 It is expected to introduce some runtime overhead and diagnostic
43 output to the kernel log, so only enable while working on a driver.
44
6173f8f4
TR
45config PWM_AB8500
46 tristate "AB8500 PWM support"
47 depends on AB8500_CORE && ARCH_U8500
48 help
49 Generic PWM framework driver for Analog Baseband AB8500.
50
51 To compile this driver as a module, choose M here: the module
52 will be called pwm-ab8500.
53
32b16d46
BS
54config PWM_ATMEL
55 tristate "Atmel PWM support"
e96c0ff4
KK
56 depends on OF
57 depends on ARCH_AT91 || COMPILE_TEST
32b16d46
BS
58 help
59 Generic PWM framework driver for Atmel SoC.
60
61 To compile this driver as a module, choose M here: the module
62 will be called pwm-atmel.
63
2b4984be
BB
64config PWM_ATMEL_HLCDC_PWM
65 tristate "Atmel HLCDC PWM support"
66 depends on MFD_ATMEL_HLCDC
d2048c49 67 depends on HAVE_CLK
2b4984be
BB
68 help
69 Generic PWM framework driver for the PWM output of the HLCDC
70 (Atmel High-end LCD Controller). This PWM output is mainly used
71 to control the LCD backlight.
72
73 To compile this driver as a module, choose M here: the module
74 will be called pwm-atmel-hlcdc.
75
9421bade 76config PWM_ATMEL_TCB
b133d2a1 77 tristate "Atmel TC Block PWM support"
061f8572
AB
78 depends on OF
79 select REGMAP_MMIO
9421bade
BB
80 help
81 Generic PWM framework driver for Atmel Timer Counter Block.
82
83 A Timer Counter Block provides 6 PWM devices grouped by 2.
84 Devices in a given group must have the same period.
85
86 To compile this driver as a module, choose M here: the module
87 will be called pwm-atmel-tcb.
88
daa5abc4
YRDR
89config PWM_BCM_IPROC
90 tristate "iProc PWM support"
5bf22ff3
SB
91 depends on ARCH_BCM_IPROC || COMPILE_TEST
92 depends on COMMON_CLK
93 default ARCH_BCM_IPROC
daa5abc4
YRDR
94 help
95 Generic PWM framework driver for Broadcom iProc PWM block. This
96 block is used in Broadcom iProc SoC's.
97
98 To compile this driver as a module, choose M here: the module
99 will be called pwm-bcm-iproc.
100
6a4e4bff
TK
101config PWM_BCM_KONA
102 tristate "Kona PWM support"
88a053d2
CP
103 depends on ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS || COMPILE_TEST
104 depends on HAVE_CLK && HAS_IOMEM
105 default ARCH_BCM_MOBILE || ARCH_BCM_CYGNUS
6a4e4bff
TK
106 help
107 Generic PWM framework driver for Broadcom Kona PWM block.
108
109 To compile this driver as a module, choose M here: the module
110 will be called pwm-bcm-kona.
111
e5a06dc5
BT
112config PWM_BCM2835
113 tristate "BCM2835 PWM support"
e96c0ff4 114 depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
e5a06dc5
BT
115 help
116 PWM framework driver for BCM2835 controller (Raspberry Pi)
117
118 To compile this driver as a module, choose M here: the module
119 will be called pwm-bcm2835.
120
59d5c8b1
AT
121config PWM_BERLIN
122 tristate "Marvell Berlin PWM support"
e96c0ff4 123 depends on ARCH_BERLIN || COMPILE_TEST
59d5c8b1
AT
124 help
125 PWM framework driver for Marvell Berlin SoCs.
126
127 To compile this driver as a module, choose M here: the module
128 will be called pwm-berlin.
129
3a9f5957
FF
130config PWM_BRCMSTB
131 tristate "Broadcom STB PWM support"
e96c0ff4 132 depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
3a9f5957
FF
133 help
134 Generic PWM framework driver for the Broadcom Set-top-Box
135 SoCs (BCM7xxx).
136
137 To compile this driver as a module, choose M Here: the module
138 will be called pwm-brcmstb.c.
139
7eb3f6ff
AS
140config PWM_CLPS711X
141 tristate "CLPS711X PWM support"
142 depends on ARCH_CLPS711X || COMPILE_TEST
dec02f98 143 depends on HAS_IOMEM
7eb3f6ff
AS
144 help
145 Generic PWM framework driver for Cirrus Logic CLPS711X.
146
147 To compile this driver as a module, choose M here: the module
148 will be called pwm-clps711x.
149
a3f37a10
SK
150config PWM_CRC
151 bool "Intel Crystalcove (CRC) PWM support"
152 depends on X86 && INTEL_SOC_PMIC
153 help
154 Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
155 control.
156
1f0d3bb0
BN
157config PWM_CROS_EC
158 tristate "ChromeOS EC PWM driver"
47f11e0b 159 depends on CROS_EC
1f0d3bb0
BN
160 help
161 PWM driver for exposing a PWM attached to the ChromeOS Embedded
162 Controller.
163
1ed2b3fc
JN
164config PWM_DWC
165 tristate "DesignWare PWM Controller"
166 depends on PCI
167 help
168 PWM driver for Synopsys DWC PWM Controller attached to a PCI bus.
169
170 To compile this driver as a module, choose M here: the module
171 will be called pwm-dwc.
172
a2308698
HS
173config PWM_EP93XX
174 tristate "Cirrus Logic EP93xx PWM support"
e96c0ff4 175 depends on ARCH_EP93XX || COMPILE_TEST
a2308698
HS
176 help
177 Generic PWM framework driver for Cirrus Logic EP93xx.
178
179 To compile this driver as a module, choose M here: the module
180 will be called pwm-ep93xx.
181
b505183b
XL
182config PWM_FSL_FTM
183 tristate "Freescale FlexTimer Module (FTM) PWM support"
36d5be4b 184 depends on HAS_IOMEM
b505183b 185 depends on OF
00018a8a 186 select REGMAP_MMIO
b505183b
XL
187 help
188 Generic FTM PWM framework driver for Freescale VF610 and
189 Layerscape LS-1 SoCs.
190
191 To compile this driver as a module, choose M here: the module
192 will be called pwm-fsl-ftm.
193
d09f0081 194config PWM_HIBVT
195 tristate "HiSilicon BVT PWM support"
196 depends on ARCH_HISI || COMPILE_TEST
197 help
198 Generic PWM framework driver for HiSilicon BVT SoCs.
199
200 To compile this driver as a module, choose M here: the module
201 will be called pwm-hibvt.
202
277bb6a2
NT
203config PWM_IMG
204 tristate "Imagination Technologies PWM driver"
205 depends on HAS_IOMEM
206 depends on MFD_SYSCON
207 depends on COMMON_CLK
208 depends on MIPS || COMPILE_TEST
209 help
210 Generic PWM framework driver for Imagination Technologies
211 PWM block which supports 4 channels.
212
213 To compile this driver as a module, choose M here: the module
214 will be called pwm-img
215
d80f8206
UKK
216config PWM_IMX1
217 tristate "i.MX1 PWM support"
e96c0ff4 218 depends on ARCH_MXC || COMPILE_TEST
29693248 219 help
d80f8206 220 Generic PWM framework driver for i.MX1 and i.MX21
29693248
SH
221
222 To compile this driver as a module, choose M here: the module
d80f8206
UKK
223 will be called pwm-imx1.
224
225config PWM_IMX27
226 tristate "i.MX27 PWM support"
e96c0ff4 227 depends on ARCH_MXC || COMPILE_TEST
d80f8206
UKK
228 help
229 Generic PWM framework driver for i.MX27 and later i.MX SoCs.
230
231 To compile this driver as a module, choose M here: the module
232 will be called pwm-imx27.
29693248 233
738a1cfe
AH
234config PWM_IMX_TPM
235 tristate "i.MX TPM PWM support"
236 depends on ARCH_MXC || COMPILE_TEST
237 depends on HAVE_CLK && HAS_IOMEM
238 help
239 Generic PWM framework driver for i.MX7ULP TPM module, TPM's full
240 name is Low Power Timer/Pulse Width Modulation Module.
241
242 To compile this driver as a module, choose M here: the module
243 will be called pwm-imx-tpm.
244
6f0841a8
JL
245config PWM_IQS620A
246 tristate "Azoteq IQS620A PWM support"
247 depends on MFD_IQS62X || COMPILE_TEST
248 help
249 Generic PWM framework driver for the Azoteq IQS620A multi-function
250 sensor.
251
252 To compile this driver as a module, choose M here: the module will
253 be called pwm-iqs620a.
254
f6b8a570 255config PWM_JZ4740
b4190062 256 tristate "Ingenic JZ47xx PWM support"
b48d49e0 257 depends on MIPS
ce1f9cec 258 depends on COMMON_CLK
c2693514 259 select MFD_SYSCON
f6b8a570 260 help
b4190062 261 Generic PWM framework driver for Ingenic JZ47xx based
f6b8a570
TR
262 machines.
263
264 To compile this driver as a module, choose M here: the module
265 will be called pwm-jz4740.
266
bd899ceb
VA
267config PWM_KEEMBAY
268 tristate "Intel Keem Bay PWM driver"
269 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
270 help
271 The platform driver for Intel Keem Bay PWM controller.
272
273 To compile this driver as a module, choose M here: the module
274 will be called pwm-keembay.
275
af66b3c0
MK
276config PWM_LP3943
277 tristate "TI/National Semiconductor LP3943 PWM support"
278 depends on MFD_LP3943
279 help
280 Generic PWM framework driver for LP3943 which supports two PWM
281 channels.
282
283 To compile this driver as a module, choose M here: the module
284 will be called pwm-lp3943.
285
841e6f90
AA
286config PWM_LPC18XX_SCT
287 tristate "LPC18xx/43xx PWM/SCT support"
e96c0ff4 288 depends on ARCH_LPC18XX || COMPILE_TEST
841e6f90
AA
289 help
290 Generic PWM framework driver for NXP LPC18xx PWM/SCT which
291 supports 16 channels.
292 A maximum of 15 channels can be requested simultaneously and
293 must have the same period.
294
295 To compile this driver as a module, choose M here: the module
296 will be called pwm-lpc18xx-sct.
297
2132fa8d
APS
298config PWM_LPC32XX
299 tristate "LPC32XX PWM support"
e96c0ff4 300 depends on ARCH_LPC32XX || COMPILE_TEST
2132fa8d
APS
301 help
302 Generic PWM framework driver for LPC32XX. The LPC32XX SOC has two
303 PWM controllers.
304
305 To compile this driver as a module, choose M here: the module
306 will be called pwm-lpc32xx.
307
d16a5aa9 308config PWM_LPSS
6f90a00c 309 tristate
d16a5aa9 310
c558e39e
AS
311config PWM_LPSS_PCI
312 tristate "Intel LPSS PWM PCI driver"
6f90a00c
AS
313 depends on X86 && PCI
314 select PWM_LPSS
c558e39e
AS
315 help
316 The PCI driver for Intel Low Power Subsystem PWM controller.
317
318 To compile this driver as a module, choose M here: the module
319 will be called pwm-lpss-pci.
320
321config PWM_LPSS_PLATFORM
322 tristate "Intel LPSS PWM platform driver"
6f90a00c
AS
323 depends on X86 && ACPI
324 select PWM_LPSS
c558e39e
AS
325 help
326 The platform driver for Intel Low Power Subsystem PWM controller.
327
328 To compile this driver as a module, choose M here: the module
329 will be called pwm-lpss-platform.
330
211ed630
NA
331config PWM_MESON
332 tristate "Amlogic Meson PWM driver"
e96c0ff4
KK
333 depends on ARCH_MESON || COMPILE_TEST
334 depends on COMMON_CLK
211ed630
NA
335 help
336 The platform driver for Amlogic Meson PWM controller.
337
338 To compile this driver as a module, choose M here: the module
339 will be called pwm-meson.
340
7e3b7dc7
YH
341config PWM_MTK_DISP
342 tristate "MediaTek display PWM driver"
343 depends on ARCH_MEDIATEK || COMPILE_TEST
344 depends on HAS_IOMEM
345 help
346 Generic PWM framework driver for MediaTek disp-pwm device.
347 The PWM is used to control the backlight brightness for display.
348
349 To compile this driver as a module, choose M here: the module
350 will be called pwm-mtk-disp.
351
caf065f8
JC
352config PWM_MEDIATEK
353 tristate "MediaTek PWM support"
8cdc43af 354 depends on ARCH_MEDIATEK || RALINK || COMPILE_TEST
caf065f8
JC
355 help
356 Generic PWM framework driver for Mediatek ARM SoC.
357
358 To compile this driver as a module, choose M here: the module
aa12d7a7 359 will be called pwm-mediatek.
caf065f8 360
4dce82c1
SG
361config PWM_MXS
362 tristate "Freescale MXS PWM support"
e96c0ff4
KK
363 depends on OF
364 depends on ARCH_MXS || COMPILE_TEST
01bf32e9 365 select STMP_DEVICE
4dce82c1
SG
366 help
367 Generic PWM framework driver for Freescale MXS.
368
369 To compile this driver as a module, choose M here: the module
370 will be called pwm-mxs.
371
6604c655
NA
372config PWM_OMAP_DMTIMER
373 tristate "OMAP Dual-Mode Timer PWM support"
9f2919e9
UKK
374 depends on OF
375 depends on OMAP_DM_TIMER || COMPILE_TEST
6604c655
NA
376 help
377 Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
378
379 To compile this driver as a module, choose M here: the module
380 will be called pwm-omap-dmtimer
381
88b613e6
ST
382config PWM_PCA9685
383 tristate "NXP PCA9685 PWM driver"
912b8439 384 depends on I2C
2c80a492 385 select REGMAP_I2C
88b613e6
ST
386 help
387 Generic PWM framework driver for NXP PCA9685 LED controller.
388
389 To compile this driver as a module, choose M here: the module
390 will be called pwm-pca9685.
391
17b2b478
TR
392config PWM_PXA
393 tristate "PXA PWM support"
e96c0ff4 394 depends on ARCH_PXA || COMPILE_TEST
17b2b478
TR
395 help
396 Generic PWM framework driver for PXA.
397
398 To compile this driver as a module, choose M here: the module
399 will be called pwm-pxa.
400
ed6c1476
YS
401config PWM_RCAR
402 tristate "Renesas R-Car PWM support"
48169988 403 depends on ARCH_RENESAS || COMPILE_TEST
ed6c1476
YS
404 depends on HAS_IOMEM
405 help
406 This driver exposes the PWM Timer controller found in Renesas
407 R-Car chips through the PWM API.
408
409 To compile this driver as a module, choose M here: the module
410 will be called pwm-rcar.
411
99b82abb
LP
412config PWM_RENESAS_TPU
413 tristate "Renesas TPU PWM support"
03d99531 414 depends on ARCH_RENESAS || COMPILE_TEST
2974b098 415 depends on HAS_IOMEM
99b82abb
LP
416 help
417 This driver exposes the Timer Pulse Unit (TPU) PWM controller found
418 in Renesas chips through the PWM API.
419
420 To compile this driver as a module, choose M here: the module
421 will be called pwm-renesas-tpu.
422
101353c8
BG
423config PWM_ROCKCHIP
424 tristate "Rockchip PWM support"
e96c0ff4 425 depends on ARCH_ROCKCHIP || COMPILE_TEST
101353c8
BG
426 help
427 Generic PWM framework driver for the PWM controller found on
428 Rockchip SoCs.
429
215c29d3 430config PWM_SAMSUNG
b133d2a1 431 tristate "Samsung PWM support"
db8230d2 432 depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
215c29d3
SH
433 help
434 Generic PWM framework driver for Samsung.
435
436 To compile this driver as a module, choose M here: the module
437 will be called pwm-samsung.
438
9e37a53e
YS
439config PWM_SIFIVE
440 tristate "SiFive PWM support"
441 depends on OF
442 depends on COMMON_CLK
443 depends on RISCV || COMPILE_TEST
444 help
445 Generic PWM framework driver for SiFive SoCs.
446
447 To compile this driver as a module, choose M here: the module
448 will be called pwm-sifive.
449
9db33d22
MW
450config PWM_SL28CPLD
451 tristate "Kontron sl28cpld PWM support"
452 depends on MFD_SL28CPLD || COMPILE_TEST
453 help
454 Generic PWM framework driver for board management controller
455 found on the Kontron sl28 CPLD.
456
457 To compile this driver as a module, choose M here: the module
458 will be called pwm-sl28cpld.
459
ce20364b
SH
460config PWM_SPEAR
461 tristate "STMicroelectronics SPEAr PWM support"
e96c0ff4 462 depends on PLAT_SPEAR || COMPILE_TEST
ce20364b
SH
463 depends on OF
464 help
465 Generic PWM framework driver for the PWM controller on ST
466 SPEAr SoCs.
467
468 To compile this driver as a module, choose M here: the module
469 will be called pwm-spear.
470
8aae4b02
BW
471config PWM_SPRD
472 tristate "Spreadtrum PWM support"
473 depends on ARCH_SPRD || COMPILE_TEST
474 depends on HAS_IOMEM
475 help
476 Generic PWM framework driver for the PWM controller on
477 Spreadtrum SoCs.
478
479 To compile this driver as a module, choose M here: the module
480 will be called pwm-sprd.
481
378fe115
LJ
482config PWM_STI
483 tristate "STiH4xx PWM support"
e96c0ff4 484 depends on ARCH_STI || COMPILE_TEST
378fe115
LJ
485 depends on OF
486 help
487 Generic PWM framework driver for STiH4xx SoCs.
488
489 To compile this driver as a module, choose M here: the module
490 will be called pwm-sti.
491
7edf7369
BG
492config PWM_STM32
493 tristate "STMicroelectronics STM32 PWM"
e96c0ff4 494 depends on MFD_STM32_TIMERS || COMPILE_TEST
7edf7369
BG
495 help
496 Generic PWM framework driver for STM32 SoCs.
497
498 To compile this driver as a module, choose M here: the module
499 will be called pwm-stm32.
500
e70a540b
FG
501config PWM_STM32_LP
502 tristate "STMicroelectronics STM32 PWM LP"
503 depends on MFD_STM32_LPTIMER || COMPILE_TEST
504 help
505 Generic PWM framework driver for STMicroelectronics STM32 SoCs
506 with Low-Power Timer (LPTIM).
507
508 To compile this driver as a module, choose M here: the module
509 will be called pwm-stm32-lp.
510
ef1f09ec
LW
511config PWM_STMPE
512 bool "STMPE expander PWM export"
513 depends on MFD_STMPE
514 help
515 This enables support for the PWMs found in the STMPE I/O
516 expanders.
517
09853ce7
AB
518config PWM_SUN4I
519 tristate "Allwinner PWM support"
520 depends on ARCH_SUNXI || COMPILE_TEST
521 depends on HAS_IOMEM && COMMON_CLK
522 help
523 Generic PWM framework driver for Allwinner SoCs.
524
525 To compile this driver as a module, choose M here: the module
526 will be called pwm-sun4i.
527
0134b932
TR
528config PWM_TEGRA
529 tristate "NVIDIA Tegra PWM support"
e96c0ff4 530 depends on ARCH_TEGRA || COMPILE_TEST
0134b932
TR
531 help
532 Generic PWM framework driver for the PWFM controller found on NVIDIA
533 Tegra SoCs.
534
535 To compile this driver as a module, choose M here: the module
536 will be called pwm-tegra.
537
f24e5641 538config PWM_TIECAP
8e0cb05b 539 tristate "ECAP PWM support"
e96c0ff4 540 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
8e0cb05b 541 help
6f37709f 542 PWM driver support for the ECAP APWM controller found on TI SOCs
8e0cb05b
PA
543
544 To compile this driver as a module, choose M here: the module
545 will be called pwm-tiecap.
546
f24e5641 547config PWM_TIEHRPWM
19891b20 548 tristate "EHRPWM PWM support"
e96c0ff4 549 depends on ARCH_OMAP2PLUS || ARCH_DAVINCI_DA8XX || ARCH_K3 || COMPILE_TEST
19891b20 550 help
efc80fb3 551 PWM driver support for the EHRPWM controller found on TI SOCs
19891b20
PA
552
553 To compile this driver as a module, choose M here: the module
554 will be called pwm-tiehrpwm.
555
3744c263
PU
556config PWM_TWL
557 tristate "TWL4030/6030 PWM support"
558 depends on TWL4030_CORE
559 help
560 Generic PWM framework driver for TWL4030/6030.
561
562 To compile this driver as a module, choose M here: the module
563 will be called pwm-twl.
564
aa765647
PU
565config PWM_TWL_LED
566 tristate "TWL4030/6030 PWM support for LED drivers"
567 depends on TWL4030_CORE
568 help
569 Generic PWM framework driver for TWL4030/6030 LED terminals.
570
571 To compile this driver as a module, choose M here: the module
572 will be called pwm-twl-led.
573
a245cceb 574config PWM_VT8500
b133d2a1 575 tristate "vt8500 PWM support"
e96c0ff4 576 depends on ARCH_VT8500 || COMPILE_TEST
a245cceb
SH
577 help
578 Generic PWM framework driver for vt8500.
579
580 To compile this driver as a module, choose M here: the module
581 will be called pwm-vt8500.
582
4836193c
SG
583config PWM_ZX
584 tristate "ZTE ZX PWM support"
e96c0ff4 585 depends on ARCH_ZX || COMPILE_TEST
4836193c
SG
586 help
587 Generic PWM framework driver for ZTE ZX family SoCs.
588
589 To compile this driver as a module, choose M here: the module
590 will be called pwm-zx.
591
0c2498f1 592endif