diff options
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.patch | 88 |
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; |