config DM_PWM
	bool "Enable support for pulse-width modulation devices (PWM)"
	depends on DM
	help
	  A pulse-width modulator emits a pulse of varying width and provides
	  control over the duty cycle (high and low time) of the signal. This
	  is often used to control a voltage level. The more time the PWM
	  spends in the 'high' state, the higher the voltage. The PWM's
	  frequency/period can be controlled along with the proportion of that
	  time that the signal is high.

config PWM_CROS_EC
	bool "Enable support for the Chrome OS EC PWM"
	depends on DM_PWM
	help
	  This PWM is found on several Chrome OS devices and controlled by
	  the Chrome OS embedded controller. It may be used to control the
	  screen brightness and/or the keyboard backlight depending on the
	  device.

config PWM_EXYNOS
	bool "Enable support for the Exynos PWM"
	depends on DM_PWM
	help
	  This PWM is found on Samsung Exynos 5250 and other Samsung SoCs. It
	  supports a programmable period and duty cycle. A 32-bit counter is
	  used. It provides 5 channels which can be independently
	  programmed. Channel 4 (the last) is normally used as a timer.

config PWM_IMX
	bool "Enable support for i.MX27 and later PWM"
	help
	  This PWM is found i.MX27 and later i.MX SoCs.

config PWM_MESON
	bool "Enable support for Amlogic Meson SoCs PWM"
	depends on DM_PWM
	help
	  This PWM is found on Amlogic Meson SoCs. It supports a
	  programmable period and duty cycle for 2 independant channels.

config PWM_MTK
	bool "Enable support for MediaTek PWM"
	depends on DM_PWM
	help
	  This PWM is found on MT7622, MT7623, and MT7629. It supports a
	  programmable period and duty cycle.

config PWM_ROCKCHIP
	bool "Enable support for the Rockchip PWM"
	depends on DM_PWM
	help
	  This PWM is found on RK3288 and other Rockchip SoCs. It supports a
	  programmable period and duty cycle. A 32-bit counter is used.
	  Various options provided in the hardware (such as capture mode and
	  continuous/single-shot) are not supported by the driver.

config PWM_SANDBOX
	bool "Enable support for the sandbox PWM"
	help
	  This is a sandbox PWM used for testing. It provides 3 channels and
	  records the settings passed into it, but otherwise does nothing
	  useful. The PWM can be enabled but is not connected to any outputs
	  so this is not very useful.

config PWM_SIFIVE
	bool "Enable support for SiFive PWM"
	depends on DM_PWM
	help
	  This PWM is found SiFive's FU540 and other SoCs.

config PWM_TEGRA
	bool "Enable support for the Tegra PWM"
	depends on DM_PWM
	help
	  This PWM is found on Tegra 20 and other Nvidia SoCs. It supports
	  four channels with a programmable period and duty cycle. Only a
	  32KHz clock is supported by the driver but the duty cycle is
	  configurable.

config PWM_SUNXI
	bool "Enable support for the Allwinner Sunxi PWM"
	depends on DM_PWM
	help
	  This PWM is found on H3, A64 and other Allwinner SoCs. It supports a
	  programmable period and duty cycle. A 16-bit counter is used.

config PWM_TI_EHRPWM
	bool "Enable support for EHRPWM PWM"
	depends on DM_PWM && ARCH_OMAP2PLUS
	default y
	help
	  PWM driver support for the EHRPWM controller found on TI SOCs.
