aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch b/target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch
new file mode 100644
index 0000000000..91bce3e07b
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0570-drm-panel-jdi-lt070me05000-Use-gpiod_set_value_cansl.patch
@@ -0,0 +1,67 @@
+From ec29b05b2da1d82d03730e0ac317efd3a7e97759 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Thu, 15 Apr 2021 17:30:35 +0100
+Subject: [PATCH] drm/panel: jdi-lt070me05000: Use
+ gpiod_set_value_cansleep
+
+There is no reason why the control GPIOs for the panel can not
+be connected to I2C or similar GPIO interfaces that may need to
+sleep, therefore switch from gpiod_set_value to
+gpiod_set_value_cansleep calls to configure them.
+Without that you get complaints from gpiolib every time the state
+is changed.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ drivers/gpu/drm/panel/panel-jdi-lt070me05000.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+--- a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
++++ b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
+@@ -205,11 +205,11 @@ static int jdi_panel_unprepare(struct dr
+ if (ret < 0)
+ dev_err(dev, "regulator disable failed, %d\n", ret);
+
+- gpiod_set_value(jdi->enable_gpio, 0);
++ gpiod_set_value_cansleep(jdi->enable_gpio, 0);
+
+- gpiod_set_value(jdi->reset_gpio, 1);
++ gpiod_set_value_cansleep(jdi->reset_gpio, 1);
+
+- gpiod_set_value(jdi->dcdc_en_gpio, 0);
++ gpiod_set_value_cansleep(jdi->dcdc_en_gpio, 0);
+
+ jdi->prepared = false;
+
+@@ -233,13 +233,13 @@ static int jdi_panel_prepare(struct drm_
+
+ msleep(20);
+
+- gpiod_set_value(jdi->dcdc_en_gpio, 1);
++ gpiod_set_value_cansleep(jdi->dcdc_en_gpio, 1);
+ usleep_range(10, 20);
+
+- gpiod_set_value(jdi->reset_gpio, 0);
++ gpiod_set_value_cansleep(jdi->reset_gpio, 0);
+ usleep_range(10, 20);
+
+- gpiod_set_value(jdi->enable_gpio, 1);
++ gpiod_set_value_cansleep(jdi->enable_gpio, 1);
+ usleep_range(10, 20);
+
+ ret = jdi_panel_init(jdi);
+@@ -263,11 +263,11 @@ poweroff:
+ if (ret < 0)
+ dev_err(dev, "regulator disable failed, %d\n", ret);
+
+- gpiod_set_value(jdi->enable_gpio, 0);
++ gpiod_set_value_cansleep(jdi->enable_gpio, 0);
+
+- gpiod_set_value(jdi->reset_gpio, 1);
++ gpiod_set_value_cansleep(jdi->reset_gpio, 1);
+
+- gpiod_set_value(jdi->dcdc_en_gpio, 0);
++ gpiod_set_value_cansleep(jdi->dcdc_en_gpio, 0);
+
+ return ret;
+ }