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