mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	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>
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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.
 |