| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | menuconfig 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 | |
| 30 | if PWM |
| 31 | |
| 32 | config 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 | |
| 41 | config 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 | |
| 50 | config 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 | |
| 59 | config 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 | |
| 66 | config 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 | |
| 76 | config 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 | |
| 88 | config 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 | |
| 97 | config 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 | |
| 107 | config 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 | |
| 119 | config 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 | |
| 132 | config 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 | |
| 145 | config 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 | |
| 155 | config 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 | |
| 167 | config 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 | |
| 178 | config 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 | |
| 188 | config 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 | |
| 199 | config 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 | |
| 209 | config 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 | |
| 219 | config 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 | |
| 226 | config 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 | |
| 233 | config 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 | |
| 242 | config 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 | |
| 252 | config 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 | |
| 262 | config 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 | |
| 274 | config 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 | |
| 285 | config 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 | |
| 295 | config 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 | |
| 308 | config 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 | |
| 318 | config 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 | |
| 328 | config 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 | |
| 339 | config 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 | |
| 350 | config 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 | |
| 362 | config 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 | |
| 372 | config 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 | |
| 384 | config 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 | |
| 394 | config 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 | |
| 406 | config 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 | |
| 416 | config 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 | |
| 429 | config 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 | |
| 440 | config PWM_LPSS |
| 441 | depends on HAS_IOMEM |
| 442 | tristate |
| 443 | |
| 444 | config 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 | |
| 455 | config 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 | |
| 466 | config 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 | |
| 476 | config 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 | |
| 489 | config 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 | |
| 499 | config 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 | |
| 509 | config 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 | |
| 519 | config 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 | |
| 530 | config 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 | |
| 541 | config 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 | |
| 549 | config 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 | |
| 559 | config 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 | |
| 569 | config 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 | |
| 579 | config 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 | |
| 588 | config 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 | |
| 599 | config 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 | |
| 610 | config 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 | |
| 621 | config 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 | |
| 632 | config 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 | |
| 640 | config 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 | |
| 652 | config 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 | |
| 663 | config 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 | |
| 673 | config 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 | |
| 683 | config 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 | |
| 694 | config 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 | |
| 705 | config 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 | |
| 715 | config 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 | |
| 724 | config 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 | |
| 734 | config 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 | |
| 741 | config 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 | |
| 751 | config 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 | |
| 762 | config 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 | |
| 773 | config 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 | |
| 786 | config 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 | |
| 796 | config 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 | |
| 806 | config 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 | |
| 815 | config 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 | |
| 824 | config 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 | |
| 833 | config 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 | |
| 843 | config 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 | |
| 869 | endif |