u-boot/drivers/pwm/Kconfig
Alper Nebi Yasak 1b9ee2882e pwm: Add a driver for Chrome OS EC PWM
This PWM is used in rk3399-gru-bob and rk3399-gru-kevin to control
the display brightness. We can only change the duty cycle, so on
set_config() we just try to match the duty cycle that dividing duty_ns
by period_ns gives us. To disable, we set the duty cycle to zero while
keeping the old value for when we want to re-enable it.

The cros_ec_set_pwm_duty() function is taken from Depthcharge's
cros_ec_set_bl_pwm_duty() but modified to use the generic pwm type.
The driver itself is very loosely based on rk_pwm.c for the general pwm
driver structure.

The devicetree binding file is from Linux, before it was converted to
YAML at 5df5a577a6b4 ("dt-bindings: pwm: Convert google,cros-ec-pwm.txt
to YAML format") in their repo.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-04-10 16:08:39 +02:00

93 lines
3.1 KiB
Text

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.