pwm: Add a driver for Chrome OS EC PWM
authorAlper Nebi Yasak <alpernebiyasak@gmail.com>
Thu, 22 Oct 2020 20:49:27 +0000 (23:49 +0300)
committerAnatolij Gustschin <agust@denx.de>
Sat, 10 Apr 2021 14:08:39 +0000 (16:08 +0200)
commit1b9ee2882e6bd1c17ab2ec86249aa0347af68242
tree97c0a555eae842b114c8fbbc22e2b1acd48c8773
parentfefa713b1843cf13d3132bfe0cf27710938c5d92
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>
doc/device-tree-bindings/pwm/cros-ec-pwm.txt [new file with mode: 0644]
drivers/misc/cros_ec.c
drivers/pwm/Kconfig
drivers/pwm/Makefile
drivers/pwm/cros_ec_pwm.c [new file with mode: 0644]
include/cros_ec.h