xref: /OK3568_Linux_fs/u-boot/drivers/video/exynos/exynos_pwm_bl.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * PWM BACKLIGHT driver for Board based on EXYNOS.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Author: Donghwa Lee  <dh09.lee@samsung.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Derived from linux/drivers/video/backlight/pwm_backlight.c
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include <common.h>
12*4882a593Smuzhiyun #include <pwm.h>
13*4882a593Smuzhiyun #include <linux/types.h>
14*4882a593Smuzhiyun #include <asm/io.h>
15*4882a593Smuzhiyun #include <asm/arch/cpu.h>
16*4882a593Smuzhiyun #include <asm/arch/gpio.h>
17*4882a593Smuzhiyun #include <asm/arch/pwm.h>
18*4882a593Smuzhiyun #include <asm/arch/pwm_backlight.h>
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun static struct pwm_backlight_data *pwm;
21*4882a593Smuzhiyun 
exynos_pwm_backlight_update_status(void)22*4882a593Smuzhiyun static int exynos_pwm_backlight_update_status(void)
23*4882a593Smuzhiyun {
24*4882a593Smuzhiyun 	int brightness = pwm->brightness;
25*4882a593Smuzhiyun 	int max = pwm->max_brightness;
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun 	if (brightness == 0) {
28*4882a593Smuzhiyun 		pwm_config(pwm->pwm_id, 0, pwm->period);
29*4882a593Smuzhiyun 		pwm_disable(pwm->pwm_id);
30*4882a593Smuzhiyun 	} else {
31*4882a593Smuzhiyun 		pwm_config(pwm->pwm_id,
32*4882a593Smuzhiyun 			brightness * pwm->period / max, pwm->period);
33*4882a593Smuzhiyun 		pwm_enable(pwm->pwm_id);
34*4882a593Smuzhiyun 	}
35*4882a593Smuzhiyun 	return 0;
36*4882a593Smuzhiyun }
37*4882a593Smuzhiyun 
exynos_pwm_backlight_init(struct pwm_backlight_data * pd)38*4882a593Smuzhiyun int exynos_pwm_backlight_init(struct pwm_backlight_data *pd)
39*4882a593Smuzhiyun {
40*4882a593Smuzhiyun 	pwm = pd;
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun 	exynos_pwm_backlight_update_status();
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 	return 0;
45*4882a593Smuzhiyun }
46