]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.14.109/pwm-backlight-enable-disable-the-pwm-before-after-lcd-enable-toggle.patch
Linux 4.14.109
[thirdparty/kernel/stable-queue.git] / releases / 4.14.109 / pwm-backlight-enable-disable-the-pwm-before-after-lcd-enable-toggle.patch
1 From 5fb5caee92ba35a4a3baa61d45a78eb057e2c031 Mon Sep 17 00:00:00 2001
2 From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
3 Date: Wed, 28 Mar 2018 19:03:23 +0200
4 Subject: pwm-backlight: Enable/disable the PWM before/after LCD enable toggle.
5
6 From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
7
8 commit 5fb5caee92ba35a4a3baa61d45a78eb057e2c031 upstream.
9
10 Before this patch the enable signal was set before the PWM signal and
11 vice-versa on power off. This sequence is wrong, at least, it is on
12 the different panels datasheets that I checked, so I inverted the sequence
13 to follow the specs.
14
15 For reference the following panels have the mentioned sequence:
16 - N133HSE-EA1 (Innolux)
17 - N116BGE (Innolux)
18 - N156BGE-L21 (Innolux)
19 - B101EAN0 (Auo)
20 - B101AW03 (Auo)
21 - LTN101NT05 (Samsung)
22 - CLAA101WA01A (Chunghwa)
23
24 Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
25 Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
26 Acked-by: Jingoo Han <jingoohan1@gmail.com>
27 Acked-by: Thierry Reding <thierry.reding@gmail.com>
28 Signed-off-by: Lee Jones <lee.jones@linaro.org>
29 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
30 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31
32 ---
33 drivers/video/backlight/pwm_bl.c | 9 +++++----
34 1 file changed, 5 insertions(+), 4 deletions(-)
35
36 --- a/drivers/video/backlight/pwm_bl.c
37 +++ b/drivers/video/backlight/pwm_bl.c
38 @@ -54,10 +54,11 @@ static void pwm_backlight_power_on(struc
39 if (err < 0)
40 dev_err(pb->dev, "failed to enable power supply\n");
41
42 + pwm_enable(pb->pwm);
43 +
44 if (pb->enable_gpio)
45 gpiod_set_value_cansleep(pb->enable_gpio, 1);
46
47 - pwm_enable(pb->pwm);
48 pb->enabled = true;
49 }
50
51 @@ -66,12 +67,12 @@ static void pwm_backlight_power_off(stru
52 if (!pb->enabled)
53 return;
54
55 - pwm_config(pb->pwm, 0, pb->period);
56 - pwm_disable(pb->pwm);
57 -
58 if (pb->enable_gpio)
59 gpiod_set_value_cansleep(pb->enable_gpio, 0);
60
61 + pwm_config(pb->pwm, 0, pb->period);
62 + pwm_disable(pb->pwm);
63 +
64 regulator_disable(pb->power_supply);
65 pb->enabled = false;
66 }