aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch88
1 files changed, 0 insertions, 88 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch b/target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch
deleted file mode 100644
index d016cdaa43..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0930-backlight-gpio-Explicitly-set-the-direction-of-the-G.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From aa455fdc2495cb05b65cc03cc472de43df632c5c Mon Sep 17 00:00:00 2001
-From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
-Date: Tue, 22 Oct 2019 10:36:24 +0200
-Subject: [PATCH] backlight: gpio: Explicitly set the direction of
- the GPIO
-
-commit 706dc68102bc7421a9e6573d149ab6d769d71cc7 upstream.
-
-The GPIO backlight driver currently requests the line 'as is', without
-acively setting its direction. This can lead to problems: if the line
-is in input mode by default, we won't be able to drive it later when
-updating the status and also reading its initial value doesn't make
-sense for backlight setting.
-
-Request the line 'as is' initially, so that we can read its value
-without affecting it but then change the direction to output explicitly
-when setting the initial brightness.
-
-Also: check the current direction and only read the value if it's output.
-
-Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
-Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
-Signed-off-by: Lee Jones <lee.jones@linaro.org>
----
- drivers/video/backlight/gpio_backlight.c | 23 ++++++++++++++++++-----
- 1 file changed, 18 insertions(+), 5 deletions(-)
-
---- a/drivers/video/backlight/gpio_backlight.c
-+++ b/drivers/video/backlight/gpio_backlight.c
-@@ -26,9 +26,8 @@ struct gpio_backlight {
- int def_value;
- };
-
--static int gpio_backlight_update_status(struct backlight_device *bl)
-+static int gpio_backlight_get_next_brightness(struct backlight_device *bl)
- {
-- struct gpio_backlight *gbl = bl_get_data(bl);
- int brightness = bl->props.brightness;
-
- if (bl->props.power != FB_BLANK_UNBLANK ||
-@@ -36,6 +35,14 @@ static int gpio_backlight_update_status(
- bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
- brightness = 0;
-
-+ return brightness;
-+}
-+
-+static int gpio_backlight_update_status(struct backlight_device *bl)
-+{
-+ struct gpio_backlight *gbl = bl_get_data(bl);
-+ int brightness = gpio_backlight_get_next_brightness(bl);
-+
- gpiod_set_value_cansleep(gbl->gpiod, brightness);
-
- return 0;
-@@ -86,7 +93,8 @@ static int gpio_backlight_initial_power_
- return gbl->def_value ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
-
- /* if the enable GPIO is disabled, do not enable the backlight */
-- if (gpiod_get_value_cansleep(gbl->gpiod) == 0)
-+ if (gpiod_get_direction(gbl->gpiod) == 0 &&
-+ gpiod_get_value_cansleep(gbl->gpiod) == 0)
- return FB_BLANK_POWERDOWN;
-
- return FB_BLANK_UNBLANK;
-@@ -100,7 +108,7 @@ static int gpio_backlight_probe(struct p
- struct backlight_properties props;
- struct backlight_device *bl;
- struct gpio_backlight *gbl;
-- int ret;
-+ int ret, init_brightness;
-
- gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
- if (gbl == NULL)
-@@ -153,7 +161,12 @@ static int gpio_backlight_probe(struct p
- bl->props.power = gpio_backlight_initial_power_state(gbl);
- bl->props.brightness = 1;
-
-- backlight_update_status(bl);
-+ init_brightness = gpio_backlight_get_next_brightness(bl);
-+ ret = gpiod_direction_output(gbl->gpiod, init_brightness);
-+ if (ret) {
-+ dev_err(&pdev->dev, "failed to set initial brightness\n");
-+ return ret;
-+ }
-
- platform_set_drvdata(pdev, bl);
- return 0;